Your agents. Your projects. All together.
Run the coding agents you already use. Follow their work and step in when they need you.
Download Zana · Watch the tour · Try Agent City ↗
Free and open source · macOS (Apple Silicon & Intel) · Windows x64
- Your agents, together. Use Claude Code, Codex, Cursor, OpenCode, and Pi in structured conversations or native CLI sessions across your projects.
- Know what needs you. See working, idle, and waiting agents. Answer questions from your Inbox and send the reply back to the agent.
- Review the result. Read reports, diagrams, and diffs beside the conversation. Keep useful findings in your project Library.
Start a task, follow your agents, and review the result in this 80-second recording of the app.
zana-tour.mp4
Watch with captions on the website →
Download for macOS or Windows →
- Install the
.dmgfor your Mac (Apple Silicon or Intel) or the Windows x64 installer. - Add your first project: a local folder, an enrolled machine, or an SSH project.
- Open New Chat, choose a Thread, CLI Agent, or Team, and give it a task.
You’ll need Node.js 20+, Git, and your chosen coding-agent CLI installed and authenticated. Remote execution hosts and source development use Node.js 22+. macOS releases are signed and notarized. The app checks for updates and applies downloaded updates when you quit.
First-run guide · Daily workflows · Multiple machines
Agent City is a plugin. Add the panels, tools, skills, and integrations that fit
your work—or build your own with the @zana-ai/zcc-plugin-sdk.
Zana for Slack comes pre-installed. Open Plugins → Zana for Slack → Configuration to link your account and connect Project channels. Slack setup and controls.
Browse plugins · Build your first plugin · SDK reference
How plugins work
Add panels, project tabs, agent tools, skills, MCP servers, settings, and CLI
commands through Plugins. Browse the in-app catalog or build your own
TypeScript package with the @zana-ai/zcc-plugin-sdk.
A plugin’s package.json declares the pieces it contributes: server logic,
interface elements, and agent capabilities. Zana loads those pieces
and connects them through the SDK.
zcc plugin new hello --app
cd zcc-plugin-hello
zcc plugin install .
zcc plugin devYou can also choose Create in Plugins → Browse to start inside Zana. The development loop watches your source, rebuilds the UI, and reloads the installed plugin as you edit.
How plugins work · Plugin quickstart · Authoring guide · SDK reference
Use Zana from your terminal
The zcc CLI and Control SDK let you operate the running
app from scripts and your terminal. With zcc on your PATH:
# Find a registered project
zcc project list
# Start a Thread in that project
zcc thread spawn --project <project-id> --prompt "Review the current diff"
# See your running Threads
zcc thread listLive commands use the app’s authenticated control APIs. Selected commands,
including zcc guide, plugin scaffolding, and Inbox file reads, also work
offline. See the CLI reference for installation and all commands.
The desktop app, CLI, and agent tools connect through shared product services. Execution runs on your machines; plugins extend the app.
Architecture guide · Runtime boundaries
Explore the architecture
The desktop UI, zcc CLI, and agent tools connect to Zana’s product services.
The product server owns policy, projects, thread state, and the plugin
host. Host execution runs the authorized work on your machines. Electron
provides the desktop shell, supervises the local runtime, and retains
compatibility adapters for native and CLI Agent operations.
| Execution surface | How it runs |
|---|---|
| Threads | Structured conversations through the host daemon, agent runtime, and provider bridges: Claude Agent SDK, Codex app-server, Pi SDK, and ACP. |
| CLI Agents | Native coding CLIs in real PTYs, using the desktop launch path and host harness modules. Shell terminals use PTYs too. |
The renderer supplies intent; trusted server and desktop services authorize operations and confine paths. Installed plugins run full-trust inside the product server and can contribute UI. Install and enable are the trust decisions; plugins are not sandboxed guests.
Architecture guide · Runtime boundaries · Editable diagram and exports
Use Node.js 22+ and the pnpm version pinned in package.json.
git clone https://github.com/salesforce/zana.git
cd zana
pnpm install
pnpm run rebuild
pnpm devDevelopment uses ~/.zcc-dev and port 8781, so it can run alongside your
installed app. The pre-dev step builds the CLI and seeds bundled plugins.
Packaged builds and CLI connections
To build and run the packaged desktop app, quit any other Zana instance using
~/.zcc first:
pnpm dist
pnpm startpnpm start opens the built app from dist/; it does not rebuild.
pnpm preview runs unpackaged production Electron from out/.
pnpm dev:prod points development at ~/.zcc on port 8780; quit the
installed app before using it. Use that command rather than pnpm dev --prod,
which is pnpm’s production-dependencies flag.
Build and run the CLI directly from this checkout:
pnpm build:cli
node packages/cli/dist/bin/zcc.js project listTo target the isolated development app:
ZCC_DATA_DIR="$HOME/.zcc-dev" ZCC_SERVER_URL=http://127.0.0.1:8781 \
node packages/cli/dist/bin/zcc.js project listWithout overrides, the CLI targets the installed app’s data in ~/.zcc
and product API on port 8780.
Repository map, checks, and optional review
| Path | Responsibility |
|---|---|
apps/app |
React interface: projects, conversations, fleet views, and plugin surfaces. |
apps/server |
Product APIs, policy, durable state, and the plugin host. |
apps/host-daemon |
Agent execution, provider bridges, PTY harnesses, and host filesystem operations. |
apps/desktop |
Electron shell, native integration, runtime supervision, and compatibility IPC. |
packages |
Shared contracts, agent runtime, SDKs, CLI, and UI primitives. |
plugins |
First-party plugins and provider integrations. |
website |
Public website, documentation, and marketplace. |
pnpm typecheck
pnpm test
pnpm build
pnpm test:e2eSee CONTRIBUTING.md for the contribution workflow and e2e/README.md for end-to-end testing.
Authorized internal developers can opt in to an advisory
TinyNod review that runs
during git push. It is off by default, never blocks a push, and never runs in
public CI.
git config --local zana.tinynod.enabled true # opt in (set false to opt out)
TINYNOD_SKIP_HOOK=1 git push # skip TinyNod for one pushSetup for DevBar / AI Suite users and everyone else, reading results, having an AI fix findings, and troubleshooting are in docs/tinynod-local-review.md.
Zana is MIT-licensed. Fork it, adapt the interface, add your own integrations, and build around the tools and environments your team uses. Contributions to code, documentation, tests, and issue reports are welcome.
Zana’s architecture builds on the work of bb. We also draw inspiration from Cursor, Codex, and Claude Code.
Website · Issues · Contributing · Security · Code of conduct