AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Open-source control plane for coding agents: run them on your machine, plan and review from any device. E2EE, git-native, AGPL.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Your agents. Your machine. Your call.
You set a goal from any device. An agent on your hardware writes a plan; you
review it, leave notes and approve. The agent builds, you review the diff,
comment and approve, and Build merges.README 전문 보기 ↗[!WARNING] Build is an early, invite-only alpha. Build currently prioritizes validating features over code quality. Much of the codebase is AI generated and has received minimal review. Reviews and improvements are welcome; please read Before you write code before contributing.
Join the waitlist at getbuild.ing. What works today: the bridge on macOS and Linux (Intel and ARM), the web client and the desktop app, several paired machines at once, Claude Code, Codex CLI and Pi agents, and git worktree or Rift copy-on-write isolation. What does not yet: a native Windows bridge, OpenCode, self-updates for a bridge you built yourself, and any machine that cannot be reached directly or through TURN (it is shown as blocked; there is no relayed fallback).
Your agents. Your machine. Your call.
You set a goal from any device. An agent on your hardware builds it on its own branch; you review the diff, comment and send it back, and when it is right you merge.
# Bridge: installs the daemon, pairs it, and enables its background service
curl -fsSL https://getbuild.ing/install.sh | sh
# Desktop app: installs the app for the current user
curl -fsSL https://getbuild.ing/install-desktop.sh | sh
The bridge installer supports macOS and Linux on Intel/x86_64 and ARM64.
Build Desktop supports Apple Silicon Macs and Linux on x86_64 and ARM64;
Intel Macs can use the browser client. No website login or download token is
required. The bridge goes in
~/.local/bin. The desktop app goes in ~/Applications/Build.app on macOS, or
~/.local/share/build-desktop on Linux, with a launcher in ~/.local/bin and
an application-menu entry. Run the desktop installer again to update.
Application sign-in and bridge pairing still use your Build account.
Both installers verify SHA-256 checksums and verify the release's Sigstore
signature when cosign is installed. Downloads come from the public
build-releases
repository. The bridge follows its latest release; the desktop installer
resolves the desktop-latest version pointer and then downloads that specific
desktop release. This keeps the two products' versions independent.
To select a version, set BUILD_BRIDGE_VERSION or BUILD_DESKTOP_VERSION on
the shell receiving the script, for example:
curl -fsSL https://getbuild.ing/install-desktop.sh | BUILD_DESKTOP_VERSION=0.1.1 sh
The bridge installer runs build-bridge pair, which prints a pairing code, the
first 32 hex digits of the device's key fingerprint, and an approve at: link.
The link opens Build's Add a device screen with this device already looked
up, after sign-in if you are signed out. Check that the fingerprint matches,
then press Approve & pair. Approve only a device you just ran the installer
or build-bridge pair on: approving gives that machine access to your account,
and anyone can send you a pairing link. You can also type the code into Settings → Devices → Add
a device.
If this machine's stored pairing was revoked, or the api no longer knows it,
pair sets the old identity aside in ~/.build as
identity.json.retired-<device id> and pairs it as a new device. It takes
that answer only from the api that approved the device; when another api
(a different BRIDGE_API_URL) gives it, pair stops, changes nothing and
exits with status 3, and build-bridge pair --retire takes that api's word.
A device paired before 0.2.7 counts as approved by https://getbuild.ing, so
one paired with another api then needs --retire after a revoke. When a
retire was a mistake, stop the run and move the file back:
mv ~/.build/identity.json.retired-<device id> ~/.build/identity.json
To build either one from source, see Build locally.
Claude Code, Codex CLI and Pi, chosen for each agent you start,
with each provider's model and reasoning-effort options; the CLI must already
be installed and signed in on the machine running build-bridge.
Build does not run agents, host code, or see code. Agents run on your own machine via the bridge. Build's job is orchestration: starting work, watching it through git, and gating the transitions where human judgment matters. Think of it as tmux for coding agents, in your browser and end-to-end encrypted. You talk to agents in their threads from the compose box, review their diffs with batched comments, merge from the same screen, and can drop into an agent's terminal at any point, though you never have to.
getbuild.ing relay.getbuild.ing
┌─────────┐ HTTPS ┌────────────┐ /internal/* ┌────────────┐ wss ┌─────────┐
│ browser │◄──────►│ skriftapp │◄──────────────│ Rust relay │◄────►│ bridge │
│ (SPA) │ │ api + SPA │ │ rendezvous │ │ (user's │
└──┬─┬────┘ └─────┬──────┘ │ only │ │ box) │
│ │ ▼ └────────────┘ └────┬────┘
│ │ Postgres 16 ▲ │
│ └────── wss /ws/client (while negotiating) ──────┘ │
└╌╌╌╌╌╌ WebRTC DataChannels (direct; Cloudflare TURN fallback) ╌╌╌╌╌╌╌┘
Build hosts authentication and rendezvous, and nothing else. Conversations, commits, diffs and files are large, and relaying any meaningful share of them is the cost a hosted service must not carry. So the relay finds your machine and carries the WebRTC negotiation; the browser closes that socket once the DataChannels are open, and every application byte goes peer to peer from then on. A machine that cannot be reached directly (or through TURN) is shown as blocked, with the reason and a Retry. There is nothing underneath to fall back to.
| Component | Where | What |
|---|---|---|
bridge/ | user machines | Rust device daemon: worktree-per-task, full-PTY harnesses, Build's MCP tools for agents, git-diff watcher, durable task store, E2EE transport, device pairing |
bridge/src/bin/relay.rs | relay.getbuild.ing | Rust ciphertext-only broker: /ws/device (Ed25519 auth) + /ws/client (gateway-token auth). Carries session setup and rtc.* signaling and refuses everything else; presence and transport keys are the api's |
skriftapp/ | getbuild.ing | Python app server (Skrift): passkey auth, device registry/approval, gateway tokens, web push, the admin transport page (how sessions reach bridges: direct / TURN / relay), serves the SPA |
spa/ | built into skriftapp | Vite vanilla-ES-module web client: task board, agent threads, diff review, terminal drawer; all deps self-hosted, zero CDN |
desktop/ | user desktops | Sandboxed Electron client for the hosted SPA; connects to a separately installed bridge the same way the browser does |
web/ | dev only | Node E2EE test/QA harnesses |
deploy/ | podman compose stack + k8s manifests and the cutover runbook |
Build maintains the E2EE crypto layer in transport/:
the JS binding serves SPA and web; Python is the compatibility reference, not
an app runtime dependency. The Rust implementation remains in
bridge/src/transport.rs. Consumers, CI and app/QA images use this checkout,
with committed locks and no first-party sibling clone. The
original repository and pin remain provenance; Build
is the maintenance and audit source of truth. The imported JS/Python work
retains its own license notice.
A second infrastructure party. Browser and bridge negotiate direct WebRTC DataChannels and
use Cloudflare TURN only when neither peer can hole-punch, which makes Cloudflare a second
infrastructure party beside the relay. Cloudflare sees TURN allocation source IPs and DTLS
ciphertext; under that DTLS is the same secretbox envelope the relay carries during negotiation,
so even a broken DTLS session exposes no more than the relay already saw (session ids, sizes,
timing) and never plaintext or session keys. The peer's DTLS fingerprint travels inside the sealed session,
so neither Cloudflare nor anyone else on the path can substitute a peer. The direct path adds
the one exposure the relay path hid: each peer learns the other's IP. TURN credentials are
short-lived (their lifetime is TTL_SECONDS in skriftapp/buildapp/ice_servers.py), minted
per authenticated user by the api, and reach the bridge inside the sealed session; the TURN key
itself never leaves the api Secret.
How each piece is built inside (the bridge's RPC and push model, its state,
stores, harnesses and MCP tools; the web client's cache, connection state
machine and surfaces) is in ARCHITECTURE.md.
deploy/README.md, which also covers
running the whole stack. Production deploy:
deploy/k8s/CUTOVER.md.planning/v2/: the full scope, UI design brief and roadmap.assets/brand/.Copyright (C) 2026 Zech Zimmerman
Build is licensed under the GNU Affero General Public License v3.0
only (AGPL-3.0-only). You are free to use, modify and self-host it.
If you run a modified version as a network service, you must offer its source
to the service's users under the same license. Commercial licensing is
available from the maintainer.
The imported JS/Python secure transport under transport/ is an explicit
exception to the root AGPL scope. It retains its own
Business Source License 1.1 notice, including the
four-year change period and MIT change license; importing it does not relicense
it or establish that a change date has elapsed. Package-local copies of that
notice carry the same terms. Provenance records the
pinned source and amendments. The existing Rust transport remains in the
AGPL-licensed bridge.
Outside that transport scope, contributions are accepted under the AGPL and a signed Contributor License Agreement, as described in CONTRIBUTING.md.