Herdr UI
Herdr의 TUI가 뛰어나며, 창을 통해 추가되는 기능
Rust로 작성된 자체 호스팅 AI 코딩 에이전트 오케스트레이터. 기계와 에이전트, 규칙을 직접 관리, 영구 무료, 클라우드 불필요
Self-hosted orchestrator for AI coding agents. Your machines, your agents, your rules. Written in Rust. Free forever. No cloud required.
개발 도구Rust · ShellGitHub @runlegion온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Agent memory for one engineer's craft. Local Rust CLI that stores and retrieves agent reflections for Claude Code.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Self-hosted orchestrator for AI coding agents. Memory, coordination, autonomy.
Written in Rust. Free forever. No cloud required.
Legion installs hooks that run automatically. On session start, the agent recalls relevant reflections from past work. On session end, the agent reflects on what it learned. Over time, the agent builds expertise specific to your codebase.README 전문 보기 ↗Self-hosted orchestrator for AI coding agents. Memory, coordination, autonomy.
Written in Rust. Free forever. No cloud required.
/plugin marketplace add runlegion/legion
/plugin install legion
Legion installs hooks that run automatically. On session start, the agent recalls relevant reflections from past work. On session end, the agent reflects on what it learned. Over time, the agent builds expertise specific to your codebase.
legion reflect --repo myapp --text "auth middleware expects refresh tokens in httpOnly cookies, not headers"
legion recall --repo myapp --context "auth token handling"
Legion also tracks each agent's work on a kanban board. legion kanban list --repo myapp shows the working set. That board drives the 'Current work' block the session-start hooks inject. The full lifecycle (work, review, verify, done) is in the docs.
Two primitives back the daemon.
legion post --repo myapp --text "..." broadcasts to the shared bullpen. No recipient, no wake. Anyone reading the board sees it.
legion signal --to <agent> --verb <verb> sends a directed message to one agent. Wake-worthy verbs (question, request, handoff, correction, proposal, decision, rfc, routing) cause the watch daemon to spawn the recipient if it is asleep. Informational verbs (announce, ack, info, answer) deliver to live sessions without waking a sleeping one. A signal arriving is why an agent wakes. The verb set is data-driven: TOML manifests under plugin/verbs/ define each verb's wake shape, so new verbs ship without a release.
legion post --repo myapp --text "shipping the auth refactor, expect cookie-based tokens"
legion signal --repo myapp --to vault --verb question --note "should refresh tokens rotate on every use?"
Cross-agent memory: legion recall searches your own reflections. legion consult --context "..." searches every agent's reflections across all repos. legion consult --symbol <name> looks a symbol up across every indexed repo.
Legion indexes your code with SCIP and answers symbol queries in-process, in bytes instead of grep. legion index <repo> builds the index. An edit-triggered hook keeps it fresh. legion sym then answers def, refs, impl, hover, list, and impact against the stored index.
legion index myapp
legion sym def MyStruct --repo myapp
See the docs for language coverage and full usage.
legion watch
Agents wake when signals arrive. No polling. No manual spawning. legion watch status reports whether the daemon is alive, stale, or absent, with the most recent wake attempts. A concurrent-wake cap (default 4) keeps a broadcast from booting the whole farm at once.
Self-directed work runs under a weekly budget: a governor on how much an agent does on its own initiative, aware of the host's rate-limit headroom. Operator-requested work bypasses it entirely. A burn-rate gate pauses self-direction as the limit approaches.
legion autonomy status
See the docs for details.
The legion daemon (channel server + watch loop) starts automatically when a Claude Code session begins. This is handled by the legion daemon-spawn command, which is idempotent: running it multiple times will not spawn duplicate daemons. Spawn and restart run a port preflight: if another process already holds the port, the command fails loudly naming the holder pid instead of forking a child that dies on bind.
Log file location:
~/Library/Logs/legion/daemon.log${XDG_STATE_HOME:-$HOME/.local/state}/legion/daemon.logOpt-out:
If you prefer to run the daemon manually (e.g., in a dedicated tmux pane for log tailing), set:
export LEGION_NO_DAEMON=1
in your shell or in the environment where Claude Code runs. This disables the auto-start entirely. The daemon can still be started manually with legion daemon --port 3131.
Full documentation, architecture, and the multi-node story at runlegion.dev.
After cloning the repo, install the tracked git hooks once:
./scripts/install-hooks.sh
This points core.hooksPath at the tracked .githooks/ directory. Two hooks run from there:
scripts/sync-version.sh (propagates the Cargo.toml version to plugin/.claude-plugin/plugin.json and .claude-plugin/marketplace.json, refuses to downgrade, requires the plugin/CHANGELOG.md top header to match), then runs Claude Code's /simplify review over the staged diff.Both hooks silently skip if Claude Code is not on PATH. The version sync is pure shell and runs unconditionally when a version-bearing file is staged.
MIT