Plato Engine Block — a sub-400-line room runtime for agent-space interaction.
Foundation types and mesh registry for the PLATO (Protocol for Layered Agent Tile Orchestration) ecosystem. Zero external dependencies — everything else builds on top.
pip install plato-corefrom plato_core import TrainingTile, TileType, content_hash, LamportClock
# Create a tile — the atomic unit of work in PLATO
tile = TrainingTile(
tile_id="chk-001",
tile_type=TileType.CHECKPOINT,
name="my-model-v1",
)
# Lamport clock for causal ordering across distributed rooms
clock = LamportClock()
tile.lamport = clock.tick()
# Content-addressable hash (SHA-256)
h = content_hash(b"some weights data")
print(h) # 64-char hex stringPLATO rooms auto-discover each other through the mesh registry. Any installed package that declares an entry point is found automatically:
from plato_core import MeshRegistry
registry = MeshRegistry()
matchers = registry.get_matchers() # from plato-matcher
compressors = registry.get_compressors() # from plato-compress
trainers = registry.get_trainers() # from plato-training- Add
plato-coreas a dependency - Declare an entry point in
pyproject.toml:
[project.entry-points."superinstance.plugins"]
my-plugin = "my_package._mesh:register"- Implement the register function:
# my_package/_mesh.py
def register(registry):
registry.register("matchers", "my_matcher", lambda: MyMatcher)That's it. The mesh finds it automatically.
Tiles are the atomic unit of work — signed, content-addressed artifacts that flow between rooms. Every tile has a lifecycle (Active → Superseded → Retracted) and a Lamport timestamp for ordering.
Rooms are agents. Each agent is a PLATO room that produces and consumes tiles. Rooms discover each other through the mesh registry.
Lamport clocks provide causal ordering without a central coordinator. When two rooms exchange tiles, they merge clocks — enabling distributed ordering.
TrainingTile,TileType— tile data modelTileLifecycle— Active / Superseded / RetractedLamportClock— distributed causal orderingTrainingConfig,AdapterConfig,TrainingMetrics— ML config typescontent_hash()— SHA-256 content addressingMeshRegistry— auto-discovery of ecosystem packages
plato-core (this) ← base types + mesh registry
├── plato-types ← protocol-level type definitions
├── plato-training ← training rooms, micro models
├── plato-mcp ← MCP server (expose rooms as tools)
├── plato-matcher ← semantic matching
├── plato-compress ← compression / quantization
└── ... ← any future PLATO package
- Mesh Architecture — how the registry and auto-discovery work
- docs/README.md — full documentation index
Plato Core is the Python foundation layer of the broader PLATO ecosystem:
| Component | Language | Repo | Focus |
|---|---|---|---|
| Python Core ← you are here | Python | plato-core | Foundation types, mesh registry, training tiles |
| C Reference | C99 | plato-engine-block-c | Embedded, bare-metal, zero heap alloc |
| Rust (Original) | Rust | plato-engine-block | no_std + alloc, builder pattern, tokio server |
| Elixir/OTP | Elixir | plato-engine-block-elixir | BEAM supervision trees, fault tolerance, hot reload |
| Zig | Zig | plato-engine-block-zig | Comptime ternary packing, cross-compile |
| Runtime Kernel | Rust | plato-runtime-kernel | Spatial model: tensor grid, batons, assertion traps |
| Server | Python | plato-server | Knowledge tiles, fleet sync via Matrix, HTTP API |
Specs & Guides:
- plato-types — Core tile protocol types (this package re-exports them)
- plato-training — Training rooms and micro models
- plato-mcp — Expose PLATO rooms as MCP tools
- cocapn-plato — Full Cocapn PLATO integration (SDK + server)
- plato-room-musician — Sonify fleet activity via MIDI
- cocapn-glue-core — Binary wire protocol for fleet communication
- penrose-memory — Aperiodic memory palace for AI agents