Skip to main content

onepipeline

Execute a task DAG over oneagentgraph and onevcs, merging their event streams into one.

onepipeline is the composition layer. It owns the plan — a dependency graph mixing direct agent nodes, repository lifecycle nodes, and explicit human actions — executes it continuously, dispatching each node the moment its dependencies settle, through a pluggable executor seam, and keeps a live channel open to the planner supervising the run. The agents come from oneagentgraph; the clones, worktrees, gates, and change requests come from onevcs. Dependency direction is one-way: neither sibling depends on this crate.

The public types, traits, config schemas, and CLI surface are the approved contract in docs/contract.md, compiled — and implemented behind it. onevcs is linked and called: sessions, publication, and a session's event stream are library calls, so what a publication did is a typed value rather than a line of prose to parse. oneagentgraph is still run as a CLI, so a build of it that refuses will make the dispatches this crate starts refuse too; the composition layer itself is complete.

Install

pip install onepipeline-cli      # prebuilt binary, no Rust toolchain
npm install -g onepipeline-cli   # the same binary, via npm
cargo install onepipeline        # from crates.io, compiled locally

To install a revision that has not been released yet — which today is every revision, since the crate depends on its siblings by git and a git dependency cannot be published — build it from the repository:

cargo install --git https://github.com/nickderobertis/onepipeline --locked

Prebuilt archives for Linux (x86-64, arm64), macOS (Intel, Apple silicon), and Windows (x86-64) are attached to every release, with sha256 checksums.

What it does

onepipeline start plan.json --heartbeat-interval 1800

start drives the run itself: a node — and each step within a lifecycle node — dispatches the moment its dependencies settle, and settlement triggers integration and publication immediately. No agent is required. The only pauses are decision points: a ready kind: human node, or any surface declared blocking, holds back the subtree that depends on it while every other branch carries on, and clearing it with attest or reply resumes that subtree inside the running loop.

--dag-graph REF attaches an agent graph as an observer — the shipped one is a monitor member that watches the stream and raises what does not line up, plus a resettable-cron check-in member that surfaces a status when nobody has reported one for a while. It never drives the engine. Attached, start returns when the run settles; exit 3 means nothing is driving the run, and onepipeline adopt RUN attaches a fresh driver to the intact ledger.

The planner supervises over the channel:

onepipeline next run-1                                   # read the next surface
onepipeline reply run-1 <<<'{"version":1,"commands":[    # edit the live graph
  {"op":"retry","id":"failed","node":{"id":"retry","task":"..."}}]}'
onepipeline attest run-1 design-approval                 # complete a human action

Every edit is applied or rejected with a reason: reply exits 0 when the reconciler applied it, 1 when it is queued but not yet reconciled, and 2 when it was refused.

Read-only views — runs, status, host, monitor, results, goals, transcript, telemetry — report unread surfaces, driver liveness, and provider health without touching a run. status says what each in-flight node is doing right now, with an event count and an age; transcript RUN [NODE] renders a dispatched turn's tools and its words; telemetry reports what each party spent and where the wall clock went, in eight buckets that sum exactly. Anything nothing in the stack measures is reported absent, never as a zero.

Where a dispatch runs

The executor seam decides. v1 ships the local executor only; the trait and the rules grammar are shaped so a dispatch-server or Kubernetes executor is a config change rather than a code change.

executors:
  - {name: local, type: local, max_load1: 8.0, min_free_mem: 2GiB}
rules:
  - when: {executor_has_capacity: local}
    use: local
  - use: local

Ordered: the first rule whose when holds decides, and a rule with no when is the fallback. A when tests an executor's capacity, the node's own labels (when: {node_label: {persona: reviewer}}), or both — several conditions in one when all have to hold.

Development

just bootstrap   # from a clean clone
just check       # the deterministic gate
just gate        # check + the diff-scoped llmlint tier

just --list is the full command surface. docs/contract-divergences.md records every place the code could not compile the contract exactly as written, and what the planner who owns the contract ruled on each.

License

MIT.

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

onepipeline_cli-0.4.0-py3-none-win_amd64.whl (4.0 MB view details)

Uploaded Python 3Windows x86-64

onepipeline_cli-0.4.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

onepipeline_cli-0.4.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

onepipeline_cli-0.4.0-py3-none-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

onepipeline_cli-0.4.0-py3-none-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file onepipeline_cli-0.4.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for onepipeline_cli-0.4.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 80b80adf64ee69fee08b0bc559e2a527869e788673323c5b5571b886b8298065
MD5 53030d42db1ca2abc84f727e12b6af97
BLAKE2b-256 4b5c3dba4057e22aff680fe066154f95e7c699afcd4c64c26df87b80a43668df

See more details on using hashes here.

File details

Details for the file onepipeline_cli-0.4.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for onepipeline_cli-0.4.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1926309a07c167179eff638d876c9b5c65f930708a791bcb96484c01f089d6e4
MD5 69d504745e36d5b9670cd3b3a06c14dc
BLAKE2b-256 b8c4ce5ffbfcefd8585f1f7ef5aaa25a7be43f88c093d1f5260e735a4e399a79

See more details on using hashes here.

File details

Details for the file onepipeline_cli-0.4.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for onepipeline_cli-0.4.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 349888f53e7ae6f39887aff923756635ce54376f9f3131d8391ae389825baf8a
MD5 55eb60433f471f1223785fd6942c6fa6
BLAKE2b-256 490846315dfce9e236fa8d0d4d6a94dfd8e40bd1ad0ab879b61123d8d837c303

See more details on using hashes here.

File details

Details for the file onepipeline_cli-0.4.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for onepipeline_cli-0.4.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7905a8a42062b97285ab54a2eefde3e50bc1e0add62c5db5e505d61494803fe
MD5 64bfb4b8e8ac06f7650b6e6df10ff712
BLAKE2b-256 44a710cb8474fbb23e5157a43fc1f68cda1cf81b191ff6df7bc7298b5762401b

See more details on using hashes here.

File details

Details for the file onepipeline_cli-0.4.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for onepipeline_cli-0.4.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 305ef4e7fb61c4b6fb598f0d47de78772d9060fc4d01e3d3dc34915fa0a22d6e
MD5 1ae0223ea556cfa8861902a4efc1ad8a
BLAKE2b-256 27381e6c9b5acc470bedbbca5a6abfbb1411531b327ed75ab8ff59b5e4ef677f

See more details on using hashes here.

Release history Release notifications | RSS feed

0.18.3

5 files

0.18.2

5 files

0.18.1

5 files

0.18.0

5 files

0.17.5

5 files

0.17.4

5 files

0.17.3

5 files

0.17.2

5 files

0.17.1

5 files

0.16.4

5 files

0.16.3

5 files

0.16.2

5 files

0.16.1

5 files

0.15.2

5 files

0.15.1

5 files

0.15.0

5 files

0.14.2

5 files

0.14.1

5 files

0.14.0

5 files

0.13.0

5 files

0.12.4

5 files

0.12.3

5 files

0.12.2

5 files

0.12.1

5 files

0.12.0

5 files

0.11.0

5 files

0.10.1

5 files

0.10.0

5 files

0.9.0

5 files

0.8.6

5 files

0.8.5

5 files

0.8.4

5 files

0.8.3

5 files

0.8.2

5 files

0.8.1

5 files

0.8.0

5 files

0.7.5

5 files

0.7.4

5 files

0.7.3

5 files

0.7.2

5 files

0.7.1

5 files

0.7.0

5 files

0.6.3

5 files

0.6.2

5 files

0.6.1

5 files

0.6.0

5 files

0.5.0

5 files

This release

0.4.0 This release

5 files

0.3.1

5 files

0.3.0

5 files

0.2.0

5 files

0.1.15

5 files

0.1.14

5 files

0.1.13

5 files

0.1.12

5 files

0.1.11

5 files

0.1.10

5 files

0.1.9

5 files

0.1.8

5 files

0.1.7

5 files

0.1.6

5 files

0.1.5

5 files

0.1.4

5 files

0.1.3

5 files

0.1.2

5 files

0.1.1

5 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page