settld
v0.2.8
Published
Settld kernel CLI and local control-plane tooling
Downloads
1,409
Readme
Settld
Settld is verify-before-release receipts for delegated autonomous work: verify what happened, retain audit-ready evidence, and settle outcomes deterministically.
Wedge (current): an x402-style gateway that turns HTTP 402 into hold -> verify -> release/refund, with deterministic receipts. Default posture is strict: hold 100% until PASS; refund on FAIL. Optionally require an Ed25519 provider signature over the upstream response hash.
What you get in this repo:
settldCLI for bundle verification + a conformance pack (CI / audit evidence)- Runnable Node.js prototype (API + agent simulator)
- Protocol + product docs (schemas/specs, trust anchors, warning codes, etc.)
- Positioning and go-to-market narrative:
docs/marketing/agent-commerce-substrate.md
10-minute Demo: Verified Receipt (x402 Verify-Before-Release)
Prereqs: Node.js 20+.
npm ci && npm run quickstart:x402By default the script keeps services running until you press Ctrl+C.
If you already ran npm ci in this repo, you can skip it:
npm run quickstart:x402To run once and exit (CI-friendly):
npm ci && SETTLD_QUICKSTART_KEEP_ALIVE=0 npm run quickstart:x402Success: prints OK, a gateId=..., and a gateStateUrl=....
Next: docs/QUICKSTART_X402_GATEWAY.md
If you tried and failed:
- Run
./scripts/collect-debug.shand open a GitHub issue using the "Quickstart failure" template: https://github.com/aidenlippert/settld/issues/new?template=quickstart-failure.yml
The core mental model in this repo:
- Jobs are state machines: a job moves through explicit states (booked → executing → completed/aborted → settled).
- Everything else is events: every transition and operational action emits an event that can be replayed.
- Trust is a black box: telemetry/evidence are append-only, hash-chained, and (optionally) signed.
- Money is a ledger: every settlement is double-entry and must always balance.
Bundle verification (CI / audit evidence)
- Overview:
docs/OVERVIEW.md - Quickstart:
docs/QUICKSTART_VERIFY.md - Kernel v0 quickstart (local dev stack + conformance + explorer):
docs/QUICKSTART_KERNEL_V0.md - Kernel v0 product surface (enforced vs not enforced):
docs/KERNEL_V0.md - Kernel Compatible policy + listing format:
docs/KERNEL_COMPATIBLE.md - Producer bootstrap:
docs/QUICKSTART_PRODUCE.md(trust → produce → strict verify) - SDK quickstart (first verified run):
docs/QUICKSTART_SDK.md - SDK quickstart (Python):
docs/QUICKSTART_SDK_PYTHON.md - x402 gateway quickstart (verify-before-release wedge):
docs/QUICKSTART_X402_GATEWAY.md - Integrations (GitHub Actions templates):
docs/integrations/README.md - Protocol contract (schemas/specs):
docs/spec/README.md - Conformance pack (portable oracle):
conformance/v1/README.md - Audit packet generator:
npm run audit:packet(seedocs/RELEASE_CHECKLIST.md) - Support / filing bugs:
docs/SUPPORT.md
Quick start
Agent host onboarding (Codex / Claude / Cursor / OpenClaw), with guided wallet + policy setup:
npx -y settld setupDefault interactive flow is now login-first:
- pick host + wallet mode
- choose
quicksetup (recommended) - login with OTP (creates tenant if needed)
- setup mints runtime API key automatically
- guided wallet fund + first paid call check runs
Advanced mode is still available in setup when you need explicit base URL/bootstrap/API-key control.
Preflight-only check (no host config write), with JSON report:
npx -y settld setup --preflight-only --report-path ./.tmp/setup-preflight.jsonIf you prefer global install:
npm install -g settld
settld setupCheck wallet wiring and funding path:
settld login
settld wallet status
settld wallet fund --open
settld wallet fund --method transfer
settld wallet balance --watch --min-usdc 1Hosted top-up (recommended): configure Coinbase Hosted Onramp on the backend so settld wallet fund --open launches funding directly:
export MAGIC_LINK_WALLET_FUND_PROVIDER='coinbase'
export MAGIC_LINK_COINBASE_API_KEY_VALUE='organizations/<org_id>/apiKeys/<key_id>'
export MAGIC_LINK_COINBASE_API_SECRET_KEY='-----BEGIN EC PRIVATE KEY-----\n...\n-----END EC PRIVATE KEY-----'
export MAGIC_LINK_COINBASE_PROJECT_ID='<project_id>'
export MAGIC_LINK_COINBASE_DESTINATION_NETWORK='base'
export MAGIC_LINK_COINBASE_ASSET='USDC'
export MAGIC_LINK_COINBASE_FIAT_CURRENCY='USD'Legacy setup wizard (advanced / old flags):
settld setup legacyStart the API:
PROXY_OPS_TOKEN=tok_ops npm run dev:apiOr start the full local dev stack (Postgres + MinIO + API + receiver + finance sink):
./bin/settld.js dev upDeveloper helper flow (recommended for local Neon/PG usage):
npm run dev:env:init
# edit .env.dev once (DATABASE_URL, etc.)
npm run dev:startOptional: start local Postgres + MinIO (for STORE=pg and S3-style evidence storage):
docker compose up -dRun the full stack (API + maintenance + receiver + finance sink) via compose profile:
docker compose --profile app up --buildInitialize MinIO buckets (optional; required for S3/MinIO-backed evidence/artifact demos):
docker compose --profile init run --rm minio-initRun the API backed by Postgres:
export STORE=pg
export DATABASE_URL=postgres://proxy:proxy@localhost:5432/proxy
npm run dev:apiUse MinIO for evidence objects (S3-compatible, via presigned URLs):
export PROXY_EVIDENCE_STORE=minio
export PROXY_EVIDENCE_S3_ENDPOINT=http://localhost:9000
export PROXY_EVIDENCE_S3_REGION=us-east-1
export PROXY_EVIDENCE_S3_BUCKET=proxy-evidence
export PROXY_EVIDENCE_S3_ACCESS_KEY_ID=proxy
export PROXY_EVIDENCE_S3_SECRET_ACCESS_KEY=proxysecret
export PROXY_EVIDENCE_S3_FORCE_PATH_STYLE=1Create a job:
curl -sS -X POST http://localhost:3000/jobs \
-H 'content-type: application/json' \
-d '{"templateId":"reset_lite","constraints":{"roomsAllowed":["kitchen","living_room"],"privacyMode":"minimal"}}' | jqRun the agent simulator (registers an executor and runs a sample job lifecycle):
npm run agent:simRun tests:
npm testRun conformance (bundle verification oracle):
./bin/settld.js conformance testRun conformance (kernel control plane, disputes + holdback):
./bin/settld.js conformance kernel --ops-token tok_opsRun local MCP host compatibility checks:
./bin/settld.js doctorNo-clone registry flow:
npx settld conformance kernel --ops-token tok_opsNo-clone release artifact flow (download settld-<version>.tgz from GitHub Releases):
npx --yes --package ./settld-<version>.tgz settld conformance kernel --ops-token tok_opsOps workspaces (HTML):
- Kernel Explorer:
GET /ops/kernel/workspace(requires ops token)
Docs
docs/PRD.mddocs/ARCHITECTURE.mddocs/DOMAIN_MODEL.mddocs/JOB_STATE_MACHINE.mddocs/EVENT_ENVELOPE.mddocs/ACCESS.mddocs/SKILLS.mddocs/TRUST.mddocs/LEDGER.mddocs/SKILL_BUNDLE_FORMAT.mddocs/CERTIFICATION_CHECKLIST.mddocs/THREAT_MODEL.mddocs/INCIDENT_TAXONOMY.mddocs/ONCALL_PLAYBOOK.mddocs/MVP_BUILD_ORDER.mddocs/QUICKSTART_VERIFY.mddocs/QUICKSTART_PRODUCE.mddocs/QUICKSTART_SDK.mddocs/QUICKSTART_SDK_PYTHON.mddocs/QUICKSTART_POLICY_PACKS.mddocs/QUICKSTART_MCP.mddocs/QUICKSTART_MCP_HOSTS.mddocs/ADOPTION_CHECKLIST.mddocs/SUPPORT.mddocs/OPERATIONS_SIGNING.mddocs/KERNEL_V0.mddocs/KERNEL_COMPATIBLE.mddocs/ops/PAYMENTS_ALPHA_R5.mddocs/ops/X402_PILOT_WEEKLY_METRICS.mddocs/ops/ARTIFACT_VERIFICATION_STATUS.mddocs/ops/TRUST_CONFIG_WIZARD.mddocs/integrations/README.md
