Skip to main content

Layered operations tree — observe, diff, orchestrate infrastructure as data

Project description

op3 — Layered Operations Tree

AI Cost Tracking

AI Cost AI Model

This project uses AI-generated code. Total cost: $4.0248 with 19 AI commits.

Generated on 2026-06-29 using openrouter/qwen/qwen3-coder-next


Layered infrastructure observation: observe, diff, orchestrate infrastructure as data.

Overview

op3 provides a unified framework for observing hierarchical infrastructure state across multiple layers:

  • Physical Layer: Hardware, displays, network, compute
  • OS Layer: Kernel, configuration
  • Runtime Layer: Containers, compositor
  • Service Layer: Containers, systemd services
  • Endpoint Layer: HTTP endpoints, TCP ports
  • Business Layer: Application health, business logic

Built on fraq's fractal data primitives, op3 enables:

  • Deterministic layer scanning with probe system
  • Format adapters (LESS, migration.yaml, snapshot.yaml)
  • Drift detection between intended and actual state
  • Immutable snapshots with diff capabilities

Installation

pip install op3

Quick Start

from opstree import LayerTree, LinearScanner, scan_device
from opstree.layers.builtin import PhysicalLayer, OsLayer, RuntimeLayer

# Register layers
tree = LayerTree()
tree.register(PhysicalLayer.display)
tree.register(OsLayer.kernel)
tree.register(RuntimeLayer.container)

# Scan a device
def execute(cmd: str):
    # Your SSH/local execution logic
    stdout, stderr, rc = ...
    return stdout, stderr, rc

snapshot = scan_device("pi@192.168.188.109", execute, tree)
print(snapshot.to_yaml())

Format Adapters

from opstree.formats.less import LessAdapter

adapter = LessAdapter()

# Parse LESS to PartialSnapshot
partial = adapter.parse(open("app.doql.less").read())

# Render Snapshot to LESS
less_output = adapter.render(snapshot)

Project Status

Sprint 4 Complete (2026-04-21)

  • ✅ Fixed datetime deprecation warnings (datetime.utcnow() → datetime.now(timezone.utc))
  • ✅ All 26 tests passing with zero warnings

Sprint 5 Complete (2026-04-21)

  • ✅ Added business.health builtin probe
  • ✅ Added CLI layer filtering option (--layers flag)

Sprint 6 Complete (2026-04-21)

  • ✅ Tested op3 with real-world examples from fraq, redeploy, doql
  • ✅ Created examples/ folder with app.doql.less files from all three projects
  • ✅ Enhanced CLI convert command to handle migration.yaml format
  • ✅ All 26 tests passing

Sprint 3 Complete (2026-04-21)

  • ✅ CLI with scan, drift, and convert commands
  • ✅ Builtin probes (service.containers, endpoint.http)
  • ✅ Format conversion between LESS, migration.yaml, snapshot.yaml
  • ✅ CLI integration tested

Sprint 2 Complete (2026-04-21)

  • ✅ Probe contexts (SSH, Local, Mock)
  • ✅ Builtin probes (RPi display, Linux OS, container runtime)
  • ✅ Format adapters (migration.yaml, snapshot.yaml)
  • ✅ Integration tests with mock context (2 passing)
  • ✅ ExecuteResult handling for compatibility

Sprint 1 Complete (2026-04-21)

  • ✅ Layer tree with topological ordering
  • ✅ Builtin layer definitions
  • ✅ Snapshot model with Pydantic
  • ✅ Probe protocol and registry
  • ✅ Linear scanner
  • ✅ Format registry (wraps fraq)
  • ✅ LESS format adapter
  • ✅ Unit tests (16 passing)

Dependencies

  • fraq >= 0.2.15 (core primitives: FraqNode, FormatRegistry, adapters)
  • pydantic >= 2.0
  • pyyaml >= 6.0
  • click >= 8.0
  • jmespath >= 1.0
  • rich >= 13.0

License

Licensed under Apache-2.0.

Status

Last updated by taskill at 2026-04-25 13:41 UTC

Metric Value
HEAD c33adc1
Coverage
Failing tests
Commits in last cycle 20

Documentation and tooling were expanded: changelog generation, markdown output and formatting, a configuration management system, and a code analysis/relationship mapping engine were added. Tests and CLI were adjusted and some refactorings performed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

op3-0.2.6.tar.gz (510.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

op3-0.2.6-py3-none-any.whl (64.3 kB view details)

Uploaded Python 3

File details

Details for the file op3-0.2.6.tar.gz.

File metadata

  • Download URL: op3-0.2.6.tar.gz
  • Upload date:
  • Size: 510.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for op3-0.2.6.tar.gz
Algorithm Hash digest
SHA256 eaa4c25d909300a689157a6198af04b463247682aff771b6a4fd7be1e1c076b8
MD5 0a5843b1f83c3bd740d5e5841fbceae7
BLAKE2b-256 3e108d2c9cf9f0adac64c00953c4d6182849aa017d3419e8c4713b4da8158c40

See more details on using hashes here.

File details

Details for the file op3-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: op3-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 64.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for op3-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 73aacdd2874012dc44ea442c98d6bbc914c0019178e4e4660451ba9436a167d3
MD5 c403771b561c504e75c83482604fad33
BLAKE2b-256 c3f0862a0d90414c30060ac9ed35705c58575c4dd1a3415bd18127b9423949a6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page