Skip to main content

culture-nodes

Culture Nodes is a durable, ledger-native workflow orchestrator for agents, code, services, and people. Workflows are immutable graphs; agents are triggered on their own machines through a provider-neutral protocol; code runs through an external runner boundary; and every result lands in an append-only work ledger where an agent's "done" is a claim, not a fact.

Every node has a contract. Every result has evidence.

See it running

The Run view: the delivery-loop workflow as a live graph, its first node ready

A run is a live graph: solid edges have been walked, dashed edges are still possibilities — and the loops from test.failed and verify.changes_required back to build are domain outcomes on the graph, never engine failures.

The same run in dark mode, following the OS color scheme

Dark mode follows your OS, with the same design tokens the agentculture.org site ships — nothing here invents a sibling aesthetic.

The node detail panel: contract digest, owner, attempts, ledger delta

Click any node (or press Enter on it — the whole canvas is keyboard-operable) to see what it really is: its pinned contract digest, its owner, every attempt, and the ledger records it appended.

The Ledger view: records with authority chips, projections picker

The work ledger is the run's truth: every record carries its authority — proposed renders dashed, confirmed/observed/derived render solid — so an unverified completion claim looks unverified.

The runs list: one line per run — state, workflow digest, created

Everything the UI shows comes from the same /v1alpha1 API the CLI uses, so anything you can see here you can script there.

Quickstart

The complete local system in one command (API + scheduler + worker + PostgreSQL + MinIO, UI embedded):

cd deploy/compose
cp .env.example .env       # dev-only defaults; required — no password ships in the compose file
docker compose up --build  # UI + API on http://localhost:8080

Publish the reference workflow and start a run from the Python CLI front:

export NODES_API_URL=http://localhost:8080
uv run nodes workflow publish examples/delivery-loop/workflow.yaml
uv run nodes run create --workflow <digest> --input examples/delivery-loop/input.json
uv run nodes run events <id>   # follow the live event stream

For Kubernetes, the Helm chart deploys the same system with a migration Job, probes, and worker replicas: 2 by default (multi-pod safety — leases and fencing — is built in):

helm install nodes deploy/helm/culture-nodes

Phase 1 runs authless behind a private network — deploy only on a private cluster/VPC. See the chart's NOTES and docs/guide.md for the full tour, including dev mode and the external-agent story.

What's in the box

  • Go control plane (cmd/nodes, one binary): compiler + nodes validate, a durable engine (fenced claiming, bounded loops, restart survival), the work ledger (agents propose; humans confirm; runners observe; validators derive), transactional outbox, Postgres/SQS queue drivers, scheduler, worker.
  • Actor protocol for external agents — colleague, claude, codex, or anything speaking HTTP/JSON — with a runnable conformance kit (tests/conformance) and a reference bridge (adapters/colleague).
  • Runner boundary for code nodes: AWS Lambda adapter (registry-pinned, IAM-scoped, honest evidence) and a headspace-cli bridge for local dev. No Docker socket ever enters a control-plane container.
  • Web front (web/): the read-only Run and Ledger views above, embedded into the Go binary.
  • Python CLI front (nodes on PyPI): thin, zero-dependency client of the same API.

The full design lives in docs/initial-design/culture-nodes-prd-spec.md; what was built, with evidence, in docs/acceptance.md and docs/deliveries/.

CLI

The Python front's product verbs (workflow, run, ledger, review) are thin API clients; the identity verbs below work offline:

Verb What it does
nodes whoami Report this agent's nick, version, backend, and model from culture.yaml.
nodes learn Print a structured self-teaching prompt.
nodes explain <path> Markdown docs for any noun/verb path.
nodes overview Read-only descriptive snapshot.
nodes doctor Identity invariants + API reachability.
nodes cli overview Describe the CLI surface itself.

Every command supports --json. Results go to stdout, errors/diagnostics to stderr (never mixed). Exit codes: 0 success, 1 user error, 2 environment error, 3+ reserved. The Go binary carries the same contract for its serve / scheduler / worker / all / migrate / validate modes.

Mesh identity

This repo is also a Culture mesh agent: culture.yaml (suffix: culture-nodes, backend: colleague) with the resident prompt file AGENTS.colleague.md, and the vendored guildmaster/devague skill kit under .claude/skills/ (cite-don't-import — see docs/skill-sources.md).

Contributing

See CLAUDE.md for the working conventions: the design ground rules distilled from the PRD, the version-bump-every-PR rule, the cicd PR lane, and the vendored-skills policy.

License

Apache 2.0 — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

culture_nodes-0.7.0.tar.gz (14.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

culture_nodes-0.7.0-py3-none-any.whl (41.6 kB view details)

Uploaded Python 3

File details

Details for the file culture_nodes-0.7.0.tar.gz.

File metadata

  • Download URL: culture_nodes-0.7.0.tar.gz
  • Upload date:
  • Size: 14.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for culture_nodes-0.7.0.tar.gz
Algorithm Hash digest
SHA256 1037a182750e4b441b305cbbf325ed3bae39cdd7379500848cfdb1b2f90e768c
MD5 36c6117642861f484df1f7764dd9bb9e
BLAKE2b-256 adc4e95cc2c69d73ff821f1135f45f6dc173403833f25ce34ae50a20c65e845d

See more details on using hashes here.

File details

Details for the file culture_nodes-0.7.0-py3-none-any.whl.

File metadata

  • Download URL: culture_nodes-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 41.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for culture_nodes-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb18f0748b944e4c4e3f8e072fd07e7013e8c1442e8159fde1a093fc4dbaed21
MD5 8af18e94061b960577715798d5c5d61c
BLAKE2b-256 62d4bc2d0a18e286ad2f7ca7dcdaafd2e3ce77773391c641a9d1e9fd79ffa528

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page