Lohra
A self-improving AI agent runtime — persistent memory, self-authored skills, and a declarative multi-agent workflow harness with Claude-Code-grade rigor. Runs headless: CLI, structured orchestration envelope, and an OpenAI-compatible server. No UI required.
pip install lohra # Python 3.11–3.13
lohra chat "hello"
Four entry points, none of them a UI
| Port | Command | For |
|---|---|---|
| Human CLI | lohra chat |
you, in a terminal |
| Orchestration envelope | lohra chat --json |
other agents/scripts — one parseable JSON per turn (input/output/reasoning/tool_calls/usage) |
| OpenAI-compatible API | lohra serve |
any OpenAI client becomes a Lohra client |
| WS/REST gateway | lohra dashboard |
optional, only if a UI attaches |
What makes it interesting
- Dynamic workflows as inert data: the agent authors a typed DAG (10 node types —
agent,parallel,pipeline,loop_until_dry,verify,judge_panel,gate,completeness_check,checkpoint, nestedworkflow) that an interpreter runs. No agent-authored code is ever executed; escape is inexpressible, not forbidden. - Failure is never silent: every failure path produces a fault with its cause;
run status is honest (
complete | degraded | failed | cancelled | paused). - Never pay twice: content-addressed per-cell cache — a resumed run replays completed work at zero token cost, across process restarts.
- Human in the loop:
checkpointnodes pause a run until a person answers — in another terminal, another process, another day. Durable state + single-winner leases. - Cost control: token budgets with soft pre-spawn gates, quota pauses with auto-resume, per-node model/effort/provider routing, operator-owned model tiers.
- Self-improving: persistent memory, self-authored skills, and a workflow library that turns clean runs into reusable templates and bad runs into recorded priors.
- Leaf sandbox: filesystem allowlist (ro/rw), egress allowlist, and taint tracking — operator policy, never the spec.
Configuration
State lives in ~/.lohra (or per-workspace via --profile):
.env (API keys) · workflow_policy.json (leaf fs/egress) · workflow_tiers.json
(model tiers). Providers out of the box: Anthropic, OpenAI, OpenRouter, DeepSeek, Groq, Together,
Gemini, Ollama — plus an opt-in subscription mode (see the ToS warning in lohra auth).
Driving Lohra from another agent? lohra skill export use-lohra --to .claude/skills
(or --to .codex/skills) drops the delegation kit — a skill teaching Codex CLI /
Claude Code how to hand Lohra self-contained work through lohra chat --json.
MIT license. Alpha software — built and validated live, but young.
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 lohra-0.0.4.tar.gz.
File metadata
- Download URL: lohra-0.0.4.tar.gz
- Upload date:
- Size: 399.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa00b7d2dabfb2f9618a145bfc331a3d897f7f0bbb91b29f13b111af7ee1c6a8
|
|
| MD5 |
1ef8cb298b0a5660c5ee9b302b08de21
|
|
| BLAKE2b-256 |
30c803c2b36149b509814ea68da860de62e624fe49da42fa876c50e4952394ec
|
File details
Details for the file lohra-0.0.4-py3-none-any.whl.
File metadata
- Download URL: lohra-0.0.4-py3-none-any.whl
- Upload date:
- Size: 289.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74e0da8d2ff72d47273c39096d1ad822219907f2e76712024708df06c0204ae7
|
|
| MD5 |
9f9906d27573c9dce94154fc765ef1af
|
|
| BLAKE2b-256 |
d3996ad43bfcc3818830404a1489ed1c98cd722ac18770ae2a45c26536650aa4
|