Browse by type
Thank you for using Luban at this early stage. Please note that Luban is under active development and has breaking changes every day. Please do not actively discuss or share this project's link, as it could attract too many people while the project is still young. (I have to open source it now because I can't afford the CI usage.)
Luban is a localhost-only AI code editor built as a browser UI served by a local Rust server, with an optional Tauri desktop shell.
just app run
The Tauri app starts the local server in-process and loads the UI in a WebView.
cargo run -p luban_cli -- ui
This starts the local server on a random available port, prints a local URL, and opens it in your browser.
just web run
# or: just run
Open http://127.0.0.1:8421/.
Mock mode runs the UI without starting the Rust server and is the preferred workflow for fast interaction iteration.
just web dev-mock
Open http://localhost:3000/.
Mock mode is controlled by NEXT_PUBLIC_LUBAN_MODE=mock. Web/server integration is governed by
consumer-driven contracts under docs/contracts/.
Prebuilt macOS artifacts are published under https://releases.luban.dev/.
GitHub Releases for each v* tag also includes the packaged artifacts as release assets.
https://releases.luban.dev/Luban_latest_darwin-universal.dmghttps://releases.luban.dev/Luban_latest_<platform>.dmghttps://releases.luban.dev/latest.jsonhttps://releases.luban.dev/<version>/Luban_<version>_<platform>.app.tar.gz<platform> is one of: darwin-aarch64, darwin-x86_64, darwin-universalFor manual install, extract the archive and move Luban.app into /Applications.
This project uses just to manage common dev commands:
just -l
just defaults to sh, which is not always available on Windows. Use the
PowerShell-friendly justfile.win:
# One-off
just -f justfile.win test
# Or set for the current session
$env:JUSTFILE = "justfile.win"
just test
# Or set permanently (new terminals will pick this up)
setx JUSTFILE "justfile.win"
just app runjust build (or just app build)/api/*): just web runjust run-serverjust build-serverjust web dev/api/* by default; for end-to-end testing against
real APIs, prefer just web run.just web buildjust fmt && just lint && just test
Full CI-equivalent flow:
just ci
UI E2E (Playwright):
just test-ui
# or: just test-ui-headed
cargojustpnpm (required for web/)cd web && pnpm exec playwright installcrates/luban_server (binds to loopback by default)web/ (served from the same origin)/api/events (action-driven protocol)/api/pty/*See docs/decisions.md and docs/cs-web-architecture.md.
When you change any /api/* HTTP route, WebSocket path, or message schema, update:
docs/contracts/features/*docs/contracts/progress.mdSee docs/contracts/README.md.
crates/luban_cli/: luban CLI entrypoint (luban ui)crates/luban_domain/: pure state + reducers (most regressions should be captured here)crates/luban_server/: HTTP + WebSocket server, serves web/crates/luban_tauri/: Tauri desktop wrapperweb/: browser UI (Next.js) + Playwright testsdocs/: architecture and workflow documentationpostmortem/: incident writeups and action itemsdev/: packaging and release toolingCommon environment variables:
LUBAN_SERVER_ADDR: override bind addr/port (default: 127.0.0.1:8421)LUBAN_CODEX_BIN: absolute path to the codex CLI binaryLUBAN_CLAUDE_BIN: absolute path to the claude (Claude Code) CLI binaryLUBAN_CLAUDE_ROOT: override Claude config root (default: $HOME/.claude)LUBAN_AGENT_RUNNER: agent runner override (codex / amp / claude)pnpm not found: install pnpm and rerun just web ...LUBAN_SERVER_ADDR=127.0.0.1:8422 (or any free port)codex not found: install Codex CLI or set LUBAN_CODEX_BINclaude not found: install Claude Code or set LUBAN_CLAUDE_BINStart at docs/README.md.
The agent chat panel streams events from the Codex CLI. The executable is discovered via PATH by
default; set LUBAN_CODEX_BIN to override the absolute path.
browse all types & interfaces →
$ claude mcp add luban \
-- python -m otcore.mcp_server <graph>