* feat(hands): add devteam hand -- autonomous software development team Multi-agent hand with 7 roles (PM, Architect, Frontend, Backend, DevOps, QA, Designer) and 3 team size tiers (simple/standard/full) for different project scales. PM coordinator auto-scans GitHub issues, triages, assigns tasks to specialists, and tracks progress on an in-memory project board. * refactor(hands): slim devteam to 3 agents (PM + Engineer + QA) 7 agents with serial agent_send = massive token waste and info loss at every handoff. Merge architect/frontend/backend/devops into one Engineer with full context. Keep QA separate for independent verification. Drop designer. Tiers: lite (PM + Engineer) and standard (PM + Engineer + QA). * fix(hands/devteam): fix workspace isolation and git workflow gaps - PM uses GitHub API for code browsing, no repo clone needed - Engineer explicitly clones repo, branches, commits, pushes, creates PR - QA explicitly clones repo, checks out branch under review - PM tracks last_scan timestamp to filter already-triaged issues - approval_mode now means PR stays open for review, not skip commit * fix(hands/devteam): use shared repo checkout instead of per-agent clones All 3 agents share one checkout at ../shared/repo/. Engineer clones it on the first task; PM and QA read from the same path. Eliminates duplicate clones and cross-workspace visibility issues. * fix(hands/devteam): read issue comments before triaging Comments contain clarifications, reproduction steps, duplicate markers, and resolution status. Also skip already-assigned and wontfix issues. * fix(hands/devteam): fix interactive git add, add merge/close APIs, add fix iteration flow - Replace git add -p (interactive) with git add <specific files> - PM prompt now has explicit merge PR and close issue API calls - Engineer has explicit fix-request handling (same branch, push, no new PR) * feat(hands/devteam): add full GitHub interaction -- PR review, issue comments, labels PM: - Labels issues during triage, comments triage status - Scans open PRs for external review requests - Comments on issues linking merged PRs Engineer: - Replies to review comments on PR after fixing - Reviews external PRs with APPROVE/REQUEST_CHANGES + line comments QA: - Leaves PR review (APPROVE or REQUEST_CHANGES with line comments) - All findings visible on GitHub, not just via agent_send SKILL.md: - Added PR diff, reviews, review comments, reply, merge API references * fix(hands/devteam): enforce English comments, line-level reviews, comment-before-close - All GitHub comments/reviews must be in English (added global rule) - PR reviews must use comments[] with path+line, not body-only - Comment on issue with resolution details BEFORE closing/merging - Improved comment templates with structured info * fix(hands/devteam): 8 logic fixes from end-to-end workflow review 1. Filter PRs from Issues API (pull_request key) 2. PM sends PR number to QA for review 3. Deduplicate PR scanning via devteam_reviewed_prs 4. QA reports test gaps instead of pushing code to shared branch 5. branch_strategy wired into Engineer (gitflow branches from develop) 6. approval_mode: ON = wait for human, OFF = auto-merge after QA 7. scan_interval mapped to schedule_create every_secs 8. git checkout -B instead of -b to handle existing branches * fix(hands/devteam): second-pass review — 6 more logic fixes 1. Engineer extracts PR number from create-PR API response 2. PM falls back to GitHub Contents API when shared repo not yet cloned 3. QA gets external PR review flow (was only on Engineer) 4. PM checks CI status + mergeable before merging 5. PM handles merge conflict (409) by sending back to Engineer to rebase 6. i18n approval_mode description synced with actual semantics * fix(hands/devteam): third-pass — runtime scenarios 1. Deduplicate cron schedule on daemon restart (check schedule_list first) 2. Max 3 review rounds before escalating to user (prevent infinite loop) 3. Clean working directory before switching tasks (git checkout -- . && git clean) 4. Add user direct commands (work on #42, status, review PR #50) 5. Pass tech_stack to Engineer in task delegation 6. Fix duplicate step numbering in Review Cycle * fix(hands/devteam): fourth-pass — state consistency and edge cases 1. QA force-syncs to remote branch (git checkout -B origin/branch) for force-push safety 2. Board sync step: reconcile with GitHub each scan cycle (catch external closes/merges) 3. Prune devteam_reviewed_prs of closed PRs, cap done list at 30 4. PM checks CI before sending to QA (don't waste QA on red builds) 5. Stop/cancel command: remove from board, comment on issue 6. Explicit rebase commands for Engineer (fetch + rebase + force-with-lease) * fix(hands/devteam): fifth-pass — crash prevention 1. Guard empty repo_url: stop and tell user to configure it 2. Add python3 to requires (all JSON parsing depends on it) 3. Engineer git config user.name/email on first clone (prevents commit rejection) 4. Explicit build/lint/test commands per tech stack (Rust/TS/Python/Go/Java/Swift) 5. event_publish on task completion so user gets notified 6. Global rule: check API HTTP status before parsing JSON * feat(hands/devteam): add gh CLI / MCP / curl API three-layer fallback - Add GitHub MCP integration (mcp_servers = ["github"]) - Add gh CLI as optional requirement (preferred over curl) - All 3 agents: gh > MCP > curl priority for GitHub operations - Add issue_tracker setting (github/linear/jira) - Add agent_list to shared tools - SKILL.md: add full gh CLI reference section - i18n: add issue_tracker translation * feat(hands/devteam): full MCP/integration/notification layer MCP allowlist: github, linear, jira, sentry, slack, discord - Sentry: Engineer reads crash reports/stack traces when fixing bugs - Slack/Discord: PM posts status updates (triaged, completed, QA results) - Linear/Jira: alternative issue trackers New settings: notify_channel (none/slack/discord), issue_tracker (github/linear/jira) New optional requires: npx (MCP runtime), SENTRY_AUTH_TOKEN PM prompt: notification section, channel-aware status posting Engineer prompt: Sentry context lookup for bug fixes i18n: added translations for new settings * feat(hands/devteam): workflows, onboarding, knowledge, standup, rollback Workflows (8 integrated): - PM: bug-triage, product-spec, weekly-report, incident-postmortem - Engineer: code-review, test-generation, refactor-plan, api-design - QA: code-review, test-generation New capabilities: - Repo onboarding: first activation analyzes repo structure/stack/CI - Knowledge accumulation: store lessons per issue, detect module hotspots - Daily standup: cron schedule, board summary via notify_channel - Rollback: gh pr revert + postmortem workflow + re-open issue Also: - Added workflow_run to tools, skills = [] (all allowed) - Rewrote README with full architecture, lifecycle, workflow table - PM prompt now has 15 sections covering full lifecycle * feat(hands/devteam): per-agent capabilities, resources, profiles, fallbacks Each agent now has full AgentManifest config (not just system_prompt): PM: - profile: automation - capabilities: web, memory, schedule, knowledge, event, workflow, agent_send - shell: gh, curl, cat, python3 - resources: 200k tokens/hr Engineer: - profile: coding - capabilities: file r/w, shell, web, memory, knowledge, workflow - shell: cargo, npm, python, go, swift, mvn, git, gh, docker, make - resources: 300k tokens/hr, 10 concurrent tools - network: * (needs to push to GitHub) QA: - profile: coding (read-heavy, no file_write) - capabilities: file read, shell (test/lint commands only), web, workflow - shell: cargo test/clippy/audit, npm test, pytest, go test, gh - resources: 150k tokens/hr All agents have fallback_models configured. * feat(hands/devteam): rewrite with proper resource composition First hand to use the new composition features: Agents: - PM: base=planner, capabilities restricted to gh/git shell only - Engineer: base=coder, full shell access, network=* - QA: base=code-reviewer, tool_blocklist=[file_write], test/lint shells only Composition: - base: inherit from agents/planner, agents/coder, agents/code-reviewer - mcp_servers: github (agents interact via MCP, not curl in prompts) - workflows: bug-triage, code-review, test-generation via workflow_run tool - plugins: todo-tracker, auto-summarizer, episodic-memory - per-agent skills: SKILL-pm.md, SKILL-engineer.md, SKILL-qa.md - per-agent capabilities: QA can't write files, PM can't run builds Prompts are clean and focused (role + methodology + principles), not stuffed with curl commands. GitHub interaction goes through MCP tools or gh CLI. * fix(devteam): complete planner methodology in PM prompt Added SCOPE/SEQUENCE/RISK/MILESTONE keywords from the planner base template's methodology into the PM's triage workflow. * docs: update hands README, fix repo_url reference in prompts - hands/README.md: document full composition model (base, MCP, workflows, plugins, per-agent skills, per-agent capabilities) - Updated hand count to 15 (added devteam) - Engineer prompt: clarify repo_url comes from User Configuration, not a template variable - PM prompt: same clarification * fix(devteam): override name/description from base templates Without explicit name, agents inherit base names (planner/coder/code-reviewer) instead of hand-specific names (pm/engineer/qa). This affects display and the prefixed name used in agent registry (devteam:pm vs devteam:planner). * style: format HAND.toml with taplo
LibreFang Registry
Community-maintained content registry for LibreFang — the open-source Agent Operating System.
This repository is the single source of truth for all installable content definitions. Anyone can submit a PR to add new agents, hands, integrations, skills, or provider models — no changes to the LibreFang binary required.
Overview
| Type | Count | Description |
|---|---|---|
| Hands | 14 | User-facing "apps" — agent + tools + settings + dashboard |
| Agents | 32 | Autonomous agent definitions with model config and tools |
| Integrations | 25 | MCP server connections (GitHub, Slack, DBs, etc.) |
| Providers | 49 | LLM provider & model metadata with pricing |
| Models | 339 | Individual model definitions across all providers |
| Aliases | 70 | Short names mapped to canonical model IDs |
| Plugins | 10 | Memory, guardrails, and conversation plugins |
| Skills | 2 | Reusable prompt templates and Python scripts |
| Workflows | 9 | Pre-built multi-agent workflow definitions |
| Templates | 6 | Starter templates for each content type |
Repository Structure
librefang-registry/
├── agents/ # Agent definitions (TOML manifests)
│ ├── hello-world/
│ │ └── agent.toml
│ ├── researcher/
│ │ └── agent.toml
│ └── ... (32 agents)
├── hands/ # Hand definitions (app bundles)
│ ├── browser/
│ │ ├── HAND.toml # Metadata, tools, settings, i18n (6 languages)
│ │ └── SKILL.md # Domain expert knowledge injected at runtime
│ ├── trader/
│ │ ├── HAND.toml
│ │ └── SKILL.md
│ └── ... (14 hands)
├── integrations/ # MCP server integration templates
│ ├── github.toml
│ ├── slack.toml
│ └── ... (25 integrations)
├── providers/ # LLM provider & model metadata
│ ├── anthropic.toml
│ ├── openai.toml
│ └── ... (49 providers, 339 models)
├── plugins/ # Memory, guardrails, and utility plugins
│ ├── episodic-memory/
│ ├── guardrails/
│ └── ... (10 plugins)
├── skills/ # Reusable skill definitions
│ ├── custom-skill-prompt/skill.toml
│ └── custom-skill-python/
├── workflows/ # Pre-built multi-agent workflow definitions
│ ├── code-review.toml
│ ├── research.toml
│ └── ... (9 workflows)
├── templates/ # Starter templates for each content type
│ ├── agent.toml
│ ├── HAND.toml
│ └── ... (6 templates)
├── docs/ # Additional documentation
│ └── content-guide.md # Content contribution guidelines
├── aliases.toml # Global model alias mappings (70 aliases)
├── schema.toml # Provider/model schema reference
├── scripts/
│ └── validate.py # Content validation script
├── CONTRIBUTING.md
└── LICENSE # MIT
Content Types
Hands
Hands are the user-facing "apps" in LibreFang. Each hand bundles an agent, tools, user-configurable settings, dashboard metrics, dependency checks, and i18n translations into a single deployable unit.
Every hand includes a SKILL.md — domain-specific expert knowledge that is injected into the agent's context at runtime, giving it deep expertise in its domain.
| Icon | Hand | Category | Description |
|---|---|---|---|
| 📈 | analytics | data | Data collection, analysis, visualization, dashboards, and automated reporting |
| 🔌 | apitester | development | Endpoint discovery, request validation, load testing, and regression detection |
| 🌐 | browser | productivity | Web navigation, form filling, and multi-step web tasks with user approval |
| 🎬 | clip | content | Turns long-form video into viral short clips with captions and thumbnails |
| 🔍 | collector | data | Intelligence collection, change detection, and knowledge graphs |
| 👷 | devops | development | CI/CD management, infrastructure monitoring, deployment, and incident response |
| 📊 | lead | data | Lead generation, enrichment, scoring, and scheduled delivery |
| 💼 | communication | Profile optimization, content creation, networking, and engagement | |
| 🔮 | predictor | data | Signal collection, calibrated predictions, and accuracy tracking |
| 📢 | communication | Subreddit monitoring, content posting, and engagement tracking | |
| 🧪 | researcher | productivity | Deep research, cross-referencing, fact-checking, and structured reports |
| 🎯 | strategist | productivity | Market research, competitive analysis, and strategic planning |
| 📈 | trader | data | Multi-signal analysis, adversarial reasoning, and risk management |
| 𝕏 | communication | Content creation, scheduled posting, engagement, and analytics |
HAND.toml format:
id = "browser"
name = "Browser Hand"
description = "Autonomous web browser"
category = "productivity"
icon = "🌐"
tools = ["browser_navigate", "browser_click", "browser_type"]
[routing]
aliases = ["browse", "open website"]
weak_aliases = ["web", "url"]
[[requires]]
key = "chromium"
requirement_type = "binary"
check_value = "chromium"
[[settings]]
key = "headless"
setting_type = "toggle"
default = "true"
[agent]
name = "browser-hand"
module = "builtin:chat"
system_prompt = """You are an autonomous web browser agent..."""
[dashboard]
[[dashboard.metrics]]
label = "Pages Visited"
memory_key = "pages_visited"
format = "number"
# i18n — 6 languages supported: zh, ja, ko, es, fr, de
[i18n.zh]
name = "浏览器 Hand"
description = "自主网页浏览器"
category = "生产力"
[i18n.zh.settings.headless]
label = "无头模式"
description = "在后台运行浏览器"
Agents
Agent definitions describe autonomous agents with model configuration, tools, capabilities, and routing aliases.
name = "hello-world"
description = "A friendly greeting agent"
module = "builtin:chat"
[model]
provider = "default"
model = "default"
system_prompt = "You are a helpful assistant."
[capabilities]
tools = ["web_search", "file_read"]
32 built-in agents: academic-researcher, analyst, architect, assistant, code-reviewer, coder, customer-support, data-scientist, debugger, devops-lead, doc-writer, email-assistant, health-tracker, hello-world, home-automation, legal-assistant, meeting-assistant, ops, orchestrator, personal-finance, planner, recipe-assistant, recruiter, researcher, sales-assistant, security-auditor, social-media, test-engineer, translator, travel-planner, tutor, writer
Integrations
Integration templates define MCP server connections with transport configuration, required environment variables, and setup instructions.
id = "github"
name = "GitHub"
category = "devtools"
[transport]
type = "stdio"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
[[required_env]]
name = "GITHUB_PERSONAL_ACCESS_TOKEN"
is_secret = true
25 integrations across 6 categories:
| Category | Integrations |
|---|---|
| DevTools | bitbucket, github, gitlab, jira, linear, sentry |
| Data | elasticsearch, mongodb, postgresql, redis, sqlite |
| Productivity | dropbox, gmail, google-calendar, google-drive, notion, todoist |
| Communication | discord, slack, teams |
| Cloud | aws, azure, gcp |
| AI Search | brave-search, exa-search |
Providers
Provider files define LLM providers and their models with pricing, context windows, and capability flags. See schema.toml for the full field reference.
49 providers including: Anthropic, OpenAI, Google Gemini, DeepSeek, Groq, Mistral, Cohere, xAI, Together, Fireworks, Ollama (local), LM Studio (local), vLLM (self-hosted), Alibaba Coding Plan, and many more.
339 models with metadata for each: pricing (input/output per token), context window size, capability flags (vision, function calling, streaming), and tier classification.
Aliases
Global model alias mappings in aliases.toml let users reference models by short names:
"sonnet" = "claude-sonnet-4-6"
"gpt4" = "gpt-4o"
"flash" = "gemini-2.5-flash"
"deepseek" = "deepseek-chat"
Models can also define aliases directly in their provider TOML files, which are auto-registered at load time.
Plugins
Plugins extend agent capabilities with memory systems, safety guardrails, and conversation utilities.
10 plugins: auto-summarizer, context-decay, conversation-logger, episodic-memory, guardrails, keyword-memory, sentiment-tracker, todo-tracker, topic-memory, user-profile
Skills
Reusable prompt templates or Python scripts that agents can invoke.
[skill]
name = "meeting-agenda"
description = "Generate a structured meeting agenda"
[runtime]
type = "promptonly"
[prompt]
template = "Create a meeting agenda for: {{topic}}"
Workflows
Pre-built multi-agent workflow definitions in workflows/<name>.toml orchestrate multiple agents for complex tasks.
9 workflows: brainstorm, code-review, content-pipeline, content-review, customer-support, data-pipeline, research, translate-polish, weekly-report
Templates
Starter templates in templates/ for creating new content. Copy a template to get started quickly:
cp templates/agent.toml agents/my-agent/agent.toml
cp templates/HAND.toml hands/my-hand/HAND.toml
6 templates: agent.toml, HAND.toml, integration.toml, plugin.toml, provider.toml, skill.toml
See also docs/content-guide.md for naming conventions and contribution guidelines.
Usage
Install from Registry
# Update all registry content
librefang catalog update
# Install a specific hand
librefang hand install browser
# Install a specific integration
librefang integration install github
Custom Local Content
Create custom content locally without submitting to this registry:
# Custom agent
mkdir -p ~/.librefang/agents/my-agent
# Edit ~/.librefang/agents/my-agent/agent.toml
# Custom model aliases
# Add to ~/.librefang/model_catalog.toml
Validation
python scripts/validate.py
Validates all content files for correctness: required fields, valid types, non-negative costs, no duplicate IDs.
Contributing
- Fork this repository
- Add or edit content in the appropriate directory
- Run validation:
python scripts/validate.py - Submit a Pull Request
See CONTRIBUTING.md for detailed instructions for each content type.
License
MIT License. See LICENSE.