AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
The AI coding cockpit for macOS — a desktop workspace designed to orchestrate multiple CLI coding agents at once.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗The AI coding cockpit for macOS and Windows — a desktop workspace designed to orchestrate multiple CLI coding agents at once.
A native application built with GPUI, with real embedded terminals, multiple projects, and multiple tabs. Claude Code, GitHub Copilot, Codex, Grok, Cursor, OpenCode, Kiro, Pi, Crush — any agent that runs in a terminal can be monitored side by side.
Status: working prototype, under active development. The desktop app runs on macOS (Apple Silicon) and Windows 10 1803+ (x86_64). The runtime (
smeltd) also runs headless on Linux. The Windows build is an unsigned installer.
AI plugins make editors smarter, but people are still the ones stuck at the keyboard. When an agent can independently read code, edit code, run tests, and commit changes, the human role should shift from “the person who types” to “the person who navigates and gives direction.”
What is needed then is not a smarter editor, but a cockpit for keeping an eye on several agents working at the same time. smelt makes the terminal — where agents actually do their work — the primary workspace.
Download Smelt.dmg from Releases and drag it into Applications.
The app checks for updates on launch and on demand (stable/beta channel), showing a prompt when a newer version is available.
Download smelt-<version>-windows-x86_64-setup.exe from the same Releases page and run it. It installs for the current user without admin rights, into %LOCALAPPDATA%\Programs\Smelt by default, adds a Start menu entry, and can put the smelt command on your PATH. Like macOS, the app checks for updates on launch and on demand (stable/beta channel); applying an update closes Smelt, runs the new installer silently, and reopens it. Running sessions are not interrupted.
Data lives in %USERPROFILE%\.smelt.
This first Windows build:
cmd.exe (ConPTY), or the program named by COMSPEC.A Linux machine can run headless smeltd and be paired from the macOS app, the Windows app, or the mobile app.
curl -fsSL https://github.com/smelt-ai/smelt/releases/latest/download/install.sh | bash
curl -fsSL https://github.com/smelt-ai/smelt/releases/latest/download/install.sh | bash -s -- --with-desktop
Or download smeltd-<version>-linux-<arch>.tar.gz and run ./install.sh. --with-desktop also installs TigerVNC, XFCE, and a resident Chrome, then runs smeltd mcp add playwright. --relay=<url> sets the initial iroh relay. --apt-mirror=<mirror> selects an apt mirror for this install.
smeltd status
smeltd pair
smeltd devices
smeltd relay [<url>|off] # show, set, or clear the custom iroh relay
smeltd mcp add <id> # playwright, figma, rea, browser-mcp
claude, codex, copilot, pi, vim, and htop; split panes, a command palette (Cmd+K), and customizable quick launcherssmelt-notify) and structured protocols (ACP or provider-native). The session name comes from ACP session_title or hook SessionTitleChanged, and falls back to the first user prompt; OSC 0/2 is not a session name. OSC 9/777 notifications and bells are informational only. Badges and system notifications highlight sessions that need attention, without depending on any vendor-specific private formatsmelt-pi (~/.smelt/bin/smelt-pi) and speaks Pi's official JSONL RPC; it is not wrapped in ACP. Managed Bun (~/.smelt/runtime) starts ACP adapters and MCP servers on demand~/.smelt/agents/<id>/automations/); shell automations stay in ~/.smelt/workspaces/automations. Triggers are schedule or an external trigger: schedules cover weekday/daily/interval, while an external trigger is a loopback HTTP URL (127.0.0.1) that other programs on the same machine can POST to. The catalog shows “external trigger” without exposing the token. Pi is the first registered engine, and smeltd owns scheduled, external-trigger, and manual run lifecycles. Automations run with full access; there is no separate permission policySee docs/workspace.md for the complete feature list, keyboard shortcuts, and architecture details.
See docs/product-roadmap.md for the product direction.
Rust stable is required. Building the macOS app needs macOS. A full Xcode installation is not needed — the project uses the runtime_shaders feature in gpui_platform to compile Metal shaders at runtime, so Command Line Tools are sufficient.
The make dist-build target requires Python 3.10+ to package a DMG. The /usr/bin/python3 included with Command Line Tools may still be Python 3.9; if needed, run brew install python or set the interpreter explicitly with SMELT_PYTHON=/opt/homebrew/bin/python3 make dist-build.
make dev # Build a release and install it to /Applications
cargo run --bin smelt # Run the GUI only when smeltd is already available
make dist-build # Build a release and package dist/Smelt.dmg
make help # Show all available build targets
The Windows installer is built on Windows, not by make dist-build. The release job runs cargo build --release -p smelt -p smelt-cli -p smeltd --locked, then bash scripts/build-smelt-pi.sh. See docs/release.md.
Run tests and type checks:
make check-all # rustfmt + clippy + tests + Pi Agent
make test # cargo nextest(与 CI 同一运行器)
Rust 2024 + GPUI (gpui-pre 0.3.10) / gpui-kit for the GUI, portable-pty + alacritty_terminal for embedded terminals, tokio, and iroh for remote connections. axum for the automation webhook server (loopback only). Structured state is SQLite under ~/.smelt/ (on Windows, %USERPROFILE%\.smelt): smelt.sqlite3 for the runtime and client.sqlite3 for this desktop. See docs/local-storage.md.
The workspace contains smelt (the main GUI), smeltd (the runtime daemon: PTY sessions, in-process ACP drivers, and automations; the macOS and Windows desktops launch it on demand, and on Linux it can be installed as a systemd user service), smelt-pi (the Pi runtime binary), smelt-notify (status reports from agent hooks), and smelt-installer (the helper that swaps the macOS app in after quit). smelt-iroh-connect debugs the runtime's iroh path. Most users only interact with smelt; the GUI manages the local smeltd.
On Windows, Rust clients (the desktop, smelt-notify, and the runtime client) connect to %USERPROFILE%\.smelt\smeltd.sock (AF_UNIX, a non-blocking socket wrapped in smelt-runtime-client/src/stream/windows.rs). Bun and Pi use the current user's named pipe. Child processes sit in a Job Object (KILL_ON_JOB_CLOSE). Managed Bun is downloaded as bun-windows-x64.zip into %USERPROFILE%\.smelt\runtime.
The mobile client lives in mobile/ (Flutter) and is the cross-machine pass called 出菜口. On launch it connects to every paired machine (recorded in smelt-mobile.sqlite3). The first screen is the decisions waiting on you and what each machine is doing. Navigation is four tabs — pass, sessions, agents, settings — with a three-column layout on tablets, in Chinese and English. crates/smelt-mobile is its Rust core and uses the same smelt-runtime-client as the desktop. Each GitHub Release includes a signed Smelt-<version>-android-arm64.apk. Release builds check for a newer APK on launch and when the app returns to the foreground (at most every six hours), and from Settings → Updates. The download is checked against that release's SHA256SUMS and handed to the system installer. Stable follows full releases; Beta also follows -rc builds. Development builds and iOS do not take part. --dart-define=SMELT_UPDATE_MANIFEST_URL=… can point updates at another server. iOS TestFlight archives are built with make ios (scripts/build-ios.sh). See mobile/README.md.
For architecture, directory layout, Linux install, multi-runtime windows, remote desktop, and the idle-suspend behavior, see docs/workspace.md.
For the product roadmap, see docs/product-roadmap.md; for the miscellaneous backlog, see docs/roadmap.md.
Start at docs/README.md. Current guides: workspace, local storage, iroh relay, Windows, product roadmap, miscellaneous backlog, UI design language, and the mobile client.
Issues and pull requests are welcome. Before submitting, please make sure make check-all passes, and follow Conventional Commits for commit messages.
smelt+iroh://<endpoint_id>/?code=<one-time code>smeltd devices revokesmeltd stops it on every platform: running terminal sessions close and in-progress turns are interrupted; conversation history is kept. A terminal cell can stack several terminals (a dock) as well as split. An idle structured conversation suspends its in-process runtime after 30 minutes and wakes with the previous model, permission mode, and reasoning effort. One window can attach several runtimes, including a headless Linux machine, and open that machine's desktop through noVNC. Details are in docs/workspace.md.