Skip to main content

strato

The agent OS — the stratosphere layer, the stable contract above tropo's churn. If tropo is what's true, strato is how an agent works over it: a per-turn loop, one visible state surface, human gates, and the self-improvement that compounds across sessions.

strato is throughline and flywheel fused — they are one loop at two speeds:

  • Per turn (throughline): Ask → retrieve → act → verify → learn → gate, the FW/WS/PRIV/VS/Gate grammar, the visible State Surface, human gates.
  • Per heartbeat (flywheel): distill what the loop learned into durable memory, a bug-risk playbook (self-healing), and skills extracted on a workflow's third occurrence; audit workspace hygiene.

Design law: strato must be tiny to load. The only always-on file is STRATO.md; templates load once at bootstrap, module index.md files route progressively, and the procedures load on demand from the skill. One fact gets one owner; links beat copies.

Layout

Path What it is
STRATO.md The compressed model — the always-on agent OS (read this)
templates/ A workspace's starters: AGENTS.md, SOUL.md, USER/MEMORY/STATE templates, bug-risk-playbook.md
.claude/skills/strato/ The executable: bootstrap / heartbeat / self-improve modes
strato.py The opt-in strato decide --governed facade over vivary-core policy
.claude/skills/active-context/ Optional CocoIndex-code sidecar decision/retrieval policy

How it's used

strato is the framework; a workspace is the instance. create-vivary lays the templates down, and the strato skill runs bootstrap, heartbeat, and self-improve. The workspace's own AGENTS.md is distinct from Vivary's root AGENTS.md, which governs agents working on Vivary itself.

The runtime facade is deliberately opt-in:

strato decide --governed --json request.json

It validates the request schema, pinned policy version, core-owned actor and authority class, workspace binding, absolute scope roots bound to the Task Capsule, the capsule's deterministic identifier and body fingerprint, and caller-supplied timestamps before delegating the budget/gate/next-loop decision to vivary-core. The compiler and verifier share the JavaScript-lossless max_claims bound; fabricated capsule IDs, missing compiler-owned fields, malformed task scopes, and non-canonical or numerically lossy capsule values fail closed. Requests, capsule observations, and receipts have a deterministic 300-second freshness window. A verdict is accepted only beside its receipt. A malformed, invalid, altered, or unsafely nested envelope returns a vivary.strato-decision-refusal/v0 document and exit 2; a valid envelope returns vivary.strato-decision/v0, is advisory, and exits 0. Add --strict to exit 1 when core blocks or requests a gate. Unknown fields and non-string Python mapping keys are rejected, so free-form status text cannot impersonate a human gate. Omit --json for a short text summary. The full contract is in the command reference.

Loop literacy — running the loop unattended — is strato's domain too; see the loops skill (.claude/skills/loops/).

Versioning

The vivary-strato Python distribution is at version 0.1.3 and requires vivary-core>=0.2.4. Both shipped in the Vivary Governed Context train. The templates and skills remain bundled by create-vivary, and the runtime package does not duplicate or replace them.

Install from the public index:

python -m pip install vivary-strato

To test a local change instead, install the pair from this checkout without consulting a registry:

python -m pip install --no-deps ./packages/core ./packages/strato

Distilled from throughline + flywheel (Jeff's own repos, used read-only). Not a verbatim copy — the overlap (duplicate memory templates, gates, proactivity rules) is collapsed into one model.

Release files for vivary-strato 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vivary-strato 0.1.3
File Size Uploaded
vivary_strato-0.1.3.tar.gz 8.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vivary-strato 0.1.3
File Interpreter ABI Platform
vivary_strato-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 16.8 kB

Release files / vivary_strato-0.1.3.tar.gz

Download URL vivary_strato-0.1.3.tar.gz
Size 8.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c591cce1c357f795f5faa2e0a61f6780452081d6a133ec300a491ab354d42969
BLAKE2b-256 checksum
How to use checksums
b9f9e9b5dd7b0cdceff938bb66a991ba346c417a98d9a3d7c5b9a6100d18d242
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / vivary_strato-0.1.3-py3-none-any.whl

Download URL vivary_strato-0.1.3-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b2b90a7d316c3dae17742fb8ec7439ddaad76ca4a1744f628468f58444ee19d3
BLAKE2b-256 checksum
How to use checksums
e3dc56a51a1a4230ba2ecce62ff1120f96f2e6c4c6aebb500c411609fc72c4b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release 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