Install
The source installer is the recommended starting point. It prepares the TUI, the Python runtime, and their dependencies together, so you do not need to build environments by hand.
git clone https://github.com/linora-u/AgentLoom.git
cd AgentLoom
./install
Open a new terminal after installation, then verify the command from the repository root:
agentloom --version
agentloom --snapshot
The installer:
- installs missing
uvand Bun with their official installers; - creates a locked Python environment under
~/.agentloom/venv; - builds the current-platform TypeScript/OpenTUI binary;
- installs
agentloomandagentloom-tuiunder~/.agentloom/bin; - adds that directory to your shell
PATHwhen a writable shell config exists.
The source installer currently targets macOS and Linux shells. It requires Git and Bash; curl is required only when uv or Bun must be installed.
Rerun ./install to update from source. Once installed, agentloom update
rebuilds from the recorded trusted checkout. --no-modify-path is only an
optional switch that leaves shell configuration unchanged; it is not an update
requirement.
The installed TUI checks that trusted checkout in the background. If relevant
source files are newer than the installed compatible unit, Ctrl+X offers an
explicit whole-product update and safe restart. It never pulls Git or replaces
an active Session silently.
Use a custom install location or leave PATH unchanged when needed:
AGENTLOOM_INSTALL_DIR="$HOME/tools/agentloom" ./install
./install --no-modify-path
Configure Application models
Copy the model template before using TUI chat or running an Agent:
cp config/llm.example.yaml config/llm.yaml
Edit config/llm.yaml and replace the placeholders. Do not commit this file; it is ignored because it contains credentials.
model:
default_model_type: powerful
powerful:
model: "openai/<model-id>"
api_key: "<api-key>"
base_url: "https://<openai-compatible-endpoint>" # optional for OpenAI
tool_choice: "auto"
This file is the single model configuration source for both runtimes.
Application Agents resolve it through Python and their YAML model_type; the
TypeScript Studio adapter maps the same profiles, endpoints, credentials, and
compatible request options into the bundled Studio runtime. /models and
Ctrl+X select a Studio profile from config/llm.yaml without changing any
Application's model_type. Studio startup fails clearly instead of falling
back to an unconfigured ambient model when this configuration is missing or invalid.
Start with the TUI
Run agentloom inside the project you want to inspect, or pass the project explicitly:
cd /path/to/AgentLoom
agentloom
# Inspect another AgentLoom project
agentloom --project /path/to/project
The TUI is an Applications-first control plane. Its independent Studio Agent can inspect the whole project, directly edit the selected Application, show Tool and Diff blocks, validate configuration, request permission to run it, inspect structured evidence, and continue repairing failures.
1. Create or select an Application
Press Enter to send a request. A useful first prompt states the application, roles, inputs, outputs, and acceptance criteria:
Create an Application named release_review.
Use one Supervisor and two Workers for API review and test review.
Choose model types from config/llm.yaml.
Validate it and ask before the first real Run.
The Studio edits files directly in the selected scope and shows the resulting
Diff. It loops through Effective Config, YAML/reference validation, an approved
smoke Run, and structured Run evidence. If real execution is not approved it
must report “configuration validated, not run” rather than claiming completion.
Large model-facing Application detail is deduplicated and paginated at ten
Agents per call. Studio persists Session status, retry, permission,
question, and Task sub-session events; quiet model latency is not treated as a
cancellation signal. Esc remains the explicit manual interrupt.
2. Understand the workspace numbers
The homepage counts directories under applications/, not every expanded
Supervisor and Worker YAML. Global Skills counts root runtime Skills; an
Application's private Skills appear when that Application or Agent is opened.
Use Ctrl+X to search Applications, main Supervisor Agents, Skills,
Schedules, Runs, permissions, models, and commands.
Worker Agents remain inside their Application and main-Agent details instead
of appearing as independent global-search entries.
Application detail shows Effective Config and source attribution for Agent topology, model type, Tools, Skills, permissions, Hooks, MCP, workflow files, validation, Working Revision, and Running Revision. Run detail defaults to an actionable summary rather than raw Events.
3. Permissions and revisions
Application Only is the default. Reads are project-wide, direct writes are
limited to the current Application, and Studio asks for Shell, global, other
Application, or new-path access. Choose 1 once, 2 for this Session, or 3
reject. Full Access is one on/off toggle in Ctrl+X: it can be preset before
selecting an Application and remains active while switching Applications; it
resets on exit. Switching Applications keeps the current Studio memory, while
/new starts a fresh Session. /compact compresses the current Session with
the selected Studio model while preserving task continuity, durable history,
and completed file changes; the Runtime also reports automatic compaction when
the context approaches its limit. Switching is blocked during an active Agent Loop;
wait or press Esc first. Sub-agent execution text remains visible until the
next turn; select TUI text and press Ctrl+Y to copy it.
When the Agent needs a business decision, choose a visible option or type an
answer; separate multiple answers with |.
Each Run pins an application_revision in its manifest. Later edits change the
Working Revision but do not hot-switch a running Agent.
| Action | Command / key |
|---|---|
| Send chat | Enter |
| Start a fresh Studio conversation | /new |
| Compact the current conversation without starting over | /compact |
| Copy selected TUI text | Ctrl+Y |
| Browse commands and global entities | Ctrl+X |
Select a Studio model from config/llm.yaml |
/models or Ctrl+X |
| Refresh the full index | /refresh or r in details |
| Analyze the selected failed Run | a |
| Close detail, reject permission/question, or interrupt the loop | Esc |
See agentloom-tui/README.md for TUI architecture and contributor details.
5. Run schedules explicitly
The TUI can create and manage durable schedules. Automatic firing is a separate foreground service, so closing the TUI never leaves a hidden daemon behind.
agentloom schedules --project /path/to/project serve
Run an existing Agent
To verify the framework without creating a new application, run the included code review example:
uv run loom run applications/ai_quality_analysis/workflows/code_review_agent.yaml
One run creates a receipt under .agentloom/runs/<application_id>/<run_id>/. When checkpointing is enabled, resumable task state lives under .agentloom/checkpoints/<application_id>/<task_id>/.
run_id identifies one attempt and changes after resume. task_id identifies the logical task and remains stable.
How AgentLoom works
AgentLoom treats a multi-agent system as an application, not a loose collection of prompts.
| Concept | Responsibility |
|---|---|
| Supervisor | Decomposes the application task and coordinates Workers and tools. |
| Worker | Owns one specialized role and exposes a typed callable contract. |
| Agent YAML | Defines role, workflow, model type, tools, Skills, Workers, and runtime policy. |
| Python runtime | Handles model routing, generated Worker tools, concurrency, logs, checkpoints, and artifacts. |
This keeps orchestration reusable while leaving deterministic preprocessing, validation, caching, and output writing in normal Python code.
Core capabilities
| Need | AgentLoom provides |
|---|---|
| Build an application from configuration | Direct YAML execution with loom run and optional Python entrypoint generation. |
| Route roles to different models | Per-Agent model_type with credentials isolated in config/llm.yaml. |
| Call an Agent like a tool | Worker agent_function_schema becomes a validated callable function. |
| Process repeated inputs | Fixed or automatic Worker concurrency with .batch(tasks). |
| Extend an Agent | Built-in tools, local Python functions, MCP servers, Claude-style Skills, and explicit Hooks. |
| Recover and inspect work | Run receipts, bounded logs, Shell audit, checkpoint resume, structured events, Web UI, dashboard, and TUI. |
Create an application manually
An application keeps its Supervisor, Workers, prompts, optional tools, and outputs together:
applications/release_review/
├── workflows/
│ ├── release_review_agent.yaml
│ └── worker_agents/
│ ├── api_reviewer.yaml
│ └── test_reviewer.yaml
├── config/system.yaml # optional application overlay
├── sysprompt/ # optional prompt templates
└── README.md
A minimal Supervisor references Worker YAML files:
name: "release_review"
description: "Review an API release and its test evidence."
model_type: "powerful"
tool_call_type: "tool_call"
worker_agents:
- path: "applications/release_review/workflows/worker_agents/api_reviewer.yaml"
- path: "applications/release_review/workflows/worker_agents/test_reviewer.yaml"
workflow: |
Ask both Workers for evidence, reconcile conflicts, and return one release decision.
tools: []
skills: []
max_steps: 12
Each Worker defines the contract that the Supervisor sees:
name: "api_reviewer"
description: "Review API compatibility risks."
model_type: "fast"
tool_call_type: "tool_call"
agent_function_schema:
description: "Review one release request."
inputs:
request:
description: "Release scope and API diff."
required: true
output:
description: "Evidence-backed compatibility findings."
workflow: |
Review the request, cite evidence, and return prioritized findings.
tools: []
worker_agents: []
skills: []
max_steps: 8
Validate the real model types against config/llm.yaml, then run the Supervisor:
uv run loom run applications/release_review/workflows/release_review_agent.yaml
For the complete schema, use the Agent Configuration Reference.
Create an application with a coding assistant
The repository includes agentloom-framework-skill/ for Codex, Claude Code, and other Skill-aware coding assistants.
Ask the assistant to read the Skill before creating files:
Read agentloom-framework-skill/SKILL.md first.
Create an AgentLoom application named <app_name> for this goal:
<task, inputs, outputs, and acceptance criteria>
Create one Supervisor and the necessary Workers under applications/<app_name>/.
Use only model types from config/llm.yaml.
Define every Worker input/output with agent_function_schema.
Validate the YAML, run the application, inspect .agentloom evidence,
and report what passed, failed, or remains limited.
The Framework Skill is development guidance for coding assistants. It is not a runtime Skill and is not auto-loaded by Agent applications.
Architecture
Worker Agents become generated tools. The Supervisor calls them together with normal Python, MCP, file, Shell, search, Git, Codex, or Skill tools.
The runtime owns execution identity and evidence. TUI and other observers read that canonical state instead of guessing status from process output.
Example applications
| Application | Demonstrates |
|---|---|
ai_quality_analysis |
Twelve specialized Workers coordinated into a staged code review. |
unit_test_studio |
A strict pytest generation pipeline with a custom Python entrypoint. |
repo_map |
Deterministic preprocessing, bottom-up Agent analysis, batching, and progress persistence. |
codex_exec_demo |
Local codex exec registered as normal Agent tools with fixed arguments. |
# Repository architecture map
uv run python applications/repo_map/repo_map_app.py /path/to/project \
--output_dir /tmp/repo-map-output
# Pytest generation for selected functions
uv run python applications/unit_test_studio/studio_runner.py \
/path/to/project "src/utils.py:parse_config" \
--output_dir tests/generated
# Local Codex tool example
uv run loom run applications/codex_exec_demo/workflows/use_codex_exec_demo.yaml
CLI reference
| Command | Purpose |
|---|---|
uv run loom run <workflow> |
Run an application. |
uv run loom run <workflow> --output-format jsonl |
Stream versioned lifecycle events. |
uv run loom create <workflow> |
Generate a Python entrypoint. |
uv run loom list-tasks |
List resumable tasks. |
uv run loom dashboard |
Open the terminal task dashboard. |
uv run loom ui |
Open the Web visualization panel. |
uv run loom schedules ... |
Manage durable schedules. |
uv run loom sessions ... |
Search and maintain execution history. |
uv run loom learn review ... |
Trigger Application or Project review. |
uv run loom reviews ... |
Inspect, apply, or roll back review decisions. |
uv run loom memory ... |
Administer curated memory. |
uv run loom feedback submit <run_id> ... |
Attach outcome feedback to a Run. |
uv run loom clean-tasks |
Remove retained checkpoint tasks. |
uv run loom clean-runtime |
Apply configured Run and artifact retention. |
uv run loom migrate-runtime --dry-run|--apply |
Preview or apply legacy runtime migration. |
Run uv run loom <command> --help for the full command contract.
Documentation
| Document | Covers |
|---|---|
| Configuration Overview | Configuration layers, merging, and isolation. |
| Agent Configuration | Supervisor and Worker YAML fields. |
| LLM Configuration | Model types, providers, retries, and caching. |
| System Configuration | Runtime, permissions, execution environments, and tools. |
| Skills Configuration | Skill packages, loading, and policy. |
| Hooks Reference | Direct Hooks, Bundles, events, and execution. |
| Checkpoint Resume | Run evidence, checkpoint layout, and recovery. |
| Self-Learning v6 | History, candidates, review, approval, and promotion. |
| Structured Run API | Python receipts, typed errors, event sinks, and JSONL. |
Development and support
# Framework tests
uv run pytest tests -q
# TUI tests
cd agentloom-tui
bun test
bun run typecheck
- Issues: github.com/linora-u/AgentLoom/issues
- Contact: [email protected]
- TUI upstream provenance and license: agentloom-tui/upstream/README.md
If AgentLoom helps your project, consider starring the repository or contributing a focused example, fix, or documentation improvement.
No comments yet
Be the first to share your take.