plato-core
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.
Install
pip install plato-core
Quick Start
from 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 string
The Mesh Registry
PLATO 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
Registering a Plugin
- 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.
Key Concepts
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.
What's Provided
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
Architecture
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
Documentation
- Mesh Architecture — how the registry and auto-discovery work
- docs/README.md — full documentation index
PLATO Engine Block Family
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:
Related Repos
- 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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file plato_core-0.2.0.tar.gz.
File metadata
- Download URL: plato_core-0.2.0.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b011a4551579d4866e965af463fe5a203b5ec5d8f5ae6bc9799369cbeccc6d9b
|
|
| MD5 |
53311a0706fe486c8f392d9ad02bc13e
|
|
| BLAKE2b-256 |
44f0dbf53dc6d7e9b37acc677faf4e9d6e8f70700e96c1ccdfd4c1f80560f1ff
|
File details
Details for the file plato_core-0.2.0-py3-none-any.whl.
File metadata
- Download URL: plato_core-0.2.0-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14a2dcfbf653d0bcabfdb30fb2d34dc8d5d1179b2d6eb03986d1f428ffd1cf53
|
|
| MD5 |
6b7c6b7ccd54a99c6e6fc8e701971980
|
|
| BLAKE2b-256 |
3d98a4872ba1d12b78e776b3dac833eadc70573193068c5dfccad303d3f7ef1d
|