It uses tools, keeps memory, and shows you every step — not just a final answer. Zenith is its home base: the desktop product, UIs, Rust runtime, optional hosted services, shared memory, computer use, IM integration, and docs in one recursive clone.
▶ Start with Bodhi AI · Lotus · Bamboo · Bodhi Server · Pavilion · Architecture Overview
Bodhi AI turns AI from a chat box into a desktop workbench that actually does the work: you hand it a task, it uses tools, keeps memory, and produces results — and you can watch the whole thing happen. Zenith ties the product, the UI, the execution engine, optional hosted services, and the docs together — and keeps their releases in sync.
| Capability | What it means |
|---|---|
| A map of the whole system | One repo shows how product, UI, runtime, backend, and docs divide the work and fit together |
| Nine submodules, one clone | Pull the full product stack and companion services in a single recursive clone |
| Coordinated release train | Lotus → Bamboo → Bodhi published in dependency order, all driven by one config file |
| Daily nightly versioning | Calendar-versioned (YYYY.M.N) auto-bump and nightly release |
| Submodule guard | CI validates submodule pointers on pushes to and pull requests targeting main |
| Clear "start here" routing | Whether you want the product, the frontend, or the runtime, there is a clear door in |
Zenith holds almost no business logic itself. It is a thin-shell monorepo: it pins nine Git submodules, owns the root-level documentation, and orchestrates releases across repos. The real features live inside the submodules.
graph TD
Z["Zenith (this repo)<br/>submodule pointers + release train"]
Z --> B["Bodhi AI<br/>desktop product surface (Tauri shell)"]
Z --> L["Lotus<br/>React + Vite UI layer"]
Z --> R["Bamboo<br/>local-first Rust agent runtime"]
Z --> S["Bodhi Server<br/>optional hosted service"]
Z --> P["Pavilion<br/>website & docs"]
Z --> J["Jiandu<br/>Rust memory crate + stdio MCP"]
Z --> N["Nova<br/>computer-use MCP server"]
Z --> LN["Lotus Next<br/>experimental frontend track"]
Z --> M["Magpie<br/>IM connector for Bamboo"]
B -. starts / reuses / health-checks .-> R
R -. packaged builds serve embedded frontend .-> L
L -->|HTTP APIs + shared /v2/stream WebSocket| R
L -. legacy SSE fallback .-> R
R -. optional /proxy/* when configured .-> S
P -. explains .-> B
Note —— Bodhi owns the native desktop shell and the Bamboo sidecar lifecycle: it starts or reuses
bamboo serveand waits for it to become healthy. Packaged builds load the Lotus UI served by Bamboo; development keeps Lotus on its Vite dev server while Bamboo runs alongside it. Lotus sends requests over HTTP and receives live events through the shared/v2/streamWebSocket by default, with legacy SSE only when WebSocket is disabled or its initial connection cannot be established. Bodhi Server is optional for local operation and is used, when configured, for accounts/authentication, credential storage, quota/billing, model routing, and provider proxying.
| Module | Path | Role | Start here |
|---|---|---|---|
| Bodhi AI | bodhi/ |
Product surface: Tauri shell, native integration, packaging, and managed Bamboo sidecar lifecycle | Bodhi AI |
| Lotus | lotus/ |
UI layer: React + Vite, HTTP requests, shared WebSocket live events, legacy SSE fallback, view state, settings | Lotus |
| Bamboo | bamboo/ |
Execution engine and production Lotus host: local-first Rust runtime with HTTP, WebSocket, and legacy SSE APIs | Bamboo Agent |
| Bodhi Server | bodhi-server/ |
Optional hosted Go service: accounts/auth, API keys, encrypted provider credentials, model routing, billing/quota, provider proxy | Bodhi Server |
| Pavilion | pavilion/ |
Website & docs: download page, doc center, public narrative | Pavilion |
| Jiandu | jiandu/ |
Authoritative shared memory: independent filesystem-backed Rust store, embedding-free lexical recall, host-generated Dream snapshot persistence, and one-tool stdio MCP | Jiandu · agent guidance · portable Skill |
| Nova | nova/ |
Computer use: native desktop interaction exposed through MCP | Nova |
| Lotus Next | lotus-next/ |
Experimental parallel UI track: responsive React + Vite rebuild without current feature-parity or production-readiness claims | Lotus Next |
| Magpie | magpie/ |
IM integration: standalone connector and Bamboo service plugin | Magpie |
| Zenith (root) | . |
Coordinator: submodule pointers, root docs, release train | You are here |
Zenith's biggest job is getting any person to the right door fast.
If you just want to understand the product
- See the product itself → Bodhi AI
- See why the overall design is organized this way → Zenith Architecture Overview
- See the website / download / docs narrative → Pavilion
If you want to build
- Desktop product / Tauri shell →
bodhi/ - Frontend interaction / React UI →
lotus/ - Agent runtime / Rust backend →
bamboo/ - Optional hosted accounts / credentials / routing / billing →
bodhi-server/ - Website / docs / public content →
pavilion/ - Shared-memory MCP →
jiandu/ - Computer-use MCP →
nova/ - Experimental next-generation UI →
lotus-next/ - IM connector / Bamboo service plugin →
magpie/
The core product path is split so each layer can evolve on its own yet converge into one product at release time:
- UI & experience live in Lotus (React/Vite); requests use HTTP and live events use one shared WebSocket by default, with legacy SSE fallback.
- Execution and production UI hosting live in Bamboo (Rust), local-first and runnable as a standalone service.
- Optional hosted accounts, credentials, model routing, quota/billing, and provider proxying live in Bodhi Server (Go) when configured. The local Bodhi + Bamboo path does not require it.
- The desktop shell lives in Bodhi: it owns native integration, packaging, and the managed Bamboo sidecar lifecycle, while Bamboo serves the embedded Lotus frontend in release builds.
- Public narrative lives in Pavilion, decoupled from code.
Four companion submodules keep separate boundaries: Jiandu owns the authoritative filesystem memory root, deterministic embedding-free lexical recall, host-generated Dream snapshot bytes, and the one-tool stdio MCP server. Hosts choose query terms, optional reranking, prompt placement and budgets, and Dream generation and cadence; the optional portable Skill teaches this contract but must be explicitly enabled by its host. Nova provides computer use over MCP; Lotus Next is an experimental frontend track developed alongside Lotus and is not the current Bodhi default; Magpie connects IM platforms to Bamboo.
Shipping several repos at once, in dependency order, is error-prone. Zenith reduces it to one config plus one workflow.
The order is fixed by the dependency graph:
- Lotus → publish npm package
@bigduu/lotus(publish-npm.ymlinbigduu/Lotus) - Bamboo → publish crates, embedding that exact Lotus as the web frontend (
publish-crate.ymlinbigduu/Bamboo-agent) - Bodhi → build & ship desktop assets consuming both (
release.ymlinbigduu/Bodhi-AI)
Between steps, the train waits until the artifact is actually visible on crates.io / npm before continuing (see wait_for_crates_version / wait_for_npm_version in release-train.yml). All versions and refs default to .github/release-train.config.json (from_manifest), and can be overridden when dispatched manually.
The train also supports partial releases: dispatch with targets (e.g. bamboo,bodhi) to release a subset — excluded repos are pinned to the last published versions recorded in the config, and a pre-flight check refuses to reuse an already-published version (pass resume=true to resume a partially completed train instead). After a successful run, the train writes the published versions back to the config, and the nightly bump additionally scans the registries for the month's highest published number — so the counter never collides with an ad-hoc release.
The live refs, release versions, and options are maintained in
.github/release-train.config.json; the
README intentionally does not copy a version snapshot that will go stale.
Related workflows (under .github/workflows/):
| Workflow | Purpose |
|---|---|
release-train.yml |
Coordinated release (full or partial via targets): Lotus → Bamboo → Bodhi |
nightly-release.yml |
Daily nightly auto-bump (YYYY.M.N) at 04:00 UTC |
submodule-guard.yml |
Validates submodule pointers on pushes to and pull requests targeting main |
Default policy —— Normal releases go through Zenith's release train; per-repo standalone flows are for recovery or special cases only.
git clone --recursive https://github.com/bigduu/Zenith.git
cd ZenithAlready cloned without submodules:
git submodule update --init --recursivecd lotus
npm install
cd ../bodhi
npm install
npm run tauri:dev
tauri:devbuilds../bambooas the managed debug sidecar, starts../lotuswith Vite HMR, and launches Bodhi. Bodhi starts or reuses Bamboo and waits for its health endpoint, while the development UI remains on Vite; packaged builds load the Lotus frontend served by Bamboo. Seebodhi/package.jsonand the Bodhi README.
cd lotus
npm install
npm run devThe Vite UI can start on its own; live agent data requires a separately running Bamboo service.
cd bamboo
cargo run -- serve --port 9562
bamboo serveaccepts optional--port/--bind/--data-dir/--static-dir/--workersoverrides. Without--portit uses the configured port. Runbamboo --helpfor the current command surface and see the Bamboo README for authoritative usage.
# show pinned revisions
git submodule status
# pull latest upstream commits
git submodule update --remote --recursive
# after submodule work, bump pointers from root
git add .gitmodules bamboo bodhi bodhi-server jiandu lotus lotus-next magpie nova pavilion
git commit -m "chore: bump submodule pointers"
git pushWorkflow: Develop, commit, and push inside the submodule first, then bump and commit the pointer in Zenith. Full release steps live in
AGENTS.md.
| Module | Repository |
|---|---|
| Bodhi AI — desktop product surface | https://github.com/bigduu/Bodhi-AI |
| Lotus — React UI layer | https://github.com/bigduu/Lotus |
| Bamboo — Rust agent runtime | https://github.com/bigduu/Bamboo-agent |
| Bodhi Server — optional hosted accounts, credentials, routing, billing/quota, and provider proxy | https://github.com/bigduu/bodhi-server |
| Pavilion — website & docs | https://github.com/bigduu/Pavilion |
| Jiandu — filesystem-backed Rust memory library + stdio MCP server | https://github.com/bigduu/Jiandu |
| Nova — computer-use MCP server | https://github.com/bigduu/Nova |
| Lotus Next — experimental parallel frontend track, not the current Bodhi default | https://github.com/bigduu/lotus-next |
| Magpie — IM connector for Bamboo | https://github.com/bigduu/Magpie |
Key docs
- Zenith Architecture Overview — why the system is organized this way
AGENTS.md— contribution rules, multi-agent collaboration, full release playbook
Only clicking one link? Open Bodhi AI. Want the why? Read the Zenith Architecture Overview.