[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81622":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":16,"stars30d":13,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":15,"starSnapshotCount":15,"syncStatus":13,"lastSyncTime":34,"discoverSource":35},81622,"web-agent","nikola66\u002Fweb-agent","nikola66","Browser-native agent · profiles · tools  — by aratech | Zero installs, isolated, secured and self-evolving agent.","https:\u002F\u002Fwebagent.aratech.ae",null,"TypeScript",24,2,22,0,1,3,44.13,"MIT License",false,"main",true,[24,25,26,27,28,29,5,30],"agentic-ai","hermes-agent","openclaw","self-improving-agent","self-improving-ai","skills","web-tools","2026-06-12 04:01:34","![Web Agent](public\u002Fimages\u002Fpreview.webp)\n\n\u003Cdiv align=\"center\">\n\n# Web Agent\n\n**Browser-native AI agent with isolated workspaces, persistent memory, and zero setup friction.**\n\n[Live demo](https:\u002F\u002Fwebagent.aratech.ae) · [GitHub](https:\u002F\u002Fgithub.com\u002Fnikola66\u002Fweb-agent) · [Personal Helper Playbook](docs\u002Fuse-cases-playbook.md) · [Support on Ko-fi](http:\u002F\u002Fko-fi.com\u002Fnikola66) · [Contributing](CONTRIBUTING.md) · [Security](SECURITY.md)\n\n**Languages:** [English](README.md) · [简体中文](README.zh-CN.md) · [Español](README.es.md) · [العربية](README.ar.md)\n\n\u003C\u002Fdiv>\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg src=\"public\u002Fimages\u002Fscreenshot\u002FScreenshot1.webp\" alt=\"Web Agent screenshot 1\" \u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"public\u002Fimages\u002Fscreenshot\u002FScreenshot2.webp\" alt=\"Web Agent screenshot 2\" \u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"public\u002Fimages\u002Fscreenshot\u002FScreenshot3.webp\" alt=\"Web Agent screenshot 3\" \u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"public\u002Fimages\u002Fscreenshot\u002FScreenshot4.webp\" alt=\"Web Agent screenshot 4\" \u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg src=\"public\u002Fimages\u002Fscreenshot\u002FScreenshot5.webp\" alt=\"Web Agent screenshot 5\" \u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\nWeb Agent is an open-source AI agent that runs directly in the browser on top of WebContainers. There is nothing to install to use it: no Docker, no VPS, no VM, no Mac mini, no Hostinger box, no local Python stack. Open the app, launch a profile, and start working.\n\nIt is designed to feel simple for end users and capable for power users: isolated profiles, browser-local persistence, **50 built-in tools**, **19 bundled skills**, sessions, reflections, learnings, cron jobs, **planning mode** (`\u002Fplan`), a **PARA + Obsidian-style knowledge vault** (`wiki_*` tools and `\u002Fwiki_*` slash commands), and a self-improving runtime that stays on the user’s machine. For copy-paste scenarios mapped to skills and tools, start with the **[Personal Helper Playbook](docs\u002Fuse-cases-playbook.md)**.\n\n## Contents\n\n- [Why Web Agent](#why-web-agent)\n- [Highlights](#highlights)\n- [Capability Surface](#capability-surface)\n- [Slash Commands](#slash-commands)\n- [Settings And Providers](#settings-and-providers)\n- [Tooling](#tooling)\n- [Skills](#skills)\n- [Workspace Features](#workspace-features)\n- [How Persistence Works](#how-persistence-works)\n- [Get Started Presets](#get-started-presets)\n- [Personal Helper Playbook](#personal-helper-playbook)\n- [Quick Start](#quick-start)\n- [Development](#development)\n- [Architecture At A Glance](#architecture-at-a-glance)\n- [Privacy And Security](#privacy-and-security)\n- [Open Source](#open-source)\n- [Support And Sponsorship](#support-and-sponsorship)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Why Web Agent\n\n- **Click and run**. Launch from the browser with no install step for end users.\n- **Isolated by default**. Every profile gets its own workspace, memory, and runtime state.\n- **Self-learning**. Skills, reflections, learnings, facts, and session memory improve over time; **Hermes-style post-turn background review** can auto-create or patch skills after complex work; a **curator** consolidates agent-created skills on heartbeat while the tab is open — all browser-local.\n- **Local-first persistence**. Workspaces, memory, sessions, and skills live in browser storage and can be exported or re-imported later.\n- **Hosted without server-side user state**. The hosted demo serves the app, while user files and agent state stay in the browser.\n- **Open source**. Free to use, fork, modify, and distribute under the MIT License.\n\n## Highlights\n\n- Browser-native Node.js runtime powered by WebContainers\n- Isolated profiles with separate workspaces and memories\n- Built-in tools for files, shell, search, fetch, memory, sessions, cron, skills, and **knowledge vault** (`wiki_setup`, `wiki_sync`, `wiki_search`)\n- **`\u002Fplan` planning mode**: research the workspace, save a dated markdown plan under `plans\u002F`, present it with `artifact_present`, then execute on a **follow-up** message\n- **`\u002Fwiki_setup` · `\u002Fwiki_sync` · `\u002Fwiki_search`**: deterministic shortcuts that route to the wiki tools (default vault root: `.webagent\u002Fknowledge-vault\u002F`)\n- Persistent fact store, rolling session memory, reflections, and learnings\n- **Hermes-style self-improvement**: post-turn background review (skill + memory capture on complex turns), skill provenance (`.webagent\u002Fskills\u002F.usage.json`), and periodic curator consolidation while the app tab is open\n- Uploads into the live workspace with image handoff to vision tools\n- Encrypted API keys stored locally in the browser\n- Export and import flows for long-lived browser-local workspaces\n- Hosted demo for zero-friction trial usage\n- **Tool loop guardrails** (default on): Hermes-style deterministic detection of repeated tool failures and idempotent no-progress reads per turn; configure via `VITE_WEBAGENT_TOOL_LOOP_*` (see [docs\u002Fagent-notes.md](docs\u002Fagent-notes.md))\n- **Personal Helper Playbook**: [docs\u002Fuse-cases-playbook.md](docs\u002Fuse-cases-playbook.md) — 25 copy-paste scenarios with bundled skills and typical tools\n\n## Capability Surface\n\nWeb Agent is not just a chat box. It is a browser-native agent runtime with three layers working together:\n\n- `⌨️ Slash commands` for fast operator control\n- `🛠️ Tools` for concrete actions in the workspace and on the web\n- `📚 Skills` for reusable procedures and higher-level behavior\n\n### At a glance\n\n| Layer | Count | Notes |\n| --- | --- | --- |\n| Built-in tools | **49** | Eight groups below; skill CRUD consolidated into **`skill` (action=manage)** (plus list, view, bulk import) |\n| Bundled skills | **19** | Hub skills route related workflows; workflow skills cover research, planning, delivery, and ops |\n| Playbook scenarios | **25** | Full prompts in **[docs\u002Fuse-cases-playbook.md](docs\u002Fuse-cases-playbook.md)** |\n\n```mermaid\nflowchart TB\n  subgraph input [\"👤 You\"]\n    U[\"👤 Operator\"]\n  end\n  subgraph steer [\"🎯 How you steer\"]\n    C[\"⌨️ Slash commands\"]\n    P[\"💬 Natural language\"]\n  end\n  subgraph runtime [\"⚙️ Agent runtime\"]\n    S[\"📚 Skills\"]\n    T[\"🛠️ Tools\"]\n  end\n  subgraph sinks [\"📦 Where work lands\"]\n    W[\"📁 Workspace files\"]\n    M[\"🧠 Memory layers\"]\n    A[\"⏱️ Cron & automation\"]\n    R[\"🌐 Web & vision\"]\n  end\n  U --> C\n  U --> P\n  C --> S\n  P --> S\n  S --> T\n  T --> W\n  T --> M\n  T --> A\n  T --> R\n```\n\n### Planning, wiki vault, and self-learning\n\nThese three loops sit beside the main capability diagram: **planning** produces reviewable specs before implementation; the **wiki** mirrors runtime memory into browseable markdown (Obsidian-friendly); **self-learning** ties facts, session notes, skills, reflections, and **autonomous post-turn review** together over time.\n\n#### Planning (`\u002Fplan`)\n\n```mermaid\nflowchart TB\n  subgraph plan [\"📋 Planning mode · \u002Fplan\"]\n    direction TB\n    P[\"📋 \u002Fplan + goal\"] --> R[\"🔍 Read-only workspace research\"]\n    R --> W[\"✍️ write_file → plans\u002F*.md\"]\n    W --> A[\"📄 artifact_present · view \u002F download\"]\n    A --> N[\"⏸️ Stop — next turn: execute or revise\"]\n  end\n```\n\n#### Knowledge vault (`wiki_*` \u002F `\u002Fwiki_*`)\n\n```mermaid\nflowchart TB\n  subgraph scaffold [\"🏗️ Scaffold once\"]\n    U[\"🧭 wiki_setup\"] --> V[\"📂 PARA + KnowledgeVault\"]\n  end\n  subgraph project [\"🔄 Project runtime → vault\"]\n    M[\"🧠 memory_* · session_* · learnings\"] --> S[\"🔁 wiki_sync\"]\n    V --> S\n    S --> I[\"📑 index · log · ops\"]\n  end\n  subgraph browse [\"🔎 Browse & search\"]\n    Q[\"🔍 wiki_search\"] --> V\n  end\n```\n\n#### Self-learning loop\n\n```mermaid\nflowchart TB\n  subgraph run [\"🤖 Every turn\"]\n    X[\"🤖 Tools & conversation\"]\n    BR[\"💾 Post-turn background review\"]\n  end\n  subgraph store [\"🧠 What gets remembered\"]\n    F[\"💾 memory_* · durable facts\"]\n    SM[\"📝 session_memory_* · rolling notes\"]\n    SK[\"📚 skill_* · reusable SKILL.md\"]\n    RF[\"💡 reflections · promotable learnings\"]\n    U[\"📊 .usage.json · skill provenance\"]\n  end\n  subgraph maintain [\"🧹 Periodic maintenance\"]\n    C[\"🧹 Curator · consolidate & archive\"]\n  end\n  subgraph mirror [\"📓 Optional human mirror\"]\n    W2[\"📓 wiki_sync projection\"]\n  end\n  X --> F\n  X --> SM\n  X --> SK\n  X --> RF\n  X -->|complex turn| BR\n  BR --> SK\n  BR --> F\n  SK --> U\n  U --> C\n  C --> SK\n  RF -.->|💡 hints| F\n  RF -.->|💡 hints| SK\n  F --> W2\n  SM --> W2\n```\n\n**Every turn:** tool results feed facts, session notes, reflections, and learnings. Reflections and learnings surface as **hints** in later prompts (not automatic promotion).\n\n**After enough tool iterations** (default **10** without a foreground skill write, `WEBAGENT_SKILL_REVIEW_INTERVAL`), a **post-turn background review** may run — non-blocking, after the user-visible reply — with restricted `skill_*` and `memory_*` tools. Memory review defaults to every **10 user turns** (`WEBAGENT_MEMORY_REVIEW_INTERVAL`). Terminal summary example: `Self-improvement review: Skill 'deploy-checklist' updated · Memory updated`.\n\n**Skill provenance:** skills created in background review are tagged `created_by: agent` in `.webagent\u002Fskills\u002F.usage.json` (usage counters, lifecycle state). **Curator** runs on heartbeat (~weekly while the tab is open): stale\u002Farchive idle agent-created skills, consolidate overlaps; pinned skills opt out; archives go to `.webagent\u002Fskills\u002F.archive\u002F` (no hard delete). Tune with `WEBAGENT_CURATOR_INTERVAL_MS`, `WEBAGENT_CURATOR_STALE_AFTER_DAYS`, `WEBAGENT_CURATOR_ARCHIVE_AFTER_DAYS`.\n\n**Inspect in UI:** Files → Memory → **Self-improve** shows the live session feed (background review + curator summaries), curator state\u002Freports, and agent-created skill provenance.\n\n**Semantic memory:** `memory_search` blends substring matching with a persisted local embedding index (`memory\u002Ffact-embeddings.json`). Turn context also pulls semantically relevant facts for the active user goal alongside recent facts and high-signal learnings.\n\nFor choosing **facts vs session vs skills vs vault**, use the bundled **`\u002Fmemory-layers`** skill.\n\n### Quick Capability Map\n\n| Area | What lives there | What it enables |\n| --- | --- | --- |\n| `⌨️ Commands` | Session controls like `\u002Fhelp`, `\u002Fcompact`, `\u002Fplan`, `\u002Fcheckpoint`, `\u002Fwiki_*` | Faster navigation, recovery, planning, vault ops, and operator control |\n| `🛠️ Workspace tools` | Read, write, edit, diff, move, search, shell | Real work inside an isolated project workspace |\n| `🧠 Memory tools` | Facts, session notes, conversation recall | Persistent context that improves continuity |\n| `📓 Wiki tools` | `wiki_setup`, `wiki_sync`, `wiki_search` | PARA-shaped markdown vault and search when memory tools are not enough |\n| `📋 Planning` | `\u002Fplan` + `write_file` into `plans\u002F` + `artifact_present` | Spec-first workflows: plan now, implement on the next turn |\n| `⏱️ Automation tools` | Heartbeat cron jobs and todos | Recurring tasks while the app is open |\n| `🌐 Remote tools` | Search, fetch, email, Composio, vision, YouTube transcript | Web-aware, app-integrated, and multimodal task execution |\n| `📚 Skills` | Reusable `SKILL.md` procedures | Higher-level workflows; background review and curator maintain agent-created skills |\n\n## Slash Commands\n\nThese commands make the terminal experience feel like an operator console rather than a plain chatbot. They cover help, interruption, context compaction, **planning mode**, **wiki vault** shortcuts, checkpoint-based recovery, and direct skill invocation.\n\n| Command | What it does |\n| --- | --- |\n| `\u002Fhelp` | Show built-in commands and available tools. |\n| `\u002Fclear` | Clear conversation history for a fresh thread; keeps agent and user identity. |\n| `\u002Fcompact` | Summarize older context and keep the current thread going. |\n| `\u002Fplan [goal]` | **Planning mode:** research the workspace with read-only tools, write the full plan markdown under `plans\u002F`, present it via `artifact_present`, then **stop** — reply on the **next** turn with “execute the plan” (or edits) to implement. |\n| `\u002Ffind_skills [query]` | **Find-skills mode:** search online skill registries (skills.sh, SkillsMP, Cursor Marketplace, etc.) and return the top 5 skills by installs, stars, or votes. |\n| `\u002Fclarify [topic]` | **Clarify mode:** emit one structured clarification block when intent is ambiguous — no tools; UI shows choice buttons. |\n| `\u002Fcheckpoint [name]` | Save a named snapshot of current history for rollback. |\n| `\u002Frollback [name]` | List checkpoints or restore a named checkpoint. |\n| `\u002Fskills [search]` | List installed skills, or search skills by query. |\n| `\u002Fwiki_setup [path]` | Initialize the PARA + wiki scaffold (`Projects\u002F`, `Areas\u002F`, `Resources\u002FKnowledgeVault\u002F…`, `Archives\u002F`). Optional workspace-relative root; default **`.webagent\u002Fknowledge-vault`**. Workspaces that still use the old default vault folder **`knowledge-vault\u002F`** are relocated automatically on the next wiki operation that omits `root_path`. |\n| `\u002Fwiki_sync [scope] [path]` | Push runtime projections into the vault: **`facts`**, **`session`**, or **`all`** (includes learnings). Optional path after `scope`. Requires `wiki_setup` first. |\n| `\u002Fwiki_search \u003Cquery>` | Search markdown under the wiki vault (ranked hits + snippets). |\n| `\u002F\u003Cskill> [task]` | Invoke an installed skill for a task. |\n| `\u002Fstop` | Interrupt the current run. |\n| `\u002Fexit` | Exit the active terminal agent session. |\n\n> `📌 Tip:` Use `\u002Ffind_skills pdf` (or any topic) to discover popular skills online, then install with `\u002Fskills install \u003Curl>`.\n\n> `📌 Tip:` Use `\u002Fskills` to discover capabilities, then jump straight into a workflow with `\u002F\u003Cskill-slug> [task]`.\n\n> `📌 Tip:` Natural-language asks like “set up my knowledge vault” or “sync facts to the wiki” map to the same **`wiki_*`** tools as the `\u002Fwiki_*` slash commands.\n\n## Settings And Providers\n\nWeb Agent exposes provider configuration in two places: the profile editor for the active chat\u002Fmodel provider, and the Settings sidebar for browser-routed web tools and email delivery.\n\n### Model Providers\n\nEach profile can choose its own provider, optional model override, API key, and personality. Current built-in profile providers are:\n\n| Provider | Type | Notes |\n| --- | --- | --- |\n| `OpenRouter` | Hosted model router | Default provider with broad model access through one key. |\n| `Ollama (cloud)` | Hosted OpenAI-compatible provider | Uses Ollama's cloud API rather than a local daemon. |\n| `Custom (OpenAI-compatible)` | Bring-your-own endpoint | Supports a custom base URL and API key for compatible `\u002Fv1` providers. |\n\n### Browser Tool Providers\n\nThese power built-in web actions from the Settings panel:\n\n| Provider | Powers | Notes |\n| --- | --- | --- |\n| `TinyFish` | `web_search`, `web_fetch` | Default browser-tool provider configured in Settings. |\n| `Resend` | `email` | Used for outbound email with a verified sender address. |\n| `Composio` | `composio_status`, `composio_connect`, `composio_action` | Curated marketing app bridge for Gmail, Sheets, HubSpot, Notion, Slack, LinkedIn, X\u002FTwitter, and YouTube. |\n\n### What You Can Configure\n\n- `🧠 Per-profile model provider`: choose the model backend for each agent profile.\n- `🔧 Model override`: set a specific model instead of the provider default.\n- `🔐 Per-profile API key`: store credentials separately from other profiles.\n- `🌐 Custom base URL`: point the custom provider at any OpenAI-compatible endpoint.\n- `✉️ Email delivery`: add Resend credentials for digest or outbound mail flows.\n- `🔌 Composio`: add a Composio key for approval-gated marketing app actions.\n\n## Tooling\n\nWeb Agent ships with **50 native built-in tools** in eight groups. The surface was consolidated to one `skill` tool (`action`: list | view | manage | bulk) and one browse entry point `browse_workspace` (`action`: list | tree | find). Hidden aliases (`list_dir`, `find_files`, `tree`) remain for wire compatibility via `tool_activate`.\n\n### Tool Groups\n\n| Group | Includes | Best for |\n| --- | --- | --- |\n| `📁 Files & Workspace` | `read_file`, `write_file`, `edit_file`, `multi_edit`, `move_file`, `delete_file`, `browse_workspace`, `grep`, `file_diff`, `make_dir` | Building, editing, inspecting, and organizing project files |\n| `🧠 Memory & Recall` | `memory_save`, `memory_forget`, `memory_recall`, `memory_search`, `session_memory_append`, `session_memory_list`, `session_search` | Long-lived facts, stale fact cleanup, rolling notes, and recovering prior context |\n| `📓 Knowledge wiki` | `wiki_setup`, `wiki_sync`, `wiki_search` | PARA + Obsidian-friendly vault under the workspace; project facts\u002Fsession\u002Flearnings into markdown; full-text vault search |\n| `📚 Skills` | `skill` (list \u002F view \u002F manage \u002F bulk via `action`) | Discovering, reading, creating, importing, and maintaining skills |\n| `⏱️ Automation` | `cron_register`, `cron_list`, `todo_write` | Recurring jobs, heartbeat-driven workflows, and checklists |\n| `🔌 App Integrations` | `composio_status`, `composio_connect`, `composio_action` | Connecting marketing apps and running allowlisted external actions through Composio |\n| `🌐 Remote & Multimodal` | `web_search`, `web_fetch`, `web_post`, `vision_analyze`, `youtube_transcribe`, `email` | Research, fetching live content, authenticated POST\u002FGraphQL, image analysis, transcripts, and outbound delivery |\n| `🖥️ System & Output` | `run_shell`, `run_python`, `system_info`, `artifact_present`, `apply_patch` | Browser-safe Node scripts, Pyodide-backed Python, environment state, artifacts, and surgical patching |\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>🛠️ Full tool catalog\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n| Tool | What it does |\n| --- | --- |\n| `🩹 apply_patch` | Apply unified patch operations for surgical file changes. |\n| `🪄 artifact_present` | Present markdown to the browser host with view or download affordances. |\n| `📁 browse_workspace` | List, tree, or find workspace paths (`action`: list | tree | find). |\n| `🧩 composio_action` | Execute one curated, approval-gated Composio marketing action. |\n| `🔐 composio_connect` | Create a hosted Composio auth link for an app. |\n| `🔌 composio_status` | Check Composio setup, connected accounts, and the curated action allowlist. |\n| `📋 cron_list` | List heartbeat cron jobs from `.webagent\u002Fcronjobs.json`. |\n| `⏱️ cron_register` | Register recurring heartbeat jobs that run while the app tab is open. |\n| `🗑️ delete_file` | Delete a file from the workspace. |\n| `🛠️ edit_file` | Replace a matching snippet or fully replace file contents. |\n| `✉️ email` | Send outbound email through Resend-configured delivery. |\n| `🧾 file_diff` | Show a line-oriented diff between two UTF-8 workspace files. |\n| `🔍 grep` | Search file contents by text or regex. |\n| `📂 make_dir` | Create directories recursively inside the workspace. |\n| `🧹 memory_forget` | Delete a stale or wrong saved memory fact by exact key. |\n| `💭 memory_recall` | Recall a saved memory fact by exact key. |\n| `💾 memory_save` | Save a durable memory fact under a stable key, with optional scope. |\n| `🔮 memory_search` | Search saved memory facts by substring. |\n| `📦 move_file` | Move or rename a workspace path. |\n| `🛠️ multi_edit` | Apply multiple find-and-replace edits in one file. |\n| `📄 read_file` | Read a UTF-8 file from the workspace. |\n| `🐍 run_python` | Run stdlib\u002FPyodide-compatible Python in browser-only Nodebox with optional args, env, packages, and workspace file sync. |\n| `🖥️ run_shell` | Run browser-safe `node ...`, `python3 ...`, and simple read-only probes in the workspace runtime. |\n| `📝 session_memory_append` | Append a lightweight note to rolling session memory. |\n| `🗂️ session_memory_list` | Read the newest entries from rolling session memory. |\n| `📇 session_search` | Search archived workspace conversations by keywords. |\n| `🧩 skill` | List, view, manage, or bulk-import skills (`action`: list | view | manage | bulk). |\n| `📟 system_info` | Return a safe system snapshot including time, timezone, uptime, and memory. |\n| `✅ todo_write` | Create or update checklist-style todos. |\n| `🖼️ vision_analyze` | Analyze an image with the configured vision model. |\n| `🌐 web_fetch` | GET http(s) URL(s), optional auth headers for REST reads. |\n| `📮 web_post` | POST http(s) with headers and body (GraphQL, REST writes). |\n| `🌍 web_search` | Search the web and return ranked results. |\n| `🔖 wiki_search` | Search markdown files under the wiki vault root; ranked snippets when `memory_search` is not enough. |\n| `📓 wiki_setup` | Create the PARA + `Resources\u002FKnowledgeVault\u002F` scaffold (idempotent). |\n| `🔁 wiki_sync` | Update vault `index.md` \u002F `log.md` and write `ops\u002Fwiki-sync-*.md` from facts, session tail, and\u002For learnings. |\n| `🎙️ audio_analyze` | Transcribe workspace audio via the browser STT worker (Telegram voice notes, uploaded audio). |\n| `✍️ write_file` | Write text to a file and create parent folders as needed. |\n| `📹 youtube_transcribe` | Fetch a full YouTube transcript with timestamps. |\n\n\u003C\u002Fdetails>\n\n## Skills\n\nSkills are reusable procedures stored as `SKILL.md` files. They let Web Agent switch from raw tool usage to structured workflows that can be invoked on demand.\n\n### Bundled Skills (19)\n\n**Hub skills** — route related workflows and cross-skill tables:\n\n| Slash command | Hub for |\n| --- | --- |\n| `\u002Fmemory-layers` | Facts, session notes, wiki mirror, `session_search` |\n| `\u002Fbrowser-runtime-map` | WebContainer limits, shell failures, file layout |\n| `\u002Fhttp-api` | REST GET (`web_fetch`) and POST\u002FGraphQL (`web_post`) — auth, query shapes, CMS patterns |\n| `\u002Fimported-skill-compat` | Imported skills from other hosts → Web Agent tools, including `run_python` |\n| `\u002Fartifact-delivery` | Reports, email, charts, presentation patterns |\n| `\u002Fweb-agent-skill` | Evolving Web Agent itself (runtime, skills, cron, repo truth) |\n\n**Workflow skills** — focused procedures (invoke with `\u002F\u003Cslug> [task]` or pick from `\u002Fskills`):\n\n| Slash command | What it is for |\n| --- | --- |\n| `\u002Fopen-web-research` | Fan-out web discovery with verified fetches |\n| `\u002Fresearch-pack` | Scholarly \u002F citation-heavy research |\n| `\u002Fstructured-extraction` | Tables or JSON from live pages |\n| `\u002Ffind_skills` | Search online skill registries (top 5 matches) |\n| `\u002Ftask-execution` | In-session plan (`todo_write`) then execute |\n| `\u002Fknowledge-vault` | Wiki-backed project knowledge and searchable markdown context |\n| `\u002Fheartbeat-cron` | Recurring jobs while the tab is open |\n| `\u002Fproject-scaffold` | Isolated folder before generating files |\n| `\u002Fworkspace-safety` | Checkpoints, bulk ops, safe reorganize |\n| `\u002Fsystematic-debugging` | Hypothesis-and-experiment debug loop |\n| `\u002Fmultimodal-ingest` | Vision, YouTube transcripts, audio paths |\n| `\u002Fchart` | Mermaid flowcharts via `artifact_present` |\n| `\u002Fclarify` | One structured clarification block (no tools) |\n\n> `📌 Tip:` **`\u002Fplan`** is a slash **mode** (spec under `plans\u002F`, execute on the next turn), not a bundled skill. Pair it with **`\u002Ftask-execution`** when you want todos inside the same session.\n\nSee **[docs\u002Fuse-cases-playbook.md](docs\u002Fuse-cases-playbook.md)** for all 25 scenarios mapped to these skills.\n\n### Why Skills Matter\n\n- `🧩 Reusable`: a good workflow only needs to be written once.\n- `🛡️ Safer`: skills encode preferred patterns before the agent starts changing files.\n- `⚡ Faster`: `\u002Fskill-slug [task]` is quicker than re-explaining a workflow every session.\n- `🧠 Teachable`: users can grow the agent by saving new procedures directly into the workspace.\n- `🔄 Self-improving`: after complex turns, background review can patch or create skills automatically; curator keeps the library consolidated over time.\n\n### Wiki vs memory (short)\n\n- **`memory_*` \u002F `session_*`** hold the canonical structured context the runtime uses.\n- **`wiki_sync`** projects summaries and sync markers into markdown for humans (or Obsidian); treat the vault as a **browseable mirror**, not a second source of truth, unless you intentionally archive prose there.\n\n## Workspace Features\n\nEvery profile gets its own isolated workspace rooted in browser storage. The workspace layer is designed to feel like a lightweight project environment, not just an attachment bucket.\n\n| Feature | What it means |\n| --- | --- |\n| `📁 Isolated per profile` | Each agent profile gets its own workspace and runtime state. |\n| `💾 Persistent snapshots` | Files survive reloads using browser-side persistence. |\n| `📤 Export \u002F Import` | The Workspaces tab can export a profile snapshot to JSON and import it later. |\n| `🖼️ Upload handoff` | Uploaded files land in the live workspace, including image paths for vision tools. |\n| `🧰 File operations` | Read, write, edit, diff, move, delete, list, grep, and tree tools all operate inside the workspace. |\n| `🖥️ Live shell access` | The runtime can execute supported workspace commands in the browser-native Node environment. |\n| `📋 Saved plans` | `\u002Fplan` writes timestamped markdown under **`plans\u002F`** (workspace-relative; legacy `.webagent\u002Fplans\u002F` still readable). |\n| `📓 Knowledge vault` | Default **`.webagent\u002Fknowledge-vault\u002F`** PARA tree with **`Resources\u002FKnowledgeVault\u002F`** for wikilinks, logs, and ops detail files after `wiki_sync`. Older **`knowledge-vault\u002F`** trees migrate automatically when you use default wiki paths. |\n| `🧹 Clean reset` | Destroy a single profile workspace or nuke all local agent state from the sidebar. |\n| `📊 Storage visibility` | The Workspaces tab shows browser storage usage and quota. |\n\n### Workspace UX\n\n- `Workspaces tab`: export, import, destroy, and inspect browser storage usage for the active profile.\n- `Files popup`: browse the live `\u002Fworkspace`, preview files, and interact with the working tree.\n- `uploads\u002F`: user-uploaded assets are normalized under `uploads\u002F` for safe tool access.\n\n## How Persistence Works\n\nWeb Agent keeps user state in browser storage on the user’s machine. That includes workspaces, sessions, memory, facts, learnings, skills (including `.webagent\u002Fskills\u002F.usage.json` provenance and `.archive\u002F` for curator moves), todos, cron metadata, curator state under `.webagent\u002Fskills\u002F.curator_state`, saved **`\u002Fplan`** markdown under **`plans\u002F`** (legacy `.webagent\u002Fplans\u002F` paths remain readable), wiki vault files under **`.webagent\u002Fknowledge-vault\u002F`** by default (legacy **`knowledge-vault\u002F`** at the workspace root is automatically moved there when wiki tools run without an explicit `root_path`), and local credentials. Nothing in that persistent agent state is meant to live on the server.\n\nAs long as the browser keeps its local storage and OPFS data, the agent keeps its history and workspace. When you want portability, export the workspace or browser-local state and import it later on the same machine or another one.\n\nFor hosted deployments, the safest framing is:\n\n- **The app can be hosted anywhere**\n- **The agent state lives in the browser**\n- **The server should only deliver the app and relay allowed upstream requests when needed**\n\n**Self-hosting (Railpack \u002F Dokploy):** Use the repo `railpack.json` for `deploy.startCommand` (`scripts\u002Fstart-with-proxy.sh`) and `deploy.aptPackages` (extends defaults with `caddy`). Do not add a `start` script in `package.json` for this: Railpack treats it as a custom start command, skips the built-in static+Caddy image path, and the sidecar setup breaks. The checked-in `Caddyfile` matches **Debian’s apt Caddy (~2.6)** (no `persist_config` or global `trusted_proxies` block). `web_fetch` \u002F `web_search` without TinyFish rely on the small Node listener in `scripts\u002Fcors-proxy-server.mjs` (default `127.0.0.1:8799`).\n\n## Get Started Presets\n\nCopy-paste starting points. Adjust paths and keys for your machine.\n\n### Hosted trial\n\n1. Open [webagent.aratech.ae](https:\u002F\u002Fwebagent.aratech.ae).\n2. Create or select a profile → add an API key from [OpenRouter](https:\u002F\u002Fopenrouter.ai) or [Ollama](https:\u002F\u002Follama.com).\n3. Click **Launch** → send a short task (e.g. “list files in the workspace”).\n\nRecommended model on OpenRouter: **Gemma 4** (good speed, price, and tool calling). Any compatible model works.\n\n### Local development\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fnikola66\u002Fweb-agent.git\ncd web-agent\nnpm install\ncp .env.example .env.local   # optional: tool guardrails, debug log, launch mode\nnpm run dev\n```\n\nOpen `http:\u002F\u002Flocalhost:5173`. Tool guardrail env vars are documented in [.env.example](.env.example).\n\n### Operator workflows\n\n**Planning** — spec first, implement on the next turn:\n\n```\n\u002Fplan Add a \u002Fhealth route and document it in README\n```\n\nReview the plan under `plans\u002F`, then on the **next** message:\n\n```\nExecute the plan you just wrote.\n```\n\n**Knowledge vault** — PARA markdown mirror of memory:\n\n```\n\u002Fwiki_setup\n\u002Fwiki_sync all\n\u002Fwiki_search deployment\n```\n\nDefault vault root: `.webagent\u002Fknowledge-vault\u002F`. Legacy `knowledge-vault\u002F` at workspace root migrates automatically.\n\n## Personal Helper Playbook\n\nTwenty-five personal-helper scenarios with copy-paste prompts, bundled skills, and the tools that typically fire. Full cards with example prompts live in **[docs\u002Fuse-cases-playbook.md](docs\u002Fuse-cases-playbook.md)**. Prompts are in English — paste as-is into chat.\n\n**Filter by category:** [Research](docs\u002Fuse-cases-playbook.md#playbook-research) · [Memory](docs\u002Fuse-cases-playbook.md#playbook-memory) · [Planning](docs\u002Fuse-cases-playbook.md#playbook-planning) · [Automation](docs\u002Fuse-cases-playbook.md#playbook-automation) · [Workspace](docs\u002Fuse-cases-playbook.md#playbook-workspace) · [Debug](docs\u002Fuse-cases-playbook.md#playbook-debug) · [Multimodal](docs\u002Fuse-cases-playbook.md#playbook-multimodal) · [Delivery](docs\u002Fuse-cases-playbook.md#playbook-delivery) · [UX](docs\u002Fuse-cases-playbook.md#playbook-ux) · [Safety](docs\u002Fuse-cases-playbook.md#playbook-safety) · [Meta](docs\u002Fuse-cases-playbook.md#playbook-meta)\n\n| Category | Use case | Bundled skill(s) | Key tools |\n| --- | --- | --- | --- |\n| Research | Find niche creators \u002F competitors | `\u002Fopen-web-research` | `web_search`, `web_fetch`, `write_file`, `artifact_present` |\n| Research | Academic paper \u002F citation dig | `\u002Fresearch-pack` | `web_search`, `web_fetch`, `write_file`, `artifact_present` |\n| Research | Extract a table or JSON from a page | `\u002Fstructured-extraction` | `web_fetch`, `write_file`, `artifact_present` |\n| Meta | Discover installable skills online | `\u002Ffind_skills` | `web_search`, `web_fetch`, `skill` (action=manage) |\n| Memory | Save a durable preference | `\u002Fmemory-layers` | `memory_save`, `memory_recall` |\n| Memory | Capture rolling session context | `\u002Fmemory-layers` | `session_memory_append`, `session_memory_list` |\n| Memory | Mirror memory into Obsidian-style vault | `\u002Fmemory-layers` | `wiki_setup`, `wiki_sync`, `wiki_search` |\n| Memory | Find something from an old chat | `\u002Fmemory-layers` | `session_search` |\n| Planning | Spec-first feature plan (no execution yet) | `\u002Fplan` | `read_file`, `grep`, `write_file`, `artifact_present` |\n| Planning | Plan and execute multi-step work | `\u002Ftask-execution` | `todo_write`, `write_file`, `artifact_present` |\n| Automation | Daily digest while tab is open | `\u002Fheartbeat-cron` | `cron_register`, `cron_list`, `web_search`, `web_fetch` |\n| Workspace | Bootstrap a new side project folder | `\u002Fproject-scaffold` | `make_dir`, `write_file`, `browse_workspace` |\n| Workspace | Reorganize files safely | `\u002Fworkspace-safety`, `\u002Fbrowser-runtime-map` | `browse_workspace`, `move_file` |\n| Debug | Hypothesis-first bug hunt | `\u002Fsystematic-debugging` | `read_file`, `grep`, `file_diff`, `run_shell` |\n| Debug | Shell \u002F `npx` failed in WebContainer | `\u002Fbrowser-runtime-map` | `read_file`, `web_fetch`, `grep` |\n| Multimodal | Read a screenshot or diagram | `\u002Fmultimodal-ingest` | `vision_analyze`, `write_file` |\n| Multimodal | Summarize a YouTube tutorial | `\u002Fmultimodal-ingest` | `youtube_transcribe`, `write_file`, `artifact_present` |\n| Delivery | Present a finished report in-app | `\u002Fartifact-delivery` | `write_file`, `artifact_present` |\n| Delivery | Email a deliverable | `\u002Fartifact-delivery` | `write_file`, `email`, `artifact_present` |\n| Delivery | Flowchart for a plan or report | `\u002Fchart` | `artifact_present` |\n| UX | Disambiguate a vague ask | `\u002Fclarify` | *(none)* |\n| Safety | Checkpoint before bulk delete | `\u002Fworkspace-safety` | `browse_workspace`, `delete_file` |\n| Safety | Pasted API key by mistake | `\u002Fartifact-delivery` | Redact in replies; save to memory only when user asks |\n| Meta | Improve Web Agent itself | `\u002Fweb-agent-skill` | `read_file`, `grep`, `skill` (action=manage), `memory_save` |\n\n## Quick Start\n\n### Use the hosted demo\n\nOpen [webagent.aratech.ae](https:\u002F\u002Fwebagent.aratech.ae), create or select a profile, add a free key from [OpenRouter.ai](https:\u002F\u002Fopenrouter.ai) or [Ollama](https:\u002F\u002Follama.com), click **Launch**, and start chatting.\n\nFor Web Agent, `Gemma4` is the recommended chat model because it strikes a strong balance between speed, price, and tool-calling support, including images and vision. Voice input is transcribed locally in the browser via whisper-tiny.en (English). You can choose any chat model you prefer.\n\n### Run locally\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fnikola66\u002Fweb-agent.git\ncd web-agent\nnpm install\nnpm run dev\n```\n\nOpen `http:\u002F\u002Flocalhost:5173`.\n\n## Development\n\n```bash\nnpm run dev\nnpm run build\nnpm run test\nnpm run test:browser\n```\n\nContributor-facing docs:\n\n- [docs\u002FREADME.md](docs\u002FREADME.md) — docs hub (English + translations)\n- [docs\u002Fuse-cases-playbook.md](docs\u002Fuse-cases-playbook.md) — 25 personal-helper scenarios (prompts, skills, tools)\n- [CONTRIBUTING.md](CONTRIBUTING.md)\n- [AGENTS.md](AGENTS.md) — rules for AI coding agents\n- [CAPABILITIES.md](CAPABILITIES.md)\n- [docs\u002FARCHITECTURE.md](docs\u002FARCHITECTURE.md) — system map, IPC protocol, storage layers\n- [docs\u002Fagent-notes.md](docs\u002Fagent-notes.md) — tool guardrails, WebContainer, persistence\n- [docs\u002Ftesting-checklist.md](docs\u002Ftesting-checklist.md)\n- [docs\u002FGLOSSARY.md](docs\u002FGLOSSARY.md) · [docs\u002FTRANSLATING.md](docs\u002FTRANSLATING.md)\n\n## Architecture At A Glance\n\n- **Frontend**: React + Vite + xterm.js\n- **Runtime**: Node.js inside WebContainers\n- **Persistence**: IndexedDB + OPFS in the browser\n- **Isolation**: profile-scoped workspaces and runtime state\n- **Model access**: OpenRouter or OpenAI-compatible providers\n- **Plans & vault**: timestamped plans under `plans\u002F` (legacy `.webagent\u002Fplans\u002F` readable); optional PARA wiki tree (default `.webagent\u002Fknowledge-vault\u002F`) synchronized via `wiki_*` tools\n- **Tool loop guardrails**: per-turn deterministic detection of repeated tool failures and idempotent no-progress reads; thresholds in `.env.example`\n- **Self-improvement loop**: post-turn background review + skill provenance + heartbeat curator (Hermes-inspired; see [Self-learning loop](#self-learning-loop))\n\nThe agent runtime is embedded into the browser app, mounted into a live workspace, and launched inside a terminal-backed Node environment. Profiles keep personalities, settings, workspace state, and memory separated.\n\n## Privacy And Security\n\n- Workspace files, sessions, memory, skills, and local credentials stay browser-side.\n- API keys are stored locally and encrypted before persistence.\n- Profiles are isolated from each other.\n- Hosted mode should remain transit-only for upstream requests, not a persistence backend for user state.\n\nSee [SECURITY.md](SECURITY.md) for reporting and security posture details.\n\n## Open Source\n\nWeb Agent is an open-source project. You are free to use it, fork it, modify it, and distribute it under the [MIT License](LICENSE).\n\nInspired by OpenClaw, [Hermes Agent](https:\u002F\u002Fgithub.com\u002FNousResearch\u002Fhermes-agent), and OpenCrabs.\n\nSpecial thanks to the Nodebox used technology and the open source project behind it. It is beautiful software and made Web Agent possible.\n\n## Support And Sponsorship\n\nIf Web Agent saves you time or helps your work, support ongoing development on [Ko-fi](http:\u002F\u002Fko-fi.com\u002Fnikola66). Sponsorship helps fund continued maintenance, new capabilities, UI polish, and long-term improvements.\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\u003Ca href=\"http:\u002F\u002Fko-fi.com\u002Fnikola66\">Support on Ko-fi\u003C\u002Fa>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnikola66\u002Fweb-agent\">Star on GitHub\u003C\u002Fa>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### Sponsor This Project\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\u003Cimg src=\"public\u002Flogos\u002Fsponsor-placeholder.svg\" width=\"180\" alt=\"Sponsor placeholder\" \u002F>\u003Cbr \u002F>Sponsor project\u003Cbr \u002F>Place logo here\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Cimg src=\"public\u002Flogos\u002Fsponsor-placeholder.svg\" width=\"180\" alt=\"Sponsor placeholder\" \u002F>\u003Cbr \u002F>Sponsor project\u003Cbr \u002F>Place logo here\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Cimg src=\"public\u002Flogos\u002Fsponsor-placeholder.svg\" width=\"180\" alt=\"Sponsor placeholder\" \u002F>\u003Cbr \u002F>Sponsor project\u003Cbr \u002F>Place logo here\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Contributing\n\nIssues and pull requests are welcome. Start with [CONTRIBUTING.md](CONTRIBUTING.md), keep changes surgical, and prefer fixes that preserve the project’s browser-native and local-first design.\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","Web Agent 是一个基于浏览器的AI代理，无需任何安装步骤即可直接在浏览器中运行。其核心功能包括50个内置工具、19种捆绑技能、会话管理、反思学习、计划模式以及PARA+Obsidian风格的知识库。项目采用TypeScript编写，并利用WebContainers技术实现了完全隔离的工作空间和持久化内存。适用于需要快速启动AI助手而不想处理复杂设置的个人用户或开发者，同时也适合追求高效工作流程和持续自我改进能力的专业人士。","2026-06-11 04:05:43","CREATED_QUERY"]