GitHub - simoneloru/legioni: A portable, maturing team of AI coding agents. My name is Legioni, for we are many. · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
simoneloru
legioni
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>2 Commits<br>2 Commits
bin
bin
defaults
defaults
docs
docs
src
src
.gitignore
.gitignore
LICENSE
LICENSE
README.md
README.md
package-lock.json
package-lock.json
package.json
package.json
tsconfig.json
tsconfig.json
View all files
Repository files navigation
legioni
A team of AI coding agents that coordinates your work and learns from every task.
Requires opencode.
How you use it
# one-time install (needed for promote, install, upgrade-team)<br>npm install -g legioni
cd your-project<br>legioni init # detects stack, compiles agents
Or without installing anything:
cd your-project<br>npx legioni init
Then start opencode and type your task:
opencode<br>@orchestrator add a truncate(text, max_len, suffix='...') function with tests
That's it. The orchestrator plans the work, delegates to specialist agents, and loops until tests pass. You watch.
orchestrator → architect → plan.md<br>→ implementer → code + tests<br>→ reviewer → passes or fails<br>→ test-strategist → edge cases + full suite<br>← done: code is written, tested, and reviewed
After the session, the agents propose lessons from what they learned:
legioni promote # review each lesson, approve or reject<br>legioni install # recompile agents with the approved lessons
Next task, those lessons are active. The team gets better each time.
Tested on real projects
Project<br>Language<br>Tests<br>What happened
Apache Commons Compress<br>Java / Maven<br>1890<br>All pass, reviewer ran real mvn test
Apache Commons Text<br>Java / Maven<br>1890<br>All pass, orchestrator fixed corrupted existing code, reviewer verified
truncate function<br>Python / pytest<br>13<br>Architect's spec had arithmetic errors, reviewer caught them, implementer fixed
slugify + Unicode<br>Python / pytest<br>50<br>Implementer missed Nordic letters, reviewer failed it, implementer fixed on cycle 2. Lesson promoted. Next project, caught on first pass.
What it looks like
$ legioni init<br>Running project recon ... done<br>→ .legioni/project.md<br>Compiling team → opencode agents ... done<br>→ ~/.config/opencode/agent/architect.md<br>→ ~/.config/opencode/agent/implementer.md<br>→ ~/.config/opencode/agent/orchestrator.md<br>→ ~/.config/opencode/agent/reviewer.md<br>→ ~/.config/opencode/agent/test-strategist.md<br>→ ~/.config/opencode/agent/db-expert.md<br>legioni init complete.
On a real project, recon detects your stack:
`"># .legioni/project.md (auto-generated)<br>## Stack<br>- Language: Java<br>- Framework: Maven
## Commands<br>- Build: `mvn compile`<br>- Test: `mvn test`<br>- Targeted test: `mvn test -Dtest=`
After a session, agents stage lesson candidates:
$ legioni promote<br>Reading staged lessons from .legioni/lessons.staging.*.md ...
────────────────────────────────────────────────────────────<br>Role: reviewer Slug: [nordic-char-limitation-in-nfkd]<br>────────────────────────────────────────────────────────────<br>Situation: Reviewing a Unicode normalization implementation<br>that used pure NFKD + ASCII encoding.<br>Decision: Flagged as failure because ø, Ø, æ, Æ have no<br>NFKD decomposition — they get dropped entirely.<br>Why: A manual transliteration table is needed before NFKD.<br>────────────────────────────────────────────────────────────<br>Promote? [y/n/q] y<br>→ Promoted to ~/.legioni/lessons/reviewer/[nordic-...].md
────────────────────────────────────────────────────────────<br>Role: orchestrator Slug: [task-brief-precision]<br>────────────────────────────────────────────────────────────<br>Situation: The codebase had no Hex class — the complete<br>class had to be created from scratch.<br>Decision: Wrote a detailed task brief with acceptance<br>criteria covering null handling and hex alphabet.<br>────────────────────────────────────────────────────────────<br>Promote? [y/n/q] n
Commands
Command<br>What it does
legioni init<br>Setup. Scaffolds team store, picks provider, detects...