STATUS OPERATIONAL RELEASE v0.2.0-beta.1 POSTURE SUPERVISED LAB BETA CHAIN.TIP 7e3a · ed25519 LICENSE APACHE-2.0
v0.2.0-beta.1 · supervised lab beta · python 3.10+

Autonomous netops,
signed at every step.

A deterministic safety harness with a multi-agent reasoning layer on top. Every change is planned, approved with a signed quorum, executed against real devices, and recorded in a tamper-evident evidence chain. The LLM never writes to the network.

# try it in 60 seconds — no Python setup, no venv
$ docker run --rm -p 8080:8080 ghcr.io/cubby-network/platform:latest
✓ cubby.network listening on http://localhost:8080
✓ chain.tip advanced · evidence verified
INTENT VALIDATE SIGN · CAB EXECUTE EVIDENCE
PLAN → SIGN → EXECUTE → CHAIN
The reasoning layer proposes. The deterministic core decides. Every transition is logged, signed, and chained to the previous bundle — production fails closed on a missing signature, a swapped plan, or a simulated adapter.
01 / INSTALL

Three paths

Pick the one that matches your goal. Same platform — different on-ramps.

All three install the same platform. The difference is how much of the build chain you take on. Python 3.10+ for pipx and source paths; Docker has no Python prerequisite.

01 · Try it

Docker

Zero Python setup, zero venv, zero C-extension build failures. Service boots on port 8080. Best for evaluation and the first 30 minutes.

# pull + run
$ docker run --rm -p 8080:8080 \
    ghcr.io/cubby-network/platform:latest

# exec the CLI inside the container
$ docker exec -it <id> cubby smoke

Image is published on every release tag. Pin to a specific version (e.g. :0.2.0-beta.1) for production.

02 · Use it

pipx

Isolated venv, the cubby CLI on your PATH. Best for daily operators with an existing Python toolchain (Nornir, NAPALM, Ansible).

# pipx puts cubby on PATH
$ pipx install cubby-network

# sanity-check what's wired
$ cubby smoke
$ cubby config

Plain pip install cubby-network works too if you'd rather use a venv you already manage.

03 · Build on it

From source

Editable install. Best for plugin authors, anyone writing a new vendor adapter, and contributors who want to land PRs.

# clone + editable install
$ git clone git@github.com:cubby-network/platform.git
$ cd platform
$ python3 -m venv .venv && . .venv/bin/activate
$ pip install -e ".[api,agents,dev]"

See CONTRIBUTING and the quickstart for the lab walkthrough.

02 / WHY

Why this exists

Network changes still break networks.

Three failure modes show up in every postmortem. Cubby is designed backwards from them.

01 / FAILURE MODE

Approval is a ticket, not a signature.

"Approved by lead@" in a CMDB free-text field doesn't survive audit. A reviewer can't prove what plan they actually agreed to. A plan-swap between approval and execution goes undetected.

02 / FAILURE MODE

Evidence is a manual export.

Pre/post snapshots live in an operator's screen buffer, not in a signed record. When a change caused an outage last Tuesday, you're reconstructing from memory.

03 / FAILURE MODE

Copilots drift toward executing.

Every LLM-for-networks product crosses a line where the model starts making decisions the network should only take from a signed operator. That's not a safety boundary — that's how incidents begin.

Cubby's answer: the LLM proposes; the deterministic core decides. Every approval is cryptographically bound to the canonical plan hash. Every stage writes a signed evidence bundle, chained to the previous. The safety boundary is protocol-level — write tools are refused at registration, not at runtime.

03 / WHAT IT IS

A co-worker, not an assistant

The rituals of a network engineer, encoded.

Cubby owns the parts of network operations that don't require physical hands on a device. It snapshots before it plans, validates before it signs, signs before it executes, and verifies before it closes. Nothing about the network changes without a paper trail.

01

Typed change workflows

Access-port VLAN, firewall rule, drift remediation, capacity forecast, incident triage. Each workflow pack declares its own required assertions, allowed verbs, and rollback plan.

02

CAB-signed approvals

Medium- and high-risk changes require a quorum of cryptographically signed approvals bound to the canonical plan hash. Swapping the plan after sign-off fails verification.

03

Signed evidence chain

Every workflow stage writes a signed bundle (HMAC-SHA256 default, Ed25519 in production). prev_sha256 links bundles into a tamper-evident chain.

04

Read-only agent boundary

LLM-backed agents call only read-only tools from their per-role allow-list, gated by a SafetyGate that scans for prompt injection. Write tools are refused at registration.

05

Seven real vendor adapters

Cisco IOS-XE and NX-OS, Arista EOS, JunOS, PAN-OS, Fortinet, Nokia SR Linux. Shared transport layer (Scrapli SSH, SSH-exec, gNMI) so adding a vendor is a contract, not a fork.

06

Fail-closed by default

Policy denial, validation failure, plan-hash mismatch, signature invalidity — every failure mode short-circuits into a FAILED workflow. Nothing silently degrades.

04 / HOW IT WORKS

The eight states

Every change follows the same path.

The workflow state machine is a strict DAG. Each state has a narrow allow-list of legal next states; illegal transitions raise. Every transition is logged, signed, and chained.

01
Normalize
intent → typed
02
Policy
roles · verbs · window
03
Validate
lint · batfish · lab
04
Approve
CAB quorum signed
05
Precheck
live-device readiness
06
Canary
scoped execution
07
Verify
adapter re-poll
08
Close
sign + chain
on failure → ROLLBACK_PENDING → ROLLED_BACK → CLOSED · with the full forward + rollback plan signed as evidence either way
05 / INVARIANTS

What the harness promises

Six promises. Non-negotiable.

Every commit runs the test suite and the security audit that prove these. Production refuses to boot if any of them is unverifiable.

Invariant 01

The LLM never writes to the network.

The tool registry refuses write tools at registration time. Every config change routes through the deterministic workflow with signed approvals.

Invariant 02

Every medium/high-risk change has a signed quorum.

SignedApproval envelopes bind to the canonical plan hash. A rejector quorum symmetric to approvals is required to kill a change — no single veto.

Invariant 03

Every workflow bundle is signed and chain-linked.

chain.tip advances on every write. Chain breaks are reportable. Legacy-key and chain-reset paths are explicit, never implicit.

Invariant 04

Every tool call goes through SafetyGate.

Per-agent allow-lists, injection scanning with Unicode normalization (catches zero-width evasions), and a rewrite contract that cannot expand the privilege surface.

Invariant 05

Every web fetch is provenance-tagged.

Research writes back to the wiki with URL, fetched_at, provider, and confidence. Poisoned hits are dropped by the injection scanner before they land.

Invariant 06

Production refuses simulated plugins.

NETOPS_ENV=production flips the registry to strict mode. Any attempt to register a simulated plugin raises SimulationLeakError before the first request.

1100+
Tests passing
14
Workflow states
7
Vendor adapters
8
Incident-loop agents

Stop writing change tickets. Start signing them.

Cubby is open source, Apache-2.0, and runs on a laptop. Pull the image, point it at a lab, and watch a change pass through eight signed states in under a minute.