Files
librefang-registry/agents
Evan 28ea31b073 chore(agents): drop GEMINI_API_KEY fallback from generic templates (#68)
These 11 templates are the general-purpose ones that don't depend on any
particular model at the primary level (`[model] provider = "default"`).
They also ship a secondary `[[fallback_models]]` block pointing at
`gemini-2.0-flash` with `api_key_env = "GEMINI_API_KEY"`.

That default hurts everyone who doesn't happen to have `$GEMINI_API_KEY`
set — every agent boot logs `WARN Fallback driver 'gemini' failed to
init: Missing API key`, once per turn per agent. The templates that
actually intend to use Gemini as their primary model (analyst, coder,
researcher, code-reviewer, debugger, legal-assistant, data-scientist,
academic-researcher, test-engineer) are left untouched — those
declare Gemini in `[model]`, which is an intentional design choice, not
a hidden fallback.

Users who want a Gemini fallback chain for generic agents can add
`[[fallback_models]]` themselves in `~/.librefang/workspaces/agents/...`
once they've set `$GEMINI_API_KEY`.

Removed from:
  assistant, customer-support, devops-lead, doc-writer, email-assistant,
  meeting-assistant, planner, recruiter, sales-assistant, social-media,
  writer
2026-04-21 20:10:09 +09:00
..

Agents

Autonomous agent definitions for LibreFang. Each agent is a directory containing an agent.toml manifest.

Structure

agents/
├── hello-world/agent.toml
├── researcher/agent.toml
├── coder/agent.toml
└── ...

agent.toml Format

name = "agent-name"              # Must match directory name
version = "0.1.0"
description = "What this agent does"
author = "author-name"
module = "builtin:chat"          # Runtime module

[model]
provider = "default"
model = "default"
max_tokens = 4096
temperature = 0.7
system_prompt = """Behavioral instructions for the agent."""

[metadata.routing]
aliases = ["exact match phrases"]
weak_aliases = ["keyword hints"]

[resources]
max_llm_tokens_per_hour = 100000

[capabilities]
tools = ["web_search", "file_read"]
network = ["*"]
memory_read = ["*"]
memory_write = ["self.*"]
agent_spawn = false

Current Agents (33)

Agent Description
assistant Default conversational assistant
researcher Deep research with web search
coder Code generation and editing
hello-world Friendly greeting agent for new users
... See each directory for details

Adding a New Agent

  1. Create agents/<name>/agent.toml
  2. Ensure name matches the directory name
  3. Run python scripts/validate.py
  4. Submit a PR

See CONTRIBUTING.md for the full guide.