尚未偵測到更新。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.