legio
A queue-based agentic orchestration engine. Independent library, domain-free:
all domain knowledge lives in patterns (YAML as data) and a tool registry
provided by the consumer. The library never knows about any specific consumer;
validation happens through the in-repo examples (examples/) and external
consumer repositories kept separate (AGENTS.md rule 7).
Quick start
uv run legio server --config examples/transform/legio.yaml --host 127.0.0.1 --port 8000
Then submit and poll status (see docs/CONSUMER_GUIDE.md for the full
walkthrough; the headless transform example boots with no LLM needed).
Docs surface
docs/CONSUMER_GUIDE.md— executable walkthrough: register a tool → write a pattern → configure → boot → submit → status (validated by CI).docs/GLOSSARY.md— canonical definitions for the identifiers and architecture terms.docs/ARCHITECTURE.md— the architecture (read before any work).docs/AGENT_LIFECYCLE.md— the class/instance lifecycle (§4.8) and the three schemas (§4.11).docs/CONTRIBUTING.md— methodology, development flow, review checklist.docs/PLAN.md— the plan and issue roadmap;docs/CONTRACTS/holds the per-issue approved specs.docs/DEPENDENCIES.md— the approved dependency list.docs/JOURNALS/— turn-by-turn journaling; read the latest before working.
Examples
examples/ ships four self-contained, domain-free example nodes — each with
its own patterns/ (Schema 1 YAML), tools.yaml (Schema 3) and legio.yaml
(LEG-017): transform, summarize, extract-and-summarize and
distribute-summary. The same files are exercised by the test suite — drift
breaks the build (LEG-100, no bitrot).
Engine in one breath
The public API never pushes (polling only, next_run_at scheduling): the host
drives runtime.manager.run() one pass per dispatch; each standing agent polls
its own beaver queue; the immutable Schema 2 FlowToken (level_route,
current_index, end_of_level_queue, level, launcher_class,
task_id, branch_id, message_type, payload) travels the routes; the
final result lands on the agent's shared final-result queue and is collected
into the task's outbox record that /status reads. Errors are typed
(legio.errors) and never silent (rule 9); every module logs structured
key=value events under the legio.* tree (rule 11).
Core capabilities (current)
- Schemas: S1 one-spec-per-pattern YAML with mandatory symmetric contracts;
S2 the route token; S3
available_tools(implementation+policy). - Standing agents: atomic
toolandlinguisticagents materialized at boot, and unifiedcompositeagents whose branches reference other agents by name (the composite's output build is the pattern's model, injected as a concrete class); nothing is loaded dynamically at submit time. - Dynamic lifecycle: class/instance verbs (create/enable/disable/destroy), pools as capacity intent, bring-up leaves-first over the served catalog.
- Runtime surface: REST submit/status plus class/instance verb classes over
beaver queues with a client token store;
legio serverandlegio agent <verb>CLI. - Federation: per-node catalogs, roster-based step routing over a beaver routing proxy — peers never widen scope (rule 9).
State
R-0..R-9 core is shipped on the three-schema, decoupled polling engine
(exact per-issue status lives in docs/CONTRACTS/ and docs/JOURNALS/).
R-10 (Hardening & release) is the current track: the LEG-103
audit-hardening series (contract-first slices, all green) and this session's
LEG-100 docs & examples hardening (consumer guide + glossary + example tree)
await maintainer review; LEG-101 (semver, packaging, changelog, tags) and
LEG-102 come next on the release track.
Development
make ci mirrors the CI gate exactly: lint (ruff check) + format check
(ruff format --check) + typecheck (pyright) + full pytest. Convenience
targets: make sync, make lint, make format, make format-check,
make typecheck, make test, make build (LEG-101 wheel/archive), make clean, make tag/make release (maintainer only). Two known gates currently
show the documented baseline debt — ruff format --check (56 files, triage
from Session 108) and the 2 pyright false positives in
tests/test_leg103_slice13_hardening.py; both are tracked in docs/JOURNALS/
and kept separate from per-issue work. Everything in this repo is English
(AGENTS.md rule 1); work is per-issue, contract-first, and every turn ends
with a journal commit.
Developed By
Legio is a collaborative open-source project co-developed by:
- GIA-UH — Grupo de Inteligencia Artificial, Universidad de La Habana
- Syalia S.R.L.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Metadata
Release files for legio 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| legio-0.1.0.tar.gz | 103.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| legio-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 224.7 kB
Release files / legio-0.1.0.tar.gz
| Download URL | legio-0.1.0.tar.gz |
|---|---|
| Size | 103.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e47386b0110e0298ffdb4205e41d08238909e8c6bc8ca216c48c4890498260ba
|
|
BLAKE2b-256 checksum How to use checksums |
6dc8415e1cd6e964b8edcca932c18b37abf37d81a6bcfffc9aafda77ad742303
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.10","id":"oracular","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / legio-0.1.0-py3-none-any.whl
| Download URL | legio-0.1.0-py3-none-any.whl |
|---|---|
| Size | 121.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
835670acdfda7a7f2914ca761d9c10d72b41868912d546c5e2f138b54292c6e5
|
|
BLAKE2b-256 checksum How to use checksums |
f033a68fc5852397ef61785515e01c525d3f84fc57db2cadb860c05c37231817
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.10","id":"oracular","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|