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,即可验证所有权并自行管理介绍。
一分钟完成验证Verified, escrow-funded AI software builds: chat, plan, pay on Solana, build, verify, accept.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
AtherNull turns a plain-language request into verified, paid-for software. You describe what you want in a chat. An AI agent agrees the scope with you and drafts a plan and a bill. You fund the work into an on-chain escrow, an agent builds it in an isolated workspace, an independent verifier re-runs the tests, and the payment is released only when you accept the result.
Live demo: athernull.io, on Solana devnet (test funds only; no real money moves).查看完整 README ↗AtherNull turns a plain-language request into verified, paid-for software. You describe what you want in a chat. An AI agent agrees the scope with you and drafts a plan and a bill. You fund the work into an on-chain escrow, an agent builds it in an isolated workspace, an independent verifier re-runs the tests, and the payment is released only when you accept the result.
Live demo: athernull.io, on Solana devnet (test funds only; no real money moves).
The whole journey happens in one chat.
flowchart LR
subgraph Browser
C["Agent Canvas<br/>(OpenHands, pinned + patched)"]
W["AtherNull web<br/>(Next.js: landing, sign-in, build card)"]
X["Wallet<br/>(Phantom / Solflare)"]
end
subgraph Backend["AtherNull backend"]
GW["Agent gateway<br/>auth + policy"]
API["API<br/>plans, bills, funding, settlement"]
PV["Live previews<br/>(sandboxed)"]
end
DB[("Postgres")]
SB["Per-organization sandbox<br/>OpenHands Agent Server"]
WK["Coding worker"]
VF["Independent verifier"]
CH[("Solana escrow program")]
C -- "/oh" --> GW --> SB
W -- "/v1" --> API
X -- "signs deposit" --> CH
API --> DB
API -- "finalized reads" --> CH
WK -- "claims funded builds" --> API
WK -- "runs the build" --> SB
VF -- "claims verifications" --> API
VF -- "offline test run" --> VF
API --> PV
| Component | Path | Role |
|---|---|---|
| Web app | apps/web | Landing page, sign-up/sign-in, the in-chat build card and panel, Builds page. Next.js. |
| Agent Canvas | apps/canvas | The chat workspace. OpenHands Agent Canvas, pinned to an exact upstream commit and changed only through explicit patch files. |
| API | apps/api | Fastify + Kysely. Auth (Better Auth, organizations), the agent gateway, plans, budgets, devnet funding and settlement, verification, hosted repositories, live previews. |
| Coding worker | workers/coding-agent | Python. Claims funded builds from a Postgres-backed queue (leases, retries) and runs them on the organization's sandbox. |
| Verifier | services/verifier | Python. Re-runs the tests on a clean checkout of the exact commit, offline, in a throwaway container. |
| Escrow program | contracts/solana | Anchor program: per-project funding accounts bound to the build, settle and refund. |
| Shared packages | packages/* | Database schema and migrations, typed contracts and the task state machine, the Solana client, the model router. |
AtherNull uses OpenHands as its agent runtime and workspace UI. We took it as a reference and a dependency, not a fork: we studied how its pieces fit, kept what is genuinely good at running coding agents, and built the trust, money and verification layer it does not have.
How we use it
openhands-sdk, openhands-tools) for the per-execution adapters.@openhands/agent-canvas 1.20.0), served under /canvas.How we keep it maintainable
Pinned, never silently forked. apps/canvas/UPSTREAM.json pins the exact upstream commit (380fd839). apps/canvas/setup.mjs fetches that commit and applies our changes in order. Upgrading OpenHands means moving the pin and re-checking a small, reviewable set of patches.
Every change is an explicit patch in apps/canvas/patches/:
| Patch | Change |
|---|---|
0002-require-athernull-session | The canvas requires an AtherNull session and talks only to AtherNull's gateway |
0003-athernull-chrome | AtherNull branding and chrome |
0004-athernull-product | AtherNull catalog, product defaults, OpenHands-platform content hidden |
0005-athernull-apps-platform-managed | Canvas extensions are managed by AtherNull, not installable by users |
0006-athernull-chat-build-card | The in-chat build bar and the build panel (plan, bill, payment, progress) |
The canvas never talks to an agent directly. Every request goes through AtherNull's agent gateway (apps/api/src/agent-gateway). It authenticates the user, enforces a fail-closed policy, injects the sandbox key server-side (the browser never holds it), and applies the funding gate: a conversation with tools only runs as part of a funded build.
How we got there. Before committing to this design we prototyped two integration approaches (prototypes/openhands-integration: a standalone shell, and selective reuse of OpenHands components) and recorded the decisions in ADRs: 0001 (the SDK as a dependency), 0006 (the workspace frontend) and 0015 (the canvas behind our gateway).
OpenHands runs agents. AtherNull decides when an agent may work, what it is paid, and whether its work is accepted.
| Capability | Where |
|---|---|
| Discuss before paying. Conversations start as a tool-less planning agent, capped per organization and per conversation. | apps/api/src/agent-gateway/discussions.ts |
| Funding gate. Agent work with tools is refused unless the conversation is a funded build that is currently running. | apps/api/src/routes/agent-gateway.ts |
| Structured, versioned plans. LLM output validated against a schema; prices come from deterministic code, never from the model. | apps/api/src/planner.ts, apps/api/src/pricing |
| Provenance chain. Plan to approval to budget to build is enforced by database constraints and re-checked before a build starts. | apps/api/src/routes/task-provenance.ts |
| On-chain escrow. Per-project accounts bound to the build by a hash; only finalized transactions are credited; settle and refund on-chain. | contracts/solana, apps/api/src/solana |
| Independent verification. A separate service with its own token re-runs the tests offline on the exact result commit. | services/verifier |
| Commits as the record of work. AtherNull hosts a git repository per project; each build starts from a pinned commit and returns one commit. | apps/api/src/repos, ADR-0019 |
Live previews. Verified web apps are served at /preview/<build>/ in a sandboxed, opaque origin. | apps/api/src/routes/previews.ts |
| Sandbox isolation. Sandboxes get their own network and a host firewall, plus CPU, memory and process limits and a pinned image. | apps/api/src/sandbox, infrastructure/sandbox-network |
apps/
api/ Fastify API, agent gateway, funding, verification, previews
web/ Next.js web app (landing, auth, build card, Builds page)
canvas/ OpenHands Agent Canvas: UPSTREAM.json pin + patches/ + build scripts
workers/
coding-agent/ Python coding worker (Postgres-backed job queue)
services/
verifier/ Python independent verifier
contracts/
solana/ Anchor escrow program and its tests
packages/
database/ Postgres schema and SQL migrations
contracts/ Shared types, zod schemas, task state machine
solana-client/ PDA derivation, binding hash, instruction builders
model-router/ Cost/complexity model routing
infrastructure/ Dev ingress, sandbox network firewall, VPS service files
docs/ ADRs, architecture, runbooks, security gates
prototypes/ OpenHands integration spikes that informed the design
scripts/dev.mjs One command for the whole stack
Prerequisites: Node.js 22+, pnpm 9, Docker, Python 3.12, and devnet credentials (a Helius devnet RPC URL and a devnet authority keypair). For payments, a browser with Phantom or Solflare set to Devnet.
pnpm install
python3.12 -m venv workers/coding-agent/.venv
workers/coding-agent/.venv/bin/pip install -e workers/coding-agent # Windows: .venv\Scripts\pip
node scripts/dev.mjs --init-env # first run: writes apps/api/.env from your local devnet secrets
pnpm dev # Postgres, migrations, canvas build, API, web, ingress, worker, verifier, provisioner
Open http://localhost:8080, sign up, and start a conversation. In development, verification links are printed to the console when no email provider is configured. Your organization's sandbox is started automatically on first use.
Tests
pnpm -r typecheck
pnpm -r test # API tests need a migrated Postgres (see .github/workflows/ci.yml)
cd workers/coding-agent && pytest && ruff check .
cd services/verifier && pytest && ruff check .
Full guide: docs/runbooks/demo-stack.md.
The reference deployment is a single Ubuntu 24.04 VPS running Coolify:
/v1, /oh, /api/auth, /canvas, /preview and /health to the backend.Step by step: docs/runbooks/vps-deploy.md. Sandbox network and isolation checks: docs/runbooks/sandbox-network.md.
What is enforced today
Known limitations
The full assessment and the plan to close these gaps:
| Topic | Document |
|---|---|
| Architecture decisions | docs/adr/ |
| Current architecture audit | ATHERNULL_CURRENT_ARCHITECTURE_AUDIT.md |
| Target design: chat-native USDC escrow | docs/architecture/CHAT_NATIVE_USDC_ESCROW_TARGET.md |
| Escrow state machine | docs/architecture/ESCROW_STATE_MACHINE.md |
| Chat payment API contract | docs/architecture/CHAT_PAYMENT_API_CONTRACT.md |
| Migration plan and phases | docs/architecture/CHAT_NATIVE_MIGRATION_PLAN.md |
| Security gates | docs/security/PRE_LAUNCH_SECURITY_GATES.md |
| Threat model | docs/threat-model.md |
| Local stack | docs/runbooks/demo-stack.md |
| VPS deployment | docs/runbooks/vps-deploy.md |
AtherNull's agent runtime and workspace UI are built on OpenHands, © OpenHands contributors, released under the MIT License. The Agent Canvas is fetched from upstream at a pinned commit and modified only through the patches in apps/canvas/patches/. The OpenHands license and copyright notice apply to that code.
AtherNull is proprietary software: Copyright (c) 2026 AtherNull, all rights reserved. The source is visible here for review and evaluation, but it may not be used, copied, modified or distributed without written permission. OpenHands and the OpenHands portions in apps/canvas/patches/ remain under the MIT License. See LICENSE.