All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- CLI integration tests for
darwin run(tests/cli/test_run.py). 15 new tests covering argument parsing (no-args error, help output, documented flags), workload resolution (file path vs inline code, nonexistent-file fallback), flag handling (--substrate, --cost-cap, --timeout, --memory, --language), output formats (--save writes valid JSON, --json emits parseable output), and smoke regression for the file-exists-and-inline-code happy paths. Tests usetyper.testing.CliRunnerwith the underlyingdarwin.run()mocked so they run without Docker or AWS credentials. - New
tests/cli/directory +__init__.pyfor future per-verb CLI test files.
- Test suite total: 388 → 403 passing.
- First-run welcome banner. When a user runs any
darwincommand for the first time after install, an ASCII brand banner prints with the tagline, motto, three starter commands, and links to demo, repo, and docs. Shown once per install via a marker file at~/.darwin/welcomed. Suppressed in non-interactive shells (pipes, scripts, CI) and whenDARWIN_SUPPRESS_WELCOME=1is set. darwin welcomecommand to re-trigger the banner on demand.
- New
render_welcome()andprint_welcome()functions indarwin/agenticcloud/ui.py, reusing the existingBANNER,BRAND_GREEN,BRAND_AMBER, andBRAND_DIMbrand tokens for visual continuity with the attestation cert panel.
- README rewrite shipped to PyPI. v3.0.0 was tagged before the README rewrite landed, so PyPI rendered the v2.0.0 description. v3.0.1 republishes with the full v3.0.0 README (problem-first framing, agent-first audience, 7-verb CLI reference, Python API documentation, MCP setup, architecture, security model, examples, roadmap, software citations).
- Removed unused
# noqa: E402directive flagged by ruff RUF100 indarwin/__init__.py.
No functional changes. No new dependencies. No behavior change in darwin run,
darwin verify, or any other surface.
The verifiable-compute toll-booth. This release introduces the v0.2 attestation schema,
the multi-substrate router, and a clean seven-verb public CLI/MCP surface that mirrors
the Apple-grade darwin.run() agent API.
from darwin import run— one-line agent API. Auto-discovers available substrates, routes to the cheapest one by default, executes workload, returns a cryptographically signed v0.2 attestation.- v0.2 attestation schema at
darwin.cloud/agenticcloud/attestation/v0.2. Adds thevalue_added_serviceblock (cost-cap enforcement, routing decision, identity-signing metadata) on top of the substrate execution receipt. - Multi-substrate routing. Workloads can run on
local-docker,aws-lambda(4 regions),modal, oraws-batch-ec2-spot-v0-us-east-1. The router picks by cost, by explicit substrate, or by capability. Auto-discovery checks credentials and daemon availability at call time. - AWS Batch substrate adapter. Real EC2 Spot pricing via
DescribeSpotPriceHistory, 60-second minimum billing, soft-fail on pricing API unreachability. Substrate identity signed by the hosted Darwin class key. - Engraved-certificate panel. v0.2 attestations render as a Treasury-style
certificate: double-line borders, gold seals (
✦), diamond dividers, motto (SECURITAS · STABILITAS · SIGNUM), and full-center alignment. The cert reads as the receipt agents actually need. - HTML demo page at
/demowith a live signed attestation, downloadable JSON artifact, and three-step verification instructions. - Public v0.2 JSON Schema (Draft 07) at
/.well-known/schemas/attestation/v0.2for self-describing attestations.
darwin/__init__.pyre-exportsrun,Runtime,CostCapExceededfor ergonomic imports.darwin.agenticcloud.runtime_v02.Runtime— auto-discovering runtime that constructs the v0.2 attestation, validates against the schema registry, and signs the outer envelope.darwin.agenticcloud.router— substrate discovery + routing policies (pick_by_cost,pick_by_substrate,pick_by_capability). Short-name resolution (aws-batch→aws-batch-ec2-spot-v0-us-east-1usingAWS_REGION).darwin.agenticcloud.substrate.aws_batch— full AWS Batch (EC2 Spot) substrate adapter with idempotentboto3deploy orchestrator (infra/aws_runner/batch_deploy.py).- Seven top-level CLI verbs:
run,verify,price,list,sign,try,who. - Seven MCP tools mirroring the CLI:
darwin_run,darwin_verify,darwin_price,darwin_list,darwin_who,darwin_history,darwin_stats. infra/bake_demo_attestation.py— bake-time generator for the hosted demo page.- Pre-flight cost-cap enforcement (was in Unreleased). Workloads whose preflight
estimate exceeds
cost_cap_usdare rejected before any sandbox is launched; the rejection is signed. - 79 new tests across substrate adapters, router, runtime, pricing client, schema validation. Total project tests: 388 passing.
darwin runis now the v0.2 entry point. Accepts code-as-string OR file path (heuristic: if the argument exists as a file, read it; otherwise execute inline).- Legacy v0.1
runpreserved atdarwin attest run-v01. darwin substrates demonow executes real substrates by default;--mockpreserves the prior synthetic behavior.- Attestation panel renderer redesigned around the engraved-certificate aesthetic.
SUBSTRATE_KEYLIST_URLupdated tohttps://darwin-agentic-cloud.fly.devuntil DNS fordarwin.cloudis provisioned.- MCP tool surface rewritten from
dac_*prefix todarwin_*. Old tool names removed (breaking change for MCP client configs).
- v0.1-only MCP tools (
dac_run_python,dac_run_node, etc.). Their behavior is preserved via the newdarwin_runtool with optionallanguageparameter.
0.1.0 — initial alpha
- Attestation layer. Ed25519-signed, canonical-JSON-hashed, tamper-evident attestations binding workload spec, execution result, substrate identity, cost, and signer identity.
- Docker sandbox. Memory limits, CPU limits, pids limit, no network, read-only-friendly tmpfs, no-new-privileges, non-root user (65534:65534), all capabilities dropped. Python and Node.js runtimes.
- Runtime orchestrator. Single entry point:
Runtime().run(spec)returns aSignedAttestation. - CLI (
dac):run,attest verify,attest show,keys init,keys show,serve,mcp serve,version. - HTTP server (FastAPI):
GET /healthz,GET /v0/identity,POST /v0/run,POST /v0/attestations/verify. Auto-generated OpenAPI docs at/docs. - MCP server: stdio transport, four tools (
dac_run_python,dac_run_node,dac_verify_attestation,dac_identity). Verified end-to-end with Claude Desktop. - Apache 2.0 license, contributing guide with DCO sign-off, security policy, code of conduct, issue/PR templates.
- 16 attestation tests proving tamper-evidence under every tampering vector (stdout, cost, workload spec, signer key id, public key, signature), JSON round-trip, deepcopy survival, and malformed input rejection.