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
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 (18), 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.10.1
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.10.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| onepipeline_api_cli-0.10.1-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.10.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| onepipeline_api_cli-0.10.1-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| onepipeline_api_cli-0.10.1-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 53.2 MB
Release files / onepipeline_api_cli-0.10.1-py3-none-win_amd64.whl
| Download URL | onepipeline_api_cli-0.10.1-py3-none-win_amd64.whl |
|---|---|
| Size | 11.6 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
27aca2133939c12c3f292c146a0d05e97326ccd0f4dc7942dde5bb807196f8fb
|
|
BLAKE2b-256 checksum How to use checksums |
4763c343a990504b12ab2ad19d6d328e29050f95135911c2766127ae6f5d5dee
|
| 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.10.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | onepipeline_api_cli-0.10.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 10.9 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
8ddc31f1b483782eb6266b300017bed7be28e66bd9b45ec37750af2c95f9e698
|
|
BLAKE2b-256 checksum How to use checksums |
46345fb168fd22630ceac7733dd4557ad08927cc1f1f15821e4c8c6c266a9ab8
|
| 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.10.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | onepipeline_api_cli-0.10.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 10.1 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
6154622aac8eb2c769333789c0908fb490ed9bd20334999bb83e2a32904d7dbe
|
|
BLAKE2b-256 checksum How to use checksums |
3cbe951a680aca94ccb0543efd9ec6023ee9271d46ace5e1de738428ea08c862
|
| 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.10.1-py3-none-macosx_11_0_arm64.whl
| Download URL | onepipeline_api_cli-0.10.1-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 9.9 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
dab14bf4240cbfdabf80a97fe2179ed68946b0850bf6e02429b4e72315db6dcf
|
|
BLAKE2b-256 checksum How to use checksums |
3daf5988e4511a6c03574704281e1bddddcb7349577eb302e1d8116762e8ecda
|
| 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.10.1-py3-none-macosx_10_12_x86_64.whl
| Download URL | onepipeline_api_cli-0.10.1-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 10.6 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
541b9f8a23b6c5968706d5159ad321c6566a7b4e17c9d92d0d1efaea19f75cda
|
|
BLAKE2b-256 checksum How to use checksums |
7c60379593c081660c9aaf35697d7fd3ad43f7581a1f8fdbb0347cc109581731
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|