Developer
Smart contracts, subnets, and client applications built on Avalanche.
Avalanche intelligence runtime/Phase 0–1
Avalanche AI hosts seven Avalanche intelligence domains on one shared DeepSeek Harness runtime — with deterministic routing, a default-deny capability policy, a hash-chained evidence ledger, and tamper-evident execution receipts.
01 / Runtime
Avalanche AI extends the upstream harness in place. It adds one bundle, one patch block, and nineteen packages — all sharing the same process, tool registry, and policy engine.
Architecture notes
The upstream harness keeps ownership of the agent loop, sessions, tools, prompts, and approvals. Avalanche AI adds the intelligence layer above it: domain routing, capability policy, evidence, and verification.
The entire Avalanche runtime is a single cordis.patch.yml over dsh-base, registered as PROFILE_TEMPLATES.avalanche. Seven domains are rows in the same composition — never separate processes or profiles.
Routing is lexical, not model-based. The same objective always produces the same plan, and the matched keywords are inspectable in the task record.
Nothing in the Avalanche layer names a provider. The orchestrator reads the current model selection and passes it to agents.create; any adapter or local model works.
$ dsh --profile avalanche doctor
7 domains · 3 networks · 5 tools · 6 rules · 1 verifier
02 / Domains
Every domain is a data package: a name, a summary, routing keywords, a capability set, and a prompt. Adding a domain is a package and one row — not a new runtime.
Smart contracts, subnets, and client applications built on Avalanche.
Smart contract, key handling, and deployment risk review.
Node, validator, RPC, and deployment operations.
On-chain indexing, metrics, and analytics for Avalanche networks.
Consensus, staking, subnets, and Avalanche protocol mechanics.
Test plans, fork tests, fuzzing, and invariant checks.
Liquidity, lending, oracles, and yield mechanics on Avalanche.
Descriptors are data. Routing reads keywords, the orchestrator installs the prompt, and the policy engine judges the capabilities its tools declare.
03 / Lifecycle
The fixed lifecycle is the contract. Every task crosses it in order, and every stage leaves a record that can be inspected afterwards.
The objective becomes an IntentSpec: action, capabilities, constraints, expected outcomes, and risk. Recorded before any decision.
In this buildRules are unioned and the strictest verdict wins. Unknown capabilities are denied. Risk understatement is denied.
Policy-enforcedDeterministic keyword routing selects up to maxSteps domains. The same objective always produces the same plan.
In this buildEvery call crosses the executor-level policy gate before dispatch. The tool catalog is the only registration path.
In this buildEmpty by construction for read-only capabilities. chain:simulate is reserved for the Phase 3 fork simulator.
Later phaseA require-approval verdict parks the task. Approvals are fingerprint-bound, single-use, and cannot be overwritten.
Policy-enforcedRead-only tool execution in this phase. Write, sign, and infrastructure execution are absent by design.
In this buildThe chain-id verifier compares what the endpoint reports with the registered descriptor. Unknown means unverifiable — never verified.
In this buildA SHA-256 digest over canonical JSON, appended to the hash-chained ledger. The receipt carries a fixed disclaimer.
In this buildReceipt disclaimer / Attests that this action passed policy evaluation and that the referenced evidence records are unmodified. It does not attest that model reasoning, generated code, or operator intent was correct.
Full stage map04 / Security
The model is untrusted. Policy is enforced in the executor pipeline — after tool lookup and before dispatch — for every caller, not as a prompt instruction or a UI state.
Every tool declares a risk profile and a capability set. Unknown capabilities are denied; understated risk is denied; the gate fails closed when policy is absent.
A require-approval verdict parks the task. Approvals bind to the exact request fingerprint, cannot be decided twice, and cannot be consumed twice.
Every tool result is appended to a SHA-256 hash chain. Receipts digest all content and cite the evidence ids that support them; verifyChain() recomputes every link.
Security invariants enforced by tests
Every capability is explicitly allowed without human review.
05 / Evidence
The ledger is append-only in memory and mirrored to JSONL. Receipts survive restarts, and every digest is recomputed on load.
{
"id": "rcp_01j9f2k4x8",
"taskId": "tsk_01j9f2k3aa",
"intentId": "int_01j9f2k3ab",
"executionId": "exe_01j9f2k3ac",
"action": "read-chain-status",
"risk": "low",
"policy": {
"effect": "allow",
"ruleId": "allow-read-and-generate",
"permissions": ["chain:read"]
},
"evidenceIds": ["evd_01j9f2k3ad"],
"verification": { "kind": "chain-id", "verdict": "verified" },
"disclaimer": "Attests that this action passed policy
evaluation and that the referenced evidence records
are unmodified. It does not attest that model
reasoning, generated code, or operator intent was
correct.",
"digest": "sha256:9f2c…c41a"
}Evidence subscribes to tools/result at the executor. A tool call exists in the ledger because it ran — not because the model said it ran.
Each record carries prevHash and a digest over its canonical body. verifyChain() walks the ledger from genesis and reports the first index that breaks.
A receipt references evidence record ids and a verification verdict. Narrative text from the model never becomes the audit trail.
Known limit / the JSONL mirror is append-only by convention. A writer with filesystem access can truncate the whole file; off-box anchoring is deferred. Receipts are tamper-evident, not tamper-proof.
06 / Roadmap
Phase 0 and Phase 1 are complete and tested. Everything after this line is a plan, not a capability — the site will never present it as shipped.
Fork, audit, 19-package skeleton
Runtime, 7 domains, CLI, receipts
MCP docs surfaces with source labels
Unsigned tx building + fork simulation
Vite + React operator console
Fuji-only signed execution
Semantic memory + metrics worker
External review + release
08 / Tools & networks
The network package exposes 5 catalogued read-only tools over a fixed JSON-RPC allowlist. Mainnet is present as a read-only descriptor; signing and submission are disabled.
avalanche_networksList the Avalanche networks this runtime may read.
avalanche_chain_statusRead the chain id and latest block number reported by one network.
avalanche_balanceRead the native AVAX balance of one address on one network.
avalanche_transactionRead one transaction and its receipt; report pending instead of guessing.
avalanche_contract_codeRead deployed bytecode at one address on one network.
09 / Status
Phase 0 and Phase 1 are delivered and gated. This table mirrors the checks that actually ran; it does not turn a plan into a pass.
pnpm exec vitest run packages/avalanchePASS11 files / 95 testspnpm run typecheckPASS5 / 5 gatespnpm exec oxlintPASS0 diagnosticspnpm run test:docsPASS21 / 21 gatespnpm run docs:buildPASSexit 0 / 5302 fragments resolvedpolicy + executorNONEabsent by design; denied at the gatePhase 7LATERnot claimed07 / Get started
The architecture, threat model, test strategy, and phase report are published in full. Start with the runtime map or run the CLI against a Fuji read-only profile.
$ git clone https://github.com/deepseek-ai/deepseek-harness.git
$ cd deepseek-harness
$ pnpm install
$ pnpm exec vitest run packages/avalanche
expect: 11 files / 95 tests passing
then: dsh --profile avalanche doctor