尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Zetta is a web app for managing autonomous bots. Give your personal chief an outcome, let it coordinate specialists, and return to results or work that needs your attention.
The product is for people who want useful work done, not another technical system to administer. Configuration must be understandable without knowing what a harness, MCP server, or hook is. Advanced controls remain available.
Status: product definition and RFC backlog. The capabilities below describe the intended v1, not features already implemented.
On macOS, Linux or WSL, you need Git, OpenSSL and a running Docker or Podman:
curl -fsSL https://zettabot.app/install | bash
The script (install.sh) clones the repository into ~/zetta (set ZETTA_DIR to change it), writes the two .env files and starts the containers. Run it again to update: it keeps your .env files. Then open http://localhost:3001. The manual steps are on the landing page.
Demo video (62 s): mention two bots in a chat with your chief, read their answers in a shared room, then build, view and run a two-step workflow. The bot replies are scripted by a stand-in claude command, so the demo makes no model call. Select the image to open the full video (mp4).
Mention a bot with @ | Bots answer together in a room |
|---|---|
| Workflow on the canvas | Workflow run with each step's output |
Demo video (1 min 54 s): the Zetta dashboard, not only the computer's screen. A bot reads example.com, follows a link and opens the GitHub sign-in page on its own Linux computer. The chat shows a live card with the screen and each step; Watch live opens the full console. The bot does not type passwords, so it asks a person to Take over: the person types a dummy username and password into the sign-in page (they go to the computer, not into the chat) and hands back, and the bot carries on. Then Studio > Computer switches the computer's driver from Cua to agent-desktop and the same steps run again. The bot replies are scripted by a stand-in claude command, so no model is called. Waits (a computer starting, a bot working) are shortened. Select the image to open the full video (mp4).
Pick the driver per computer in Studio > Computer; the operator offers it with ZETTA_VM_DRIVERS=cua,agent-desktop (setup). To record it yourself, build docker/desktop, run docs/demo/computer/stack.sh up (its own database, server and web app on other ports, with fake data), bun docs/demo/computer/record.ts browse, and then docs/demo/build-vm-demo.ts on the result (it needs ffmpeg and ImageMagick; the usage is in its header).
Demo video (1 min 12 s): in Studio > Computer a second computer (Ubuntu 24.04, driven by agent-desktop) is created beside the default one (Debian 13, driven by Cua). One bot is then asked in chat to open a terminal on each and run uname -a and grep PRETTY_NAME /etc/os-release; the chat shows a live card per computer, and Watch live opens each terminal. Both are containers, so uname -a prints the same host kernel on both; the os-release line tells them apart. The bot replies are scripted (no model call). Select the image to open the full video (mp4).
A new computer is a name, a system and a driver, chosen in Studio > Computer. The list shows Linux (Debian 13, Ubuntu 24.04), Windows and macOS: the Linux ones work, and Windows and macOS say why they cannot (a Linux container cannot run them; macOS would only be the server's own desktop). The Ubuntu computer is a desktop with a terminal and no browser, because Ubuntu ships Chromium only as a snap, which does not run in a container. The operator turns it on with ZETTA_VM_OS=debian,ubuntu and builds its image (setup). To record it yourself, run docs/demo/computer/stack.sh up (with ZETTA_VM_IMAGE_UBUNTU naming the Ubuntu image) and bun docs/demo/computer/record.ts machines, then docs/demo/build-vm-demo.ts <dir> machines.
Demo video (1 min 37 s): you ask the Chief to build a team for a blog launch. Like a manager, it asks for the brief (goal, deliverables, limits), reads your bots and posts a design: Researcher and Writer are reused, Editor is hired, and Writer is taught your blog style with a new skill. Nothing is created until you say go ahead. Then the Chief creates Editor and the team (with its goal and context) and sends the changes as cards: three roles and a skill. Each card waits for your Approve. When you have decided every card of a step, the Chief goes on by itself: it gives each member its role and attaches the skill, then asks for a project room. The room is linked to the team and waits: nobody works in it until you write there. The bot replies are scripted by a stand-in claude command, so no model is called. Waits are shortened. Select the image to open the full video (mp4).
The Chief reuses a bot whose description, skills or teams fit a role and hires only what is missing. It teaches with skills, the team's context and role descriptions, and never edits a bot's own instructions. It looks for a skill in your library first, then on the GitHub marketplace (an install is one more card; the video does not show it, because it needs the network), and writes one only when none fits. A build has at most four steps. To record it yourself, run docs/demo/computer/stack.sh up, bun docs/demo/computer/record.ts team, and then bun docs/demo/build-vm-demo.ts <rec dir> team (it needs ffmpeg and ImageMagick; no desktop image is needed for this one).
Initial use cases include:
Bots are autonomous once given the task and access. They do not ask for approval on every ordinary action. They still surface missing information, expired logins, blocked tools, uncertain outcomes, and proposed configuration changes. Autonomy does not mean inventing success or working around access restrictions.
Bots have names, personalities, instructions, skills, model/harness selection, hooks and integration bindings. Support these six installed server-side harnesses:
Discover available harnesses and supported models, then guide the user through their account connection. Show actual capabilities and setup failures; do not pretend every harness supports every feature.
The setup flow is configure → verified conversation → satisfaction question → explicit confirmation → ready. A negative answer returns to refinement. Silence, a model's self-assessment, or a reaction does not complete onboarding. Confirmation is bound to the configuring user and the tested bot configuration; it cannot grant teammates access to that user's account. Revoked credentials or incompatible configuration changes invalidate execution readiness.
A snapshot shares conversation content at a fixed cutoff—not account access, bot configuration, underlying memory, or live server-file capabilities. Later private messages are not added. The viewer cannot reply, react, invoke bots or operate the original resources. Unsafe content must be handled explicitly before publication, never silently leaked.
Use a common model across sidebar, activity and the dedicated kanban: working/queued work, needs input, blocked, and new results. Keep attention separate from execution status: a failed run can require attention, while reading a result does not change whether the run succeeded.
The kanban focuses on pending items requiring user attention, with a resolved view for follow-up. Cards link to their originating chat, run, routine or workflow step. They identify the responsible bot, partial completion, safe next action and durable result. Resolving an item must reflect the actual underlying action; dragging a card cannot fabricate run success or approve a configuration change.
Start with in-app discoverability. External push/email/mobile notifications are not part of this scope.
Visual workflows are included in v1. Create a workflow from conditions and bot tasks, inspired by n8n. The RFCs define a bounded first graph model and editor; full n8n feature parity is not the goal.
Routines run tasks or published workflows on a schedule. The calendar should reuse the calendar from @g4rcez/components once its supported API/dependency is verified. Before activation, explain the task, bot, schedule/timezone, next occurrence, context policy, account bindings and result destination. Test runs perform real work and must be labeled accordingly.
Successful chat work should connect naturally to reusable instructions and routines. Users can configure through forms or chat, with the same server-side validation, preview and version/conflict rules.
Bots and people write code, run it and keep the result. A playground has several files, typed inputs and a history of runs. It runs on the server host, in a container per language, or in the browser (HTML, JavaScript, TypeScript), and a script can leave files in out/ (a report as a page, a chart as an image). A bot makes and runs one with the zetta:playground tool, and you open, change and run it again at /playground. Examples, limits and setup: docs/operations/playground.md.
Both are essential to v1, not optional future scope.
The exact runtime/provider is a technical gate. The product requirement is settled. The server host's unrestricted desktop is not the default execution environment.
Integrate Jev and Laya for decisions. Verify the products, protocols and data handling; do not replace them with a home-grown decision model.
Hooks behave like Express middleware: they can add context, transform/redact messages, skip a model call, or enqueue owned background work. Order, errors, deadlines and outcomes must remain visible. Hooks cannot change the initiating user's authority.
Use a Hermes-style persistent memory mechanism, with its exact reuse/integration approach established by the relevant RFC.
The loop is visible: find the knowledge behind an incorrect result, correct or forget it, and verify that a later task uses the correction. Historical messages and published snapshots remain historical. Private knowledge is not automatically promoted to shared scope. Self-learning does not mean model training.
Connect each app to the user's Zetta account, not globally to the server. A shared bot declares what integration it needs; each user binds their own account. Credentials stay out of bot definitions and model context.
The integration vision includes:
Use supported MCP servers or installed CLI integrations, with a focused adapter per integration where needed. Verify compatibility, purpose, permissions and OAuth scopes. Listing an app here does not claim that a connector exists or make every bespoke connector a v1 release requirement. The marketplace remains later work; connected-app configuration is in v1.
Use existing shared UI primitives and Tailwind styles. The shadcn chat components and supplied screenshots guide the chat-first layout, routine calendar, connection readiness and bot grouping. Borrow clear interactions, not only visual styling.
These are product references, not promises of identical behavior. Zetta keeps its own private-chat, per-user chief, account ownership and snapshot model.