The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the PAIchart MCP Hub listing page.
— source-available: self-host, modify, redistribute; not as a hosted service to third parties.
Across network devices, Terraform, Kubernetes, and observability stacks (Prometheus / Grafana / OpenTelemetry) — on an open MCP hub. Give pAIchart a requirements.md and a topology.json at any fetchable location — and it returns a reviewed low-level design: per-device config, the exact commands that prove it worked, and a rollback. Your team applies it, idempotently and out of band. pAIchart designs and reviews the change; it never applies it.
The LLD is the bottleneck it removes. Producing one today means a senior engineer reading live state across every box, writing config in each vendor's language, and hand-reconciling the values that cross domains. pAIchart does that work as a graph of specialist agents, checks it in three tiers, and hands you one reviewed result to approve. You stop authoring across every system and start approving one package.
Other solutions give you a DAG of tasks. pAIchart gives you a DAG of reviewed changes.
Every node is a domain pipeline of agents harvest live state → design → author → review and every edge carries a value that did not exist until runtime. Legs with no edge between them run in parallel; a dependency edge forces order and hands the real derived value forward.
That's the difference between a graph and a script: the cloud leg authorises exactly the address range the network leg derived, because the cloud leg reads the content the network leg created. There are no pre-defined values in the high level design.
PIPELINE task, not in a separate scheduler you also have to operateTier 1 — arithmetic, in code. Where appropriate pAIchart uses code to do a deterministic check rather than an LLM reviewer's confidence. Every derived value is tagged with a kind, and the engine runs the arithmetic for that kind against the harvested evidence — never against the package's restated copy of it:
cidr — does the derived range cover exactly its declared members? Catches too wide (an already-allocated address swept in) and too narrow (a claimed member falling outside).asn — is the AS number inside the private range, and does the harvested state authorize it? The relation deliberately inverts here: the harvest is the allowlist — an AS number the design sets must be one the devices already run, or one the objective explicitly names.And when a kind isn't implemented, the platform says so. It records the value as not mechanically covered and escalates it to the integration reviewer — it never counts an unchecked value as a passed one. That path is verified end-to-end in VT-14: the reviewer named the uncovered value, traced its provenance, found it had no device config behind it, and blocked over two green legs and its own approval.
Tier 2 — independent reviewers. One per leg against its own contract, plus an integration reviewer across all legs against the shared contract — running the domain's own validators over the composed set (whole-topology Batfish, terraform plan, kubeconform). It consumes those validators; it does not reimplement them.
Tier 3 — the release gate. A deterministic AND: every leg approved AND no containment violation AND any unchecked value carries a benign reason AND the integration reviewer approved AND coverage complete. No confidence number appears in it.
A Tier-1 violation blocks regardless of who approved above it.
Most of this category asks you to trust a demo. We provide 21 verification documents, each stating its expected observables before the run, then recording what actually happened.
See also the ones that went wrong. VT-12: a program self-certified programReleasable: true while shipping an authorization widening. Five tiers passed it, so minimality is now checked in code rather than in prose.
→ Verification pack · every claim linked to its machine record · Protocols · the agent-facing contracts those runs are held against, published verbatim and byte-parity-checked against the platform seed
kubeconform / kustomize build / OPA and we never kubectl diff). Read-only, RBAC-scoped; secret names surface, values never leave the cluster. → example (includes an earned NEEDS-REVISION — the reviewer refusing to approve what it couldn't verify) · second example (a PodDisruptionBudget in three runs — the first package's own gap list became the objective, the reviewer refused the first attempt on availability arithmetic, and the revision was approved for choosing a different field)state pull (no providers launched, no state lock), with validate / plan / tflint / OPA expected-facts and rollback. → example (shows the layered defense: a secret-shaped tag redacted, a prompt-injection tag refused)The harvest step is a Hub call, and the same machinery is open to anyone: register a service, discover it by capability, orchestrate it — with per-user identity and no shared API keys.
In most agent frameworks the orchestration graph is code — it exists only while the run exists. In pAIchart, every node of the DAG is a task: a durable record with status, dependencies, artifacts, and history, in the same delivery plan your team already works in. Programs and pipelines are just typed tasks, so the graph survives restarts, every agent's work is a browsable work item, and an approval gate is a task transition — the same one a human completing a task goes through, over one common code path.
That's also why there is no separate scheduler to operate, and why forensics come for free: the workflow engine is the delivery plan. Ask "which of my POVs are at risk?" and get an answer — no UI required.
pAIchart is a hosted MCP hub configured as a claude connector or ChatGPT app so nothing to install. Point your AI client at the endpoint, authenticate, and state the objective.
https://paichart.app/mcplist_prompts() for every guided workflowTo run a program (DAG), you supply two files at any fetchable location (a GitHub repo works):
| File | What it is |
|---|---|
requirements.md | your HLD — the objective and its constraints, in prose |
topology.json | the devices/targets in scope and how they connect |
Then in an AI client ask to load the 'HOWTO-use-pov-program' prompt or in the GUI create one task, and the graph runs. See lots of examples in the shared pov in the gui or ask to 'list my povs and show me the details' Or start smaller:
Complete install on a fresh Ubuntu 24.04 machine or VM — docs/SELF-HOST-RUN-SHEET.md.
Every command in order, nothing assumed: PostgreSQL 16 and Node 20 installed, the database created, the app
cloned, configured, seeded and started, the first login, an admin account, Claude Code installed and connected
to your hub, and (optionally) services on your own network registered. About 40 minutes, most of it npm ci.
Already have Node 20, PostgreSQL 16 and an empty database? The short form:
APP_BASE_URL, production notesAPP_BASE_URL, and tokens for anyone else's issuer are rejectedThe platform is source-available under the Elastic License 2.0: use it, modify it, self-host it — including commercially, inside your own organisation — and redistribute it; the one thing you may not do is offer it to third parties as a hosted or managed service. This repository carries the full source (web app + MCP server) alongside the protocols and verification pack. The hosted service at paichart.app runs this same code. Server-management tooling (monitors, deploy, backups) is intentionally not part of the repository.
Every external call runs as you, never as a shared platform account — enforced below the agent, so even a prompt-injected agent cannot exceed the permissions of the user who asked.
The Hub's open registry. Device services are different — they're self-provisioned per run from a descriptor and torn down after, so pAIchart never stores your device credentials. The descriptor contract is open: spec + JSON Schema + four production-exercised examples — author one for your own gear and validate it before a run.
| Service | Capability | Per-User Auth |
|---|---|---|
| Snowflake | Data warehouse queries | ✅ External OAuth |
| EIA | U.S. energy data analytics | Service account |
| Weather | Real-time weather data | Service account |
| EODHD | Financial market data | Service account |
| Alpha Vantage | Financial data — 113 tools | Service account |
| Browser Automation | Web scraping, screenshots, PDFs | Service account |
| Notifications | Email, Slack, webhooks | Service account |
| Token Validator | JWT/JWKS integration & trust-level debugging | ✅ Per-user JWT |
Run HOWTO-register-service (list_prompts()) for the walkthrough from basic registration to Grade-A tool schemas, access control, and trust levels.
Register your own in one command:
@paichart/containment-checks — the Tier-1 arithmetic, extracted verbatim as an MIT library with its incident-fixture test suite: mechanical checks for LLM-derived infrastructure values (cidr, asn — extensible by kind), where an unimplemented check reports not mechanically covered, never a pass.https://paichart.app/api/auth/jwkslist_prompts()Device harvesting builds on nornir-napalm-mcp by @sydasif, used under the MIT licence, in a modified form.
mcp mcp-hub mcp-server model-context-protocol dag directed-acyclic-graph multi-agent-orchestration low-level-design hld-to-lld change-synthesis intent-driven human-gated network-automation network-provisioning napalm nornir batfish kubernetes gitops terraform infrastructure-as-code multi-domain-automation verification deterministic-gate autonomous-agents change-management delivery-management pov service-discovery external-oauth jwks rfc8707 per-user-authentication workflow-orchestration claude-desktop chatgpt snowflake