onepipeline-ui
The read API and browser view for onepipeline runs: an axum server wrapping the onepipeline SDK, plus the frontend that reads it.
The contract
docs/contract.md is the source of truth, quoted verbatim
from the task that commissioned this repository. tests/contract.rs reconciles
the code against it, so a route that exists in one and not the other fails the
gate.
GET /healthz
GET /api/v2/runs # list w/ session attribution
GET /api/v2/runs/{run} ?include_conversations=bool
GET /api/v2/runs/{run}/timeline ?scope=run|node&node=ID
GET /api/v2/runs/{run}/conversations/{id}
GET /api/v2/runs/{run}/artifacts/{id}
GET /api/v2/events # SSE; fresh snapshot per connection
GET /api/v2/projects # runs grouped by project, as `onepipeline runs` groups them
GET /api/v2/projects/{project}
GET /api/v2/runs/{run}/channel # the channel, consuming nothing
POST /api/v2/runs/{run}/channel/next # claim the next surface
POST /api/v2/runs/{run}/channel/reply # the envelope's bytes, verbatim; ?correlation=C
POST /api/v2/runs/{run}/channel/surface
POST /api/v2/runs/{run}/attest
POST /api/v2/runs/{run}/stop # as the session `--session` names
POST /api/v2/runs/{run}/adopt # retains this binary as the driver
GET /api/v2/runs/{run}/watch # SSE over `onepipeline watch`
GET /api/v2/unwatched
GET /api/v2/host
GET /api/v2/runs/{run}/status
GET /api/v2/runs/{run}/results
GET /api/v2/goals
GET /api/v2/runs/{run}/goals
GET /api/v2/runs/{run}/transcript ?node=ID
GET /api/v2/runs/{run}/telemetry
GET /api/v2/runs/{run}/agents # every oneharness session the run launched
GET /api/v2/runs/{run}/nodes/{node}/agents
GET /api/v2/projects/{project}/agents # the union over the project's runs
The first seven are the read surface the browser view was written against;
the rest are every verb the onepipeline CLI has once a plan is running,
wrapped — each a thin call into onepipeline::verbs, never a re-implementation
and never the binary. Launching a plan and driving the planning stage are
outside this API; a reply on any run's channel is inside it. The server acts as
one launching session (--session ID, else ONEPIPELINE_LAUNCHER_SESSION),
which is what its stops and adoptions are judged by.
Every successful response carries the schema-version preamble —
api_version, telemetry_schema_version (19), observed_at — with the payload
flattened alongside it. Every failure carries {"error": {"code", "message"}}.
Payloads themselves come from the onepipeline SDK. Anything presentation-worthy lands there first, so the agent reading the CLI sees at least what the human in the UI sees; this crate owns the envelope, not the records.
The view
apps/dag-ui is the DAG Observatory: the browser view of the
same runs, reading nothing but the contract above. It declares no schema, event
name, or API path of its own — packages/dag-model holds the contract's client
half, packages/telemetry-client is the only thing that speaks HTTP, and
packages/dag-layout is the graph geometry. docs/dag-ui.md
is its design record.
Install
Two deliverables, split by what they contain.
The read API, as the same prebuilt binary on three registries:
cargo install onepipeline-ui --locked # from crates.io
pip install onepipeline-api-cli # prebuilt wheel, no Rust toolchain
npm install -g onepipeline-api-cli # prebuilt binary, no Rust toolchain
All three install one command, onepipeline-api:
onepipeline-api serve --runs-root ./runs
The view, as a static bundle on npm alone:
npm install onepipeline-ui # the built frontend under dist/
That package installs no command — it is dist/, to be served statically.
Prebuilt archives and their .sha256 checksums are also attached to every
GitHub Release.
Develop
just bootstrap # from a clean clone
just check # the deterministic gate, every project
just gate # `check` plus the llmlint LLM-judge tier — the pre-push bar
just dag-ui-screens # photograph the view at every viewport into a gallery
just --list is the full command surface. AGENTS.md is the
durable instruction layer for humans and agents working here.
License
MIT. See LICENSE.
Release files for onepipeline-api-cli 0.11.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| onepipeline_api_cli-0.11.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| onepipeline_api_cli-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| onepipeline_api_cli-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| onepipeline_api_cli-0.11.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| onepipeline_api_cli-0.11.0-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 54.4 MB
Release files / onepipeline_api_cli-0.11.0-py3-none-win_amd64.whl
| Download URL | onepipeline_api_cli-0.11.0-py3-none-win_amd64.whl |
|---|---|
| Size | 11.9 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
dc275e8e5a8caefe326e5bc7436c8f9b8aeac0f990d517fe7824cd52b9941bb3
|
|
BLAKE2b-256 checksum How to use checksums |
0dd2c7920e116c554abea577e2b3fa6f452c0e82e3c55f8e34134e1e03b3e0f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / onepipeline_api_cli-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | onepipeline_api_cli-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 11.2 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
af89162f01fb4d3f61e6c90efae4384c6eb510c9f540b2cce459bc58c488fe86
|
|
BLAKE2b-256 checksum How to use checksums |
c814ab43df81f634b93fe31e54e0515843e69444a6d42587572fd9bbaef64906
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / onepipeline_api_cli-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | onepipeline_api_cli-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 10.3 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
d8ae06b0d56d8a5b35072ecabbe3e0a9f3c8d6bc8a08479c194a32c1b5ee762b
|
|
BLAKE2b-256 checksum How to use checksums |
92ee848c447827eadf52e3e4b25b01f7e87447890d0e43ee02e24ef261aa8b44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / onepipeline_api_cli-0.11.0-py3-none-macosx_11_0_arm64.whl
| Download URL | onepipeline_api_cli-0.11.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 10.1 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
1b5916213c800a930633516a70007900675fa89f952728ce1980720a200ca714
|
|
BLAKE2b-256 checksum How to use checksums |
6b6694a9d6dc791adf382e40963ec4353a841d5f0f5b53acc1a0c0344672e2e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / onepipeline_api_cli-0.11.0-py3-none-macosx_10_12_x86_64.whl
| Download URL | onepipeline_api_cli-0.11.0-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 10.9 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
fbcfb75b5f74dee27a76e73f18f68ee66644d54df2ae778d1d8f60392fbbfe57
|
|
BLAKE2b-256 checksum How to use checksums |
a90e28c11c1fa57c40e812e00bde85494ede4a0f3ce24b9ac6b3042309a0eeb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|