# skift

**One plan for every agent, on every machine.**

Skift holds your work as a graph of nodes and what each one waits on, so "what can be worked on right now?" always has an exact answer. Agents and people add, split, claim, and finish work through the same interface: a command line, an API, or an MCP server.

Skift suits people whose agents run in more than one session or on more than one machine, and who want one plan all of them work from. It needs Linux and PostgreSQL.

## Pages

- [Skift](https://skift.stead.ing/docs.md)
- [Vision](https://skift.stead.ing/docs/vision.md)
- [Core Principles](https://skift.stead.ing/docs/core-principles.md)
- [Domain Model](https://skift.stead.ing/docs/domain-model.md)
- [Architecture](https://skift.stead.ing/docs/architecture.md)
- [Roadmap](https://skift.stead.ing/docs/roadmap.md)
- [CI](https://skift.stead.ing/docs/ci.md)
- [Store the DAG in plain PostgreSQL tables, not a graph database](https://skift.stead.ing/docs/adrs/001-relational-tables-over-graph-database.md)
- [Connect-RPC is the only door, with identity resolved by transport](https://skift.stead.ing/docs/adrs/002-connect-rpc-is-the-only-door.md)
- [Artifacts are content-addressed: managed blobs plus external references](https://skift.stead.ing/docs/adrs/003-artifacts-are-content-addressed.md)
- [Authorization by embedded OPA and Rego policy](https://skift.stead.ing/docs/adrs/004-embedded-opa-authorization.md)
- [Align with A2A: a skift node maps to many A2A tasks, one per lease](https://skift.stead.ing/docs/adrs/005-a2a-alignment.md)
- [Provenance is not client-assertable, and the store never confers authority](https://skift.stead.ing/docs/adrs/006-provenance-not-authority.md)
- [Core tech stack: Go, buf, sqlc, goose, pgx, Ginkgo](https://skift.stead.ing/docs/adrs/007-core-tech-stack.md)
- [Short enum names are the JSON wire form, through one derived codec](https://skift.stead.ing/docs/adrs/008-short-enum-names-on-the-json-wire.md)
- [The default gate policy is a notification channel, not a safety boundary](https://skift.stead.ing/docs/adrs/009-the-default-gate-policy-is-notification.md)
- [Parking work is a hold on the graph, not a status and not orchestrator configuration](https://skift.stead.ing/docs/adrs/010-hold-is-eligibility-not-status.md)
- [Claims and reads select nodes by one filter, across every project](https://skift.stead.ing/docs/plans/2026-09-21-skift-1.md)
- [The built skift is published to GHCR on every push to main](https://skift.stead.ing/docs/plans/2026-09-22-skift-2.md)
- [Sprint: prove the bet](https://skift.stead.ing/docs/plans/2026-09-prove-the-bet.md)
- [METR and Redwood investigation of the OpenAI / Hugging Face incident](https://skift.stead.ing/docs/research/metr-openai-hugging-face-incident-2026.md)
- [Retrospective: the first build](https://skift.stead.ing/docs/retrospectives/2026-09-05-first-build.md)

## For agents

- [llms.txt](https://skift.stead.ing/llms.txt): the short map of this site
- [llms-full.txt](https://skift.stead.ing/llms-full.txt): every page in one file
- [Steading](https://stead.ing/): the platform this project is part of
