@forma-tools

forma-tools

Unified CLI ecosystem for agentic development. 143 tools, 16 collections, always-on daemon. One protocol.

Forma

A unified CLI ecosystem for agentic development.

Forma is a protocol, ecosystem, and agent runtime that standardises CLI tools for consistent behaviour across agentic workflows. 261 tools, 44 AI models, 68 skills, one coherent system.

What It Does

For users: One forma setup and you have an AI agent with 261 tools, a background daemon, and connections to Telegram/Slack/Discord. Ask it to check your invoices, monitor your services, or build you a daily news digest.

For developers: Build CLI tools that work in agentic workflows. Follow the protocol, get discovery, chaining, auth, and AI compatibility for free.

For AI assistants: Discover and invoke tools without MCP overhead. Zero context tokens until a tool is actually called.

Quick Start

# Install
curl -fsSL https://raw.githubusercontent.com/forma-tools/forma/main/install.sh | bash
# Interactive setup (collections, model, personality, workspace)
forma setup
# Chat with your agent
forma daemon chat
# Or from Telegram# (configured during setup)

Architecture

User (CLI / Telegram / Slack / Discord)
│
▼
┌──────────────────────────────────────────────────────┐
│ Forma Agent Engine │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ 44 Models │ │ 8 Built-in │ │ 68 Skills │ │
│ │ 8 Providers │ │ Tools │ │ On-demand │ │
│ │ Zero deps │ │ + CLI Tools │ │ Procedures │ │
│ └──────┬──────┘ └──────┬───────┘ └─────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Agent Loop │ │
│ │ System prompt (personality + context + memory)│ │
│ │ Tool calling → execute → feed back → loop │ │
│ │ Approval gate (3-tier safety model) │ │
│ └──────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 214 CLI Tools (subprocess isolation) │ │
│ │ forma/ (127 Forma CLIs) │ │
│ │ vendor/ (87 vendor CLIs) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

The Protocol

Forma is a specification before it's a toolset. Every CLI in the ecosystem implements the same 33-section contract, and that contract is what lets 261 tools behave as a single coherent system instead of 261 one-off scripts.

<tool><resource><action> [OPTIONS]

One command grammar. One {data, meta} output envelope. stdout for data, stderr for humans — strictly separated. Semantic exit codes (0 success · 2 auth · 3 not found · 4 validation · 5 conflict · 6 rate limit · 7 server). Deterministic auth login/status/logout/use across every tool. Self-describing at every level via --help and describe. Declared safety tier on every mutating operation. Caching with --no-cache and --refresh escape hatches. Pluggable auth backends with typed credentials and migration. Structured JSONL logging with PII redaction. Lockfiles and 7-day dependency quarantine. SemVer discipline with an explicit stability contract.

The 33 sections

#SectionWhat it covers
1PhilosophyCore principles — stdout sacred, stderr human, fail fast, help exhaustive
2Command Architecture<tool> <resource> <action> shape, noun-before-verb, consistent across the ecosystem
3Flags & OptionsStandard flags (--json, --limit, --count, --confirm, --read-only), naming rules
4Output SpecificationThe {data, meta} envelope, UTF-8, deterministic shape, stream separation
5Exit CodesSemantic 0-9 with HTTP mapping: success, auth, not found, validation, conflict, rate limit, server
6Error HandlingError object shape, retry-after surfacing, timeout behaviour, partial-success rules
7Agent SafetyRisk tiers, --read-only mode, confirmation gates, prompt-injection defence
8Help System--help at every level (tool/resource/action), example-first, machine-parseable headers
9Introspectiondescribe and doctor subcommands for capability manifests and health checks
10Skill SpecificationEmbedding multi-step procedures inside tools as loadable skills
11Authenticationauth login/status/logout/use, pluggable backends, profile switching
12Data ConventionsISO-8601 dates, string IDs, currency objects, enum casing, null handling
13Filtering & Pagination--limit, --all, --sort, --count, cursor-based pagination in meta
14Batch & Parallel--batch file input, --workers concurrency, raw passthrough for bulk ops
15CachingTTL-based defaults, --no-cache, --refresh, meta.cache visibility
16Project StructureDirectory layout, pyproject.toml conventions, package naming
17Implementation ReferenceShared boilerplate — error handlers, renderers, HTTP clients, credential wiring
18Testing ProtocolRequired test categories, manual verification checklist, compliance gates
19Anti-PatternsWhat breaks the contract — chatty stdout, colors in pipes, silent failures
20Compliance ChecklistMinimum-viable and complete compliance gates for registry entry
21VersioningSemVer strict, 0.x stability contract, status lifecycle (alpha → stable → maintenance)
22Releases & ChangelogKeep-a-Changelog format, tag conventions, release workflow
23Self-Update<tool> update mechanism, version check, rollback on failure
24Supply Chain SecurityLockfiles required, 7-day dependency quarantine, vulnerability scanning
25README & GitHub ConventionsREADME structure, badges, repo topics, default settings
26Filesystem ConventionsRoot discovery, workspaces, output paths, presets, cache locations
27Registry SpecificationUnified registry schema, collections, entry format, capability declarations
28LoggingStructured JSONL journal, PII redaction on write, retention tiers, event schema
29MCP IntegrationPer-tool MCP server, describe → MCP mapping, auth delegation
30MCP Tool DesignTiered surfaces, materialised views, persona-driven design, capabilities() keystone
31Test ResultsPer-test outcome log, flake detection, history tiers, integration with forma log
32SecurityThreat model, three-layer secrets enforcement, redaction, transport, incident response
33Auth Backendsforma_auth v1.0 — backend protocol, typed credentials, priority chain, migration, rotation

Why this matters

Without a protocol, 261 tools is 261 learning curves. With one, it's a single grammar plus a directory of resources — every hour spent learning Forma amortises across every tool you'll ever use in the ecosystem.

For AI agents, the protocol is the critical substrate. Autonomous tool chaining is impossible when tools disagree about how to report errors, paginate, or authenticate. Forma's contract is what lets an agent pipe tool A → tool B → tool C with full confidence about shapes, exit codes, and failure modes — no schema inference, no error-message parsing, no per-tool adaptation layer.

Full specification: 33 sections with implementation reference, testing requirements, and compliance checklists.


Agent Engine

The agent is model-agnostic with zero external dependencies. Direct HTTP to each provider - no LiteLLM, no middleware.

44 Models, 8 Providers

ProviderModelsRoute
OpenAIGPT-5.4, GPT-4.1, o3, o4-miniDirect API
AnthropicClaude Opus 4.6, Sonnet, HaikuDirect API
Gemini3.1 Pro, 3 Flash, 2.5 Pro/FlashDirect API
GLMGLM-5.1, GLM-5, GLM-4.7Direct (Z.AI Coding endpoint)
OpenRouterDeepSeek R1, Llama 4, Mistral, +300Proxy
OllamaLlama, Qwen, Gemma (local)Local
KimiKimi K2, MoonshotDirect API
QwenQwen Max, Plus, TurboDirect API

Switch models: forma model set gemini-3-flash

8 Built-in Tools

ToolPurpose
forma_read_fileRead files with line numbers
forma_write_fileCreate/overwrite files
forma_edit_fileFind-and-replace edits
forma_bashExecute shell commands
forma_globFind files by pattern
forma_grepSearch file contents
forma_install_toolInstall tools from registry
forma_load_skillLoad multi-step procedures

Plus all installed CLI tools (weather, xero, linear, etc.)

68 Skills

Pre-built procedures for common tasks. The agent loads them on demand:

git-ops, python-ops, debug-ops, security-ops, docker-ops, react-ops, typescript-ops, testing-ops, perf-ops, auth-ops, ci-cd-ops, postgres-ops, refactor-ops, scaffold, forma-monitor, and 53 more.

Safety Model

Three-tier approval gate:

  • Low risk (read, search): always allowed
  • Medium risk (write, edit): session-approved
  • High risk (bash, install): pattern-matched, dangerous commands blocked

Gateway users (Telegram/Slack) cannot run bash or write files.

Credentials

All API keys stored in ~/.forma/keys.env (chmod 600). No keyring dependency, no env var pollution.

forma auth set openai # Store a key
forma auth list # Show all configured providers
forma auth test anthropic # Verify a key works

The Daemon

Always-on background agent with schedules, monitors, memory, and journal.

forma daemon start --detach # Start background agent
forma daemon chat # Interactive session
forma daemon ask "morning briefing"
forma daemon status

Connect from Telegram, Slack, Discord, WhatsApp, or Signal.

Ecosystem Journal

Structured JSONL logging with PII redaction. Every tool, agent, and skill can write to the shared journal.

forma log emit "registered tessitura" --source forma-warden
forma log tail --source forma-inspector --level error
forma log query --since 1d --keyword "tessitura" --json
forma log stats
forma log clean # gzip >30d, delete >90d, purge debug >7d

Sensitive data (emails, phones, auth tokens, credentials) is redacted on write — logs never contain raw PII.

Setup

forma setup

9-step interactive wizard:

  1. Choose collections (261 tools across 25 domains)
  2. Download tools from GitHub
  3. Install via uv (shared cache, deduplicated)
  4. Choose AI model (44 options, featured picker)
  5. Connect tool accounts (OAuth/API keys)
  6. Set up workspace context
  7. Choose agent personality (13 styles)
  8. Explore use case suggestions
  9. Start the background daemon

YAML Tool Plugins

Add tools without building a CLI:

# ~/.forma/plugins/my-tool/forma-tool.yamlname: my-tooltools:
- name: my_tool_searchdescription: Search for thingsparameters:
query: { type: string, required: true }command: "my-tool search {query} --json"

For AI Assistants

See AGENTS.md.

License

MIT

Popular repositories Loading

  1. .github .githubPublic

    Forma organization profile

Repositories

Showing 1 of 1 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
@forma-tools

forma-tools

Unified CLI ecosystem for agentic development. 143 tools, 16 collections, always-on daemon. One protocol.

Forma

A unified CLI ecosystem for agentic development.

Forma is a protocol, ecosystem, and agent runtime that standardises CLI tools for consistent behaviour across agentic workflows. 261 tools, 44 AI models, 68 skills, one coherent system.

What It Does

For users: One forma setup and you have an AI agent with 261 tools, a background daemon, and connections to Telegram/Slack/Discord. Ask it to check your invoices, monitor your services, or build you a daily news digest.

For developers: Build CLI tools that work in agentic workflows. Follow the protocol, get discovery, chaining, auth, and AI compatibility for free.

For AI assistants: Discover and invoke tools without MCP overhead. Zero context tokens until a tool is actually called.

Quick Start

# Install
curl -fsSL https://raw.githubusercontent.com/forma-tools/forma/main/install.sh | bash
# Interactive setup (collections, model, personality, workspace)
forma setup
# Chat with your agent
forma daemon chat
# Or from Telegram# (configured during setup)

Architecture

User (CLI / Telegram / Slack / Discord)
│
▼
┌──────────────────────────────────────────────────────┐
│ Forma Agent Engine │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ 44 Models │ │ 8 Built-in │ │ 68 Skills │ │
│ │ 8 Providers │ │ Tools │ │ On-demand │ │
│ │ Zero deps │ │ + CLI Tools │ │ Procedures │ │
│ └──────┬──────┘ └──────┬───────┘ └─────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Agent Loop │ │
│ │ System prompt (personality + context + memory)│ │
│ │ Tool calling → execute → feed back → loop │ │
│ │ Approval gate (3-tier safety model) │ │
│ └──────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 214 CLI Tools (subprocess isolation) │ │
│ │ forma/ (127 Forma CLIs) │ │
│ │ vendor/ (87 vendor CLIs) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

The Protocol

Forma is a specification before it's a toolset. Every CLI in the ecosystem implements the same 33-section contract, and that contract is what lets 261 tools behave as a single coherent system instead of 261 one-off scripts.

<tool><resource><action> [OPTIONS]

One command grammar. One {data, meta} output envelope. stdout for data, stderr for humans — strictly separated. Semantic exit codes (0 success · 2 auth · 3 not found · 4 validation · 5 conflict · 6 rate limit · 7 server). Deterministic auth login/status/logout/use across every tool. Self-describing at every level via --help and describe. Declared safety tier on every mutating operation. Caching with --no-cache and --refresh escape hatches. Pluggable auth backends with typed credentials and migration. Structured JSONL logging with PII redaction. Lockfiles and 7-day dependency quarantine. SemVer discipline with an explicit stability contract.

The 33 sections

#SectionWhat it covers
1PhilosophyCore principles — stdout sacred, stderr human, fail fast, help exhaustive
2Command Architecture<tool> <resource> <action> shape, noun-before-verb, consistent across the ecosystem
3Flags & OptionsStandard flags (--json, --limit, --count, --confirm, --read-only), naming rules
4Output SpecificationThe {data, meta} envelope, UTF-8, deterministic shape, stream separation
5Exit CodesSemantic 0-9 with HTTP mapping: success, auth, not found, validation, conflict, rate limit, server
6Error HandlingError object shape, retry-after surfacing, timeout behaviour, partial-success rules
7Agent SafetyRisk tiers, --read-only mode, confirmation gates, prompt-injection defence
8Help System--help at every level (tool/resource/action), example-first, machine-parseable headers
9Introspectiondescribe and doctor subcommands for capability manifests and health checks
10Skill SpecificationEmbedding multi-step procedures inside tools as loadable skills
11Authenticationauth login/status/logout/use, pluggable backends, profile switching
12Data ConventionsISO-8601 dates, string IDs, currency objects, enum casing, null handling
13Filtering & Pagination--limit, --all, --sort, --count, cursor-based pagination in meta
14Batch & Parallel--batch file input, --workers concurrency, raw passthrough for bulk ops
15CachingTTL-based defaults, --no-cache, --refresh, meta.cache visibility
16Project StructureDirectory layout, pyproject.toml conventions, package naming
17Implementation ReferenceShared boilerplate — error handlers, renderers, HTTP clients, credential wiring
18Testing ProtocolRequired test categories, manual verification checklist, compliance gates
19Anti-PatternsWhat breaks the contract — chatty stdout, colors in pipes, silent failures
20Compliance ChecklistMinimum-viable and complete compliance gates for registry entry
21VersioningSemVer strict, 0.x stability contract, status lifecycle (alpha → stable → maintenance)
22Releases & ChangelogKeep-a-Changelog format, tag conventions, release workflow
23Self-Update<tool> update mechanism, version check, rollback on failure
24Supply Chain SecurityLockfiles required, 7-day dependency quarantine, vulnerability scanning
25README & GitHub ConventionsREADME structure, badges, repo topics, default settings
26Filesystem ConventionsRoot discovery, workspaces, output paths, presets, cache locations
27Registry SpecificationUnified registry schema, collections, entry format, capability declarations
28LoggingStructured JSONL journal, PII redaction on write, retention tiers, event schema
29MCP IntegrationPer-tool MCP server, describe → MCP mapping, auth delegation
30MCP Tool DesignTiered surfaces, materialised views, persona-driven design, capabilities() keystone
31Test ResultsPer-test outcome log, flake detection, history tiers, integration with forma log
32SecurityThreat model, three-layer secrets enforcement, redaction, transport, incident response
33Auth Backendsforma_auth v1.0 — backend protocol, typed credentials, priority chain, migration, rotation

Why this matters

Without a protocol, 261 tools is 261 learning curves. With one, it's a single grammar plus a directory of resources — every hour spent learning Forma amortises across every tool you'll ever use in the ecosystem.

For AI agents, the protocol is the critical substrate. Autonomous tool chaining is impossible when tools disagree about how to report errors, paginate, or authenticate. Forma's contract is what lets an agent pipe tool A → tool B → tool C with full confidence about shapes, exit codes, and failure modes — no schema inference, no error-message parsing, no per-tool adaptation layer.

Full specification: 33 sections with implementation reference, testing requirements, and compliance checklists.


Agent Engine

The agent is model-agnostic with zero external dependencies. Direct HTTP to each provider - no LiteLLM, no middleware.

44 Models, 8 Providers

ProviderModelsRoute
OpenAIGPT-5.4, GPT-4.1, o3, o4-miniDirect API
AnthropicClaude Opus 4.6, Sonnet, HaikuDirect API
Gemini3.1 Pro, 3 Flash, 2.5 Pro/FlashDirect API
GLMGLM-5.1, GLM-5, GLM-4.7Direct (Z.AI Coding endpoint)
OpenRouterDeepSeek R1, Llama 4, Mistral, +300Proxy
OllamaLlama, Qwen, Gemma (local)Local
KimiKimi K2, MoonshotDirect API
QwenQwen Max, Plus, TurboDirect API

Switch models: forma model set gemini-3-flash

8 Built-in Tools

ToolPurpose
forma_read_fileRead files with line numbers
forma_write_fileCreate/overwrite files
forma_edit_fileFind-and-replace edits
forma_bashExecute shell commands
forma_globFind files by pattern
forma_grepSearch file contents
forma_install_toolInstall tools from registry
forma_load_skillLoad multi-step procedures

Plus all installed CLI tools (weather, xero, linear, etc.)

68 Skills

Pre-built procedures for common tasks. The agent loads them on demand:

git-ops, python-ops, debug-ops, security-ops, docker-ops, react-ops, typescript-ops, testing-ops, perf-ops, auth-ops, ci-cd-ops, postgres-ops, refactor-ops, scaffold, forma-monitor, and 53 more.

Safety Model

Three-tier approval gate:

  • Low risk (read, search): always allowed
  • Medium risk (write, edit): session-approved
  • High risk (bash, install): pattern-matched, dangerous commands blocked

Gateway users (Telegram/Slack) cannot run bash or write files.

Credentials

All API keys stored in ~/.forma/keys.env (chmod 600). No keyring dependency, no env var pollution.

forma auth set openai # Store a key
forma auth list # Show all configured providers
forma auth test anthropic # Verify a key works

The Daemon

Always-on background agent with schedules, monitors, memory, and journal.

forma daemon start --detach # Start background agent
forma daemon chat # Interactive session
forma daemon ask "morning briefing"
forma daemon status

Connect from Telegram, Slack, Discord, WhatsApp, or Signal.

Ecosystem Journal

Structured JSONL logging with PII redaction. Every tool, agent, and skill can write to the shared journal.

forma log emit "registered tessitura" --source forma-warden
forma log tail --source forma-inspector --level error
forma log query --since 1d --keyword "tessitura" --json
forma log stats
forma log clean # gzip >30d, delete >90d, purge debug >7d

Sensitive data (emails, phones, auth tokens, credentials) is redacted on write — logs never contain raw PII.

Setup

forma setup

9-step interactive wizard:

  1. Choose collections (261 tools across 25 domains)
  2. Download tools from GitHub
  3. Install via uv (shared cache, deduplicated)
  4. Choose AI model (44 options, featured picker)
  5. Connect tool accounts (OAuth/API keys)
  6. Set up workspace context
  7. Choose agent personality (13 styles)
  8. Explore use case suggestions
  9. Start the background daemon

YAML Tool Plugins

Add tools without building a CLI:

# ~/.forma/plugins/my-tool/forma-tool.yamlname: my-tooltools:
- name: my_tool_searchdescription: Search for thingsparameters:
query: { type: string, required: true }command: "my-tool search {query} --json"

For AI Assistants

See AGENTS.md.

License

MIT

Popular repositories Loading

  1. .github .githubPublic

    Forma organization profile

Repositories

Showing 1 of 1 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@forma-tools

forma-tools

Unified CLI ecosystem for agentic development. 143 tools, 16 collections, always-on daemon. One protocol.

Forma

A unified CLI ecosystem for agentic development.

Forma is a protocol, ecosystem, and agent runtime that standardises CLI tools for consistent behaviour across agentic workflows. 261 tools, 44 AI models, 68 skills, one coherent system.

What It Does

For users: One forma setup and you have an AI agent with 261 tools, a background daemon, and connections to Telegram/Slack/Discord. Ask it to check your invoices, monitor your services, or build you a daily news digest.

For developers: Build CLI tools that work in agentic workflows. Follow the protocol, get discovery, chaining, auth, and AI compatibility for free.

For AI assistants: Discover and invoke tools without MCP overhead. Zero context tokens until a tool is actually called.

Quick Start

# Install
curl -fsSL https://raw.githubusercontent.com/forma-tools/forma/main/install.sh | bash
# Interactive setup (collections, model, personality, workspace)
forma setup
# Chat with your agent
forma daemon chat
# Or from Telegram# (configured during setup)

Architecture

User (CLI / Telegram / Slack / Discord)
│
▼
┌──────────────────────────────────────────────────────┐
│ Forma Agent Engine │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ 44 Models │ │ 8 Built-in │ │ 68 Skills │ │
│ │ 8 Providers │ │ Tools │ │ On-demand │ │
│ │ Zero deps │ │ + CLI Tools │ │ Procedures │ │
│ └──────┬──────┘ └──────┬───────┘ └─────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Agent Loop │ │
│ │ System prompt (personality + context + memory)│ │
│ │ Tool calling → execute → feed back → loop │ │
│ │ Approval gate (3-tier safety model) │ │
│ └──────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 214 CLI Tools (subprocess isolation) │ │
│ │ forma/ (127 Forma CLIs) │ │
│ │ vendor/ (87 vendor CLIs) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

The Protocol

Forma is a specification before it's a toolset. Every CLI in the ecosystem implements the same 33-section contract, and that contract is what lets 261 tools behave as a single coherent system instead of 261 one-off scripts.

<tool><resource><action> [OPTIONS]

One command grammar. One {data, meta} output envelope. stdout for data, stderr for humans — strictly separated. Semantic exit codes (0 success · 2 auth · 3 not found · 4 validation · 5 conflict · 6 rate limit · 7 server). Deterministic auth login/status/logout/use across every tool. Self-describing at every level via --help and describe. Declared safety tier on every mutating operation. Caching with --no-cache and --refresh escape hatches. Pluggable auth backends with typed credentials and migration. Structured JSONL logging with PII redaction. Lockfiles and 7-day dependency quarantine. SemVer discipline with an explicit stability contract.

The 33 sections

#SectionWhat it covers
1PhilosophyCore principles — stdout sacred, stderr human, fail fast, help exhaustive
2Command Architecture<tool> <resource> <action> shape, noun-before-verb, consistent across the ecosystem
3Flags & OptionsStandard flags (--json, --limit, --count, --confirm, --read-only), naming rules
4Output SpecificationThe {data, meta} envelope, UTF-8, deterministic shape, stream separation
5Exit CodesSemantic 0-9 with HTTP mapping: success, auth, not found, validation, conflict, rate limit, server
6Error HandlingError object shape, retry-after surfacing, timeout behaviour, partial-success rules
7Agent SafetyRisk tiers, --read-only mode, confirmation gates, prompt-injection defence
8Help System--help at every level (tool/resource/action), example-first, machine-parseable headers
9Introspectiondescribe and doctor subcommands for capability manifests and health checks
10Skill SpecificationEmbedding multi-step procedures inside tools as loadable skills
11Authenticationauth login/status/logout/use, pluggable backends, profile switching
12Data ConventionsISO-8601 dates, string IDs, currency objects, enum casing, null handling
13Filtering & Pagination--limit, --all, --sort, --count, cursor-based pagination in meta
14Batch & Parallel--batch file input, --workers concurrency, raw passthrough for bulk ops
15CachingTTL-based defaults, --no-cache, --refresh, meta.cache visibility
16Project StructureDirectory layout, pyproject.toml conventions, package naming
17Implementation ReferenceShared boilerplate — error handlers, renderers, HTTP clients, credential wiring
18Testing ProtocolRequired test categories, manual verification checklist, compliance gates
19Anti-PatternsWhat breaks the contract — chatty stdout, colors in pipes, silent failures
20Compliance ChecklistMinimum-viable and complete compliance gates for registry entry
21VersioningSemVer strict, 0.x stability contract, status lifecycle (alpha → stable → maintenance)
22Releases & ChangelogKeep-a-Changelog format, tag conventions, release workflow
23Self-Update<tool> update mechanism, version check, rollback on failure
24Supply Chain SecurityLockfiles required, 7-day dependency quarantine, vulnerability scanning
25README & GitHub ConventionsREADME structure, badges, repo topics, default settings
26Filesystem ConventionsRoot discovery, workspaces, output paths, presets, cache locations
27Registry SpecificationUnified registry schema, collections, entry format, capability declarations
28LoggingStructured JSONL journal, PII redaction on write, retention tiers, event schema
29MCP IntegrationPer-tool MCP server, describe → MCP mapping, auth delegation
30MCP Tool DesignTiered surfaces, materialised views, persona-driven design, capabilities() keystone
31Test ResultsPer-test outcome log, flake detection, history tiers, integration with forma log
32SecurityThreat model, three-layer secrets enforcement, redaction, transport, incident response
33Auth Backendsforma_auth v1.0 — backend protocol, typed credentials, priority chain, migration, rotation

Why this matters

Without a protocol, 261 tools is 261 learning curves. With one, it's a single grammar plus a directory of resources — every hour spent learning Forma amortises across every tool you'll ever use in the ecosystem.

For AI agents, the protocol is the critical substrate. Autonomous tool chaining is impossible when tools disagree about how to report errors, paginate, or authenticate. Forma's contract is what lets an agent pipe tool A → tool B → tool C with full confidence about shapes, exit codes, and failure modes — no schema inference, no error-message parsing, no per-tool adaptation layer.

Full specification: 33 sections with implementation reference, testing requirements, and compliance checklists.


Agent Engine

The agent is model-agnostic with zero external dependencies. Direct HTTP to each provider - no LiteLLM, no middleware.

44 Models, 8 Providers

ProviderModelsRoute
OpenAIGPT-5.4, GPT-4.1, o3, o4-miniDirect API
AnthropicClaude Opus 4.6, Sonnet, HaikuDirect API
Gemini3.1 Pro, 3 Flash, 2.5 Pro/FlashDirect API
GLMGLM-5.1, GLM-5, GLM-4.7Direct (Z.AI Coding endpoint)
OpenRouterDeepSeek R1, Llama 4, Mistral, +300Proxy
OllamaLlama, Qwen, Gemma (local)Local
KimiKimi K2, MoonshotDirect API
QwenQwen Max, Plus, TurboDirect API

Switch models: forma model set gemini-3-flash

8 Built-in Tools

ToolPurpose
forma_read_fileRead files with line numbers
forma_write_fileCreate/overwrite files
forma_edit_fileFind-and-replace edits
forma_bashExecute shell commands
forma_globFind files by pattern
forma_grepSearch file contents
forma_install_toolInstall tools from registry
forma_load_skillLoad multi-step procedures

Plus all installed CLI tools (weather, xero, linear, etc.)

68 Skills

Pre-built procedures for common tasks. The agent loads them on demand:

git-ops, python-ops, debug-ops, security-ops, docker-ops, react-ops, typescript-ops, testing-ops, perf-ops, auth-ops, ci-cd-ops, postgres-ops, refactor-ops, scaffold, forma-monitor, and 53 more.

Safety Model

Three-tier approval gate:

  • Low risk (read, search): always allowed
  • Medium risk (write, edit): session-approved
  • High risk (bash, install): pattern-matched, dangerous commands blocked

Gateway users (Telegram/Slack) cannot run bash or write files.

Credentials

All API keys stored in ~/.forma/keys.env (chmod 600). No keyring dependency, no env var pollution.

forma auth set openai # Store a key
forma auth list # Show all configured providers
forma auth test anthropic # Verify a key works

The Daemon

Always-on background agent with schedules, monitors, memory, and journal.

forma daemon start --detach # Start background agent
forma daemon chat # Interactive session
forma daemon ask "morning briefing"
forma daemon status

Connect from Telegram, Slack, Discord, WhatsApp, or Signal.

Ecosystem Journal

Structured JSONL logging with PII redaction. Every tool, agent, and skill can write to the shared journal.

forma log emit "registered tessitura" --source forma-warden
forma log tail --source forma-inspector --level error
forma log query --since 1d --keyword "tessitura" --json
forma log stats
forma log clean # gzip >30d, delete >90d, purge debug >7d

Sensitive data (emails, phones, auth tokens, credentials) is redacted on write — logs never contain raw PII.

Setup

forma setup

9-step interactive wizard:

  1. Choose collections (261 tools across 25 domains)
  2. Download tools from GitHub
  3. Install via uv (shared cache, deduplicated)
  4. Choose AI model (44 options, featured picker)
  5. Connect tool accounts (OAuth/API keys)
  6. Set up workspace context
  7. Choose agent personality (13 styles)
  8. Explore use case suggestions
  9. Start the background daemon

YAML Tool Plugins

Add tools without building a CLI:

# ~/.forma/plugins/my-tool/forma-tool.yamlname: my-tooltools:
- name: my_tool_searchdescription: Search for thingsparameters:
query: { type: string, required: true }command: "my-tool search {query} --json"

For AI Assistants

See AGENTS.md.

License

MIT

Popular repositories Loading

  1. .github .githubPublic

    Forma organization profile

Repositories

Showing 1 of 1 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@forma-tools

forma-tools

Unified CLI ecosystem for agentic development. 143 tools, 16 collections, always-on daemon. One protocol.

Forma

A unified CLI ecosystem for agentic development.

Forma is a protocol, ecosystem, and agent runtime that standardises CLI tools for consistent behaviour across agentic workflows. 261 tools, 44 AI models, 68 skills, one coherent system.

What It Does

For users: One forma setup and you have an AI agent with 261 tools, a background daemon, and connections to Telegram/Slack/Discord. Ask it to check your invoices, monitor your services, or build you a daily news digest.

For developers: Build CLI tools that work in agentic workflows. Follow the protocol, get discovery, chaining, auth, and AI compatibility for free.

For AI assistants: Discover and invoke tools without MCP overhead. Zero context tokens until a tool is actually called.

Quick Start

# Install
curl -fsSL https://raw.githubusercontent.com/forma-tools/forma/main/install.sh | bash
# Interactive setup (collections, model, personality, workspace)
forma setup
# Chat with your agent
forma daemon chat
# Or from Telegram# (configured during setup)

Architecture

User (CLI / Telegram / Slack / Discord)
│
▼
┌──────────────────────────────────────────────────────┐
│ Forma Agent Engine │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ 44 Models │ │ 8 Built-in │ │ 68 Skills │ │
│ │ 8 Providers │ │ Tools │ │ On-demand │ │
│ │ Zero deps │ │ + CLI Tools │ │ Procedures │ │
│ └──────┬──────┘ └──────┬───────┘ └─────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Agent Loop │ │
│ │ System prompt (personality + context + memory)│ │
│ │ Tool calling → execute → feed back → loop │ │
│ │ Approval gate (3-tier safety model) │ │
│ └──────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 214 CLI Tools (subprocess isolation) │ │
│ │ forma/ (127 Forma CLIs) │ │
│ │ vendor/ (87 vendor CLIs) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

The Protocol

Forma is a specification before it's a toolset. Every CLI in the ecosystem implements the same 33-section contract, and that contract is what lets 261 tools behave as a single coherent system instead of 261 one-off scripts.

<tool><resource><action> [OPTIONS]

One command grammar. One {data, meta} output envelope. stdout for data, stderr for humans — strictly separated. Semantic exit codes (0 success · 2 auth · 3 not found · 4 validation · 5 conflict · 6 rate limit · 7 server). Deterministic auth login/status/logout/use across every tool. Self-describing at every level via --help and describe. Declared safety tier on every mutating operation. Caching with --no-cache and --refresh escape hatches. Pluggable auth backends with typed credentials and migration. Structured JSONL logging with PII redaction. Lockfiles and 7-day dependency quarantine. SemVer discipline with an explicit stability contract.

The 33 sections

#SectionWhat it covers
1PhilosophyCore principles — stdout sacred, stderr human, fail fast, help exhaustive
2Command Architecture<tool> <resource> <action> shape, noun-before-verb, consistent across the ecosystem
3Flags & OptionsStandard flags (--json, --limit, --count, --confirm, --read-only), naming rules
4Output SpecificationThe {data, meta} envelope, UTF-8, deterministic shape, stream separation
5Exit CodesSemantic 0-9 with HTTP mapping: success, auth, not found, validation, conflict, rate limit, server
6Error HandlingError object shape, retry-after surfacing, timeout behaviour, partial-success rules
7Agent SafetyRisk tiers, --read-only mode, confirmation gates, prompt-injection defence
8Help System--help at every level (tool/resource/action), example-first, machine-parseable headers
9Introspectiondescribe and doctor subcommands for capability manifests and health checks
10Skill SpecificationEmbedding multi-step procedures inside tools as loadable skills
11Authenticationauth login/status/logout/use, pluggable backends, profile switching
12Data ConventionsISO-8601 dates, string IDs, currency objects, enum casing, null handling
13Filtering & Pagination--limit, --all, --sort, --count, cursor-based pagination in meta
14Batch & Parallel--batch file input, --workers concurrency, raw passthrough for bulk ops
15CachingTTL-based defaults, --no-cache, --refresh, meta.cache visibility
16Project StructureDirectory layout, pyproject.toml conventions, package naming
17Implementation ReferenceShared boilerplate — error handlers, renderers, HTTP clients, credential wiring
18Testing ProtocolRequired test categories, manual verification checklist, compliance gates
19Anti-PatternsWhat breaks the contract — chatty stdout, colors in pipes, silent failures
20Compliance ChecklistMinimum-viable and complete compliance gates for registry entry
21VersioningSemVer strict, 0.x stability contract, status lifecycle (alpha → stable → maintenance)
22Releases & ChangelogKeep-a-Changelog format, tag conventions, release workflow
23Self-Update<tool> update mechanism, version check, rollback on failure
24Supply Chain SecurityLockfiles required, 7-day dependency quarantine, vulnerability scanning
25README & GitHub ConventionsREADME structure, badges, repo topics, default settings
26Filesystem ConventionsRoot discovery, workspaces, output paths, presets, cache locations
27Registry SpecificationUnified registry schema, collections, entry format, capability declarations
28LoggingStructured JSONL journal, PII redaction on write, retention tiers, event schema
29MCP IntegrationPer-tool MCP server, describe → MCP mapping, auth delegation
30MCP Tool DesignTiered surfaces, materialised views, persona-driven design, capabilities() keystone
31Test ResultsPer-test outcome log, flake detection, history tiers, integration with forma log
32SecurityThreat model, three-layer secrets enforcement, redaction, transport, incident response
33Auth Backendsforma_auth v1.0 — backend protocol, typed credentials, priority chain, migration, rotation

Why this matters

Without a protocol, 261 tools is 261 learning curves. With one, it's a single grammar plus a directory of resources — every hour spent learning Forma amortises across every tool you'll ever use in the ecosystem.

For AI agents, the protocol is the critical substrate. Autonomous tool chaining is impossible when tools disagree about how to report errors, paginate, or authenticate. Forma's contract is what lets an agent pipe tool A → tool B → tool C with full confidence about shapes, exit codes, and failure modes — no schema inference, no error-message parsing, no per-tool adaptation layer.

Full specification: 33 sections with implementation reference, testing requirements, and compliance checklists.


Agent Engine

The agent is model-agnostic with zero external dependencies. Direct HTTP to each provider - no LiteLLM, no middleware.

44 Models, 8 Providers

ProviderModelsRoute
OpenAIGPT-5.4, GPT-4.1, o3, o4-miniDirect API
AnthropicClaude Opus 4.6, Sonnet, HaikuDirect API
Gemini3.1 Pro, 3 Flash, 2.5 Pro/FlashDirect API
GLMGLM-5.1, GLM-5, GLM-4.7Direct (Z.AI Coding endpoint)
OpenRouterDeepSeek R1, Llama 4, Mistral, +300Proxy
OllamaLlama, Qwen, Gemma (local)Local
KimiKimi K2, MoonshotDirect API
QwenQwen Max, Plus, TurboDirect API

Switch models: forma model set gemini-3-flash

8 Built-in Tools

ToolPurpose
forma_read_fileRead files with line numbers
forma_write_fileCreate/overwrite files
forma_edit_fileFind-and-replace edits
forma_bashExecute shell commands
forma_globFind files by pattern
forma_grepSearch file contents
forma_install_toolInstall tools from registry
forma_load_skillLoad multi-step procedures

Plus all installed CLI tools (weather, xero, linear, etc.)

68 Skills

Pre-built procedures for common tasks. The agent loads them on demand:

git-ops, python-ops, debug-ops, security-ops, docker-ops, react-ops, typescript-ops, testing-ops, perf-ops, auth-ops, ci-cd-ops, postgres-ops, refactor-ops, scaffold, forma-monitor, and 53 more.

Safety Model

Three-tier approval gate:

  • Low risk (read, search): always allowed
  • Medium risk (write, edit): session-approved
  • High risk (bash, install): pattern-matched, dangerous commands blocked

Gateway users (Telegram/Slack) cannot run bash or write files.

Credentials

All API keys stored in ~/.forma/keys.env (chmod 600). No keyring dependency, no env var pollution.

forma auth set openai # Store a key
forma auth list # Show all configured providers
forma auth test anthropic # Verify a key works

The Daemon

Always-on background agent with schedules, monitors, memory, and journal.

forma daemon start --detach # Start background agent
forma daemon chat # Interactive session
forma daemon ask "morning briefing"
forma daemon status

Connect from Telegram, Slack, Discord, WhatsApp, or Signal.

Ecosystem Journal

Structured JSONL logging with PII redaction. Every tool, agent, and skill can write to the shared journal.

forma log emit "registered tessitura" --source forma-warden
forma log tail --source forma-inspector --level error
forma log query --since 1d --keyword "tessitura" --json
forma log stats
forma log clean # gzip >30d, delete >90d, purge debug >7d

Sensitive data (emails, phones, auth tokens, credentials) is redacted on write — logs never contain raw PII.

Setup

forma setup

9-step interactive wizard:

  1. Choose collections (261 tools across 25 domains)
  2. Download tools from GitHub
  3. Install via uv (shared cache, deduplicated)
  4. Choose AI model (44 options, featured picker)
  5. Connect tool accounts (OAuth/API keys)
  6. Set up workspace context
  7. Choose agent personality (13 styles)
  8. Explore use case suggestions
  9. Start the background daemon

YAML Tool Plugins

Add tools without building a CLI:

# ~/.forma/plugins/my-tool/forma-tool.yamlname: my-tooltools:
- name: my_tool_searchdescription: Search for thingsparameters:
query: { type: string, required: true }command: "my-tool search {query} --json"

For AI Assistants

See AGENTS.md.

License

MIT

Popular repositories Loading

  1. .github .githubPublic

    Forma organization profile

Repositories

Showing 1 of 1 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
@forma-tools

forma-tools

Unified CLI ecosystem for agentic development. 143 tools, 16 collections, always-on daemon. One protocol.

Forma

A unified CLI ecosystem for agentic development.

Forma is a protocol, ecosystem, and agent runtime that standardises CLI tools for consistent behaviour across agentic workflows. 261 tools, 44 AI models, 68 skills, one coherent system.

What It Does

For users: One forma setup and you have an AI agent with 261 tools, a background daemon, and connections to Telegram/Slack/Discord. Ask it to check your invoices, monitor your services, or build you a daily news digest.

For developers: Build CLI tools that work in agentic workflows. Follow the protocol, get discovery, chaining, auth, and AI compatibility for free.

For AI assistants: Discover and invoke tools without MCP overhead. Zero context tokens until a tool is actually called.

Quick Start

# Install
curl -fsSL https://raw.githubusercontent.com/forma-tools/forma/main/install.sh | bash
# Interactive setup (collections, model, personality, workspace)
forma setup
# Chat with your agent
forma daemon chat
# Or from Telegram# (configured during setup)

Architecture

User (CLI / Telegram / Slack / Discord)
│
▼
┌──────────────────────────────────────────────────────┐
│ Forma Agent Engine │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ 44 Models │ │ 8 Built-in │ │ 68 Skills │ │
│ │ 8 Providers │ │ Tools │ │ On-demand │ │
│ │ Zero deps │ │ + CLI Tools │ │ Procedures │ │
│ └──────┬──────┘ └──────┬───────┘ └─────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Agent Loop │ │
│ │ System prompt (personality + context + memory)│ │
│ │ Tool calling → execute → feed back → loop │ │
│ │ Approval gate (3-tier safety model) │ │
│ └──────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 214 CLI Tools (subprocess isolation) │ │
│ │ forma/ (127 Forma CLIs) │ │
│ │ vendor/ (87 vendor CLIs) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

The Protocol

Forma is a specification before it's a toolset. Every CLI in the ecosystem implements the same 33-section contract, and that contract is what lets 261 tools behave as a single coherent system instead of 261 one-off scripts.

<tool><resource><action> [OPTIONS]

One command grammar. One {data, meta} output envelope. stdout for data, stderr for humans — strictly separated. Semantic exit codes (0 success · 2 auth · 3 not found · 4 validation · 5 conflict · 6 rate limit · 7 server). Deterministic auth login/status/logout/use across every tool. Self-describing at every level via --help and describe. Declared safety tier on every mutating operation. Caching with --no-cache and --refresh escape hatches. Pluggable auth backends with typed credentials and migration. Structured JSONL logging with PII redaction. Lockfiles and 7-day dependency quarantine. SemVer discipline with an explicit stability contract.

The 33 sections

#SectionWhat it covers
1PhilosophyCore principles — stdout sacred, stderr human, fail fast, help exhaustive
2Command Architecture<tool> <resource> <action> shape, noun-before-verb, consistent across the ecosystem
3Flags & OptionsStandard flags (--json, --limit, --count, --confirm, --read-only), naming rules
4Output SpecificationThe {data, meta} envelope, UTF-8, deterministic shape, stream separation
5Exit CodesSemantic 0-9 with HTTP mapping: success, auth, not found, validation, conflict, rate limit, server
6Error HandlingError object shape, retry-after surfacing, timeout behaviour, partial-success rules
7Agent SafetyRisk tiers, --read-only mode, confirmation gates, prompt-injection defence
8Help System--help at every level (tool/resource/action), example-first, machine-parseable headers
9Introspectiondescribe and doctor subcommands for capability manifests and health checks
10Skill SpecificationEmbedding multi-step procedures inside tools as loadable skills
11Authenticationauth login/status/logout/use, pluggable backends, profile switching
12Data ConventionsISO-8601 dates, string IDs, currency objects, enum casing, null handling
13Filtering & Pagination--limit, --all, --sort, --count, cursor-based pagination in meta
14Batch & Parallel--batch file input, --workers concurrency, raw passthrough for bulk ops
15CachingTTL-based defaults, --no-cache, --refresh, meta.cache visibility
16Project StructureDirectory layout, pyproject.toml conventions, package naming
17Implementation ReferenceShared boilerplate — error handlers, renderers, HTTP clients, credential wiring
18Testing ProtocolRequired test categories, manual verification checklist, compliance gates
19Anti-PatternsWhat breaks the contract — chatty stdout, colors in pipes, silent failures
20Compliance ChecklistMinimum-viable and complete compliance gates for registry entry
21VersioningSemVer strict, 0.x stability contract, status lifecycle (alpha → stable → maintenance)
22Releases & ChangelogKeep-a-Changelog format, tag conventions, release workflow
23Self-Update<tool> update mechanism, version check, rollback on failure
24Supply Chain SecurityLockfiles required, 7-day dependency quarantine, vulnerability scanning
25README & GitHub ConventionsREADME structure, badges, repo topics, default settings
26Filesystem ConventionsRoot discovery, workspaces, output paths, presets, cache locations
27Registry SpecificationUnified registry schema, collections, entry format, capability declarations
28LoggingStructured JSONL journal, PII redaction on write, retention tiers, event schema
29MCP IntegrationPer-tool MCP server, describe → MCP mapping, auth delegation
30MCP Tool DesignTiered surfaces, materialised views, persona-driven design, capabilities() keystone
31Test ResultsPer-test outcome log, flake detection, history tiers, integration with forma log
32SecurityThreat model, three-layer secrets enforcement, redaction, transport, incident response
33Auth Backendsforma_auth v1.0 — backend protocol, typed credentials, priority chain, migration, rotation

Why this matters

Without a protocol, 261 tools is 261 learning curves. With one, it's a single grammar plus a directory of resources — every hour spent learning Forma amortises across every tool you'll ever use in the ecosystem.

For AI agents, the protocol is the critical substrate. Autonomous tool chaining is impossible when tools disagree about how to report errors, paginate, or authenticate. Forma's contract is what lets an agent pipe tool A → tool B → tool C with full confidence about shapes, exit codes, and failure modes — no schema inference, no error-message parsing, no per-tool adaptation layer.

Full specification: 33 sections with implementation reference, testing requirements, and compliance checklists.


Agent Engine

The agent is model-agnostic with zero external dependencies. Direct HTTP to each provider - no LiteLLM, no middleware.

44 Models, 8 Providers

ProviderModelsRoute
OpenAIGPT-5.4, GPT-4.1, o3, o4-miniDirect API
AnthropicClaude Opus 4.6, Sonnet, HaikuDirect API
Gemini3.1 Pro, 3 Flash, 2.5 Pro/FlashDirect API
GLMGLM-5.1, GLM-5, GLM-4.7Direct (Z.AI Coding endpoint)
OpenRouterDeepSeek R1, Llama 4, Mistral, +300Proxy
OllamaLlama, Qwen, Gemma (local)Local
KimiKimi K2, MoonshotDirect API
QwenQwen Max, Plus, TurboDirect API

Switch models: forma model set gemini-3-flash

8 Built-in Tools

ToolPurpose
forma_read_fileRead files with line numbers
forma_write_fileCreate/overwrite files
forma_edit_fileFind-and-replace edits
forma_bashExecute shell commands
forma_globFind files by pattern
forma_grepSearch file contents
forma_install_toolInstall tools from registry
forma_load_skillLoad multi-step procedures

Plus all installed CLI tools (weather, xero, linear, etc.)

68 Skills

Pre-built procedures for common tasks. The agent loads them on demand:

git-ops, python-ops, debug-ops, security-ops, docker-ops, react-ops, typescript-ops, testing-ops, perf-ops, auth-ops, ci-cd-ops, postgres-ops, refactor-ops, scaffold, forma-monitor, and 53 more.

Safety Model

Three-tier approval gate:

  • Low risk (read, search): always allowed
  • Medium risk (write, edit): session-approved
  • High risk (bash, install): pattern-matched, dangerous commands blocked

Gateway users (Telegram/Slack) cannot run bash or write files.

Credentials

All API keys stored in ~/.forma/keys.env (chmod 600). No keyring dependency, no env var pollution.

forma auth set openai # Store a key
forma auth list # Show all configured providers
forma auth test anthropic # Verify a key works

The Daemon

Always-on background agent with schedules, monitors, memory, and journal.

forma daemon start --detach # Start background agent
forma daemon chat # Interactive session
forma daemon ask "morning briefing"
forma daemon status

Connect from Telegram, Slack, Discord, WhatsApp, or Signal.

Ecosystem Journal

Structured JSONL logging with PII redaction. Every tool, agent, and skill can write to the shared journal.

forma log emit "registered tessitura" --source forma-warden
forma log tail --source forma-inspector --level error
forma log query --since 1d --keyword "tessitura" --json
forma log stats
forma log clean # gzip >30d, delete >90d, purge debug >7d

Sensitive data (emails, phones, auth tokens, credentials) is redacted on write — logs never contain raw PII.

Setup

forma setup

9-step interactive wizard:

  1. Choose collections (261 tools across 25 domains)
  2. Download tools from GitHub
  3. Install via uv (shared cache, deduplicated)
  4. Choose AI model (44 options, featured picker)
  5. Connect tool accounts (OAuth/API keys)
  6. Set up workspace context
  7. Choose agent personality (13 styles)
  8. Explore use case suggestions
  9. Start the background daemon

YAML Tool Plugins

Add tools without building a CLI:

# ~/.forma/plugins/my-tool/forma-tool.yamlname: my-tooltools:
- name: my_tool_searchdescription: Search for thingsparameters:
query: { type: string, required: true }command: "my-tool search {query} --json"

For AI Assistants

See AGENTS.md.

License

MIT

Popular repositories Loading

  1. .github .githubPublic

    Forma organization profile

Repositories

Showing 1 of 1 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@forma-tools

forma-tools

Unified CLI ecosystem for agentic development. 143 tools, 16 collections, always-on daemon. One protocol.

Forma

A unified CLI ecosystem for agentic development.

Forma is a protocol, ecosystem, and agent runtime that standardises CLI tools for consistent behaviour across agentic workflows. 261 tools, 44 AI models, 68 skills, one coherent system.

What It Does

For users: One forma setup and you have an AI agent with 261 tools, a background daemon, and connections to Telegram/Slack/Discord. Ask it to check your invoices, monitor your services, or build you a daily news digest.

For developers: Build CLI tools that work in agentic workflows. Follow the protocol, get discovery, chaining, auth, and AI compatibility for free.

For AI assistants: Discover and invoke tools without MCP overhead. Zero context tokens until a tool is actually called.

Quick Start

# Install
curl -fsSL https://raw.githubusercontent.com/forma-tools/forma/main/install.sh | bash
# Interactive setup (collections, model, personality, workspace)
forma setup
# Chat with your agent
forma daemon chat
# Or from Telegram# (configured during setup)

Architecture

User (CLI / Telegram / Slack / Discord)
│
▼
┌──────────────────────────────────────────────────────┐
│ Forma Agent Engine │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ 44 Models │ │ 8 Built-in │ │ 68 Skills │ │
│ │ 8 Providers │ │ Tools │ │ On-demand │ │
│ │ Zero deps │ │ + CLI Tools │ │ Procedures │ │
│ └──────┬──────┘ └──────┬───────┘ └─────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Agent Loop │ │
│ │ System prompt (personality + context + memory)│ │
│ │ Tool calling → execute → feed back → loop │ │
│ │ Approval gate (3-tier safety model) │ │
│ └──────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 214 CLI Tools (subprocess isolation) │ │
│ │ forma/ (127 Forma CLIs) │ │
│ │ vendor/ (87 vendor CLIs) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

The Protocol

Forma is a specification before it's a toolset. Every CLI in the ecosystem implements the same 33-section contract, and that contract is what lets 261 tools behave as a single coherent system instead of 261 one-off scripts.

<tool><resource><action> [OPTIONS]

One command grammar. One {data, meta} output envelope. stdout for data, stderr for humans — strictly separated. Semantic exit codes (0 success · 2 auth · 3 not found · 4 validation · 5 conflict · 6 rate limit · 7 server). Deterministic auth login/status/logout/use across every tool. Self-describing at every level via --help and describe. Declared safety tier on every mutating operation. Caching with --no-cache and --refresh escape hatches. Pluggable auth backends with typed credentials and migration. Structured JSONL logging with PII redaction. Lockfiles and 7-day dependency quarantine. SemVer discipline with an explicit stability contract.

The 33 sections

#SectionWhat it covers
1PhilosophyCore principles — stdout sacred, stderr human, fail fast, help exhaustive
2Command Architecture<tool> <resource> <action> shape, noun-before-verb, consistent across the ecosystem
3Flags & OptionsStandard flags (--json, --limit, --count, --confirm, --read-only), naming rules
4Output SpecificationThe {data, meta} envelope, UTF-8, deterministic shape, stream separation
5Exit CodesSemantic 0-9 with HTTP mapping: success, auth, not found, validation, conflict, rate limit, server
6Error HandlingError object shape, retry-after surfacing, timeout behaviour, partial-success rules
7Agent SafetyRisk tiers, --read-only mode, confirmation gates, prompt-injection defence
8Help System--help at every level (tool/resource/action), example-first, machine-parseable headers
9Introspectiondescribe and doctor subcommands for capability manifests and health checks
10Skill SpecificationEmbedding multi-step procedures inside tools as loadable skills
11Authenticationauth login/status/logout/use, pluggable backends, profile switching
12Data ConventionsISO-8601 dates, string IDs, currency objects, enum casing, null handling
13Filtering & Pagination--limit, --all, --sort, --count, cursor-based pagination in meta
14Batch & Parallel--batch file input, --workers concurrency, raw passthrough for bulk ops
15CachingTTL-based defaults, --no-cache, --refresh, meta.cache visibility
16Project StructureDirectory layout, pyproject.toml conventions, package naming
17Implementation ReferenceShared boilerplate — error handlers, renderers, HTTP clients, credential wiring
18Testing ProtocolRequired test categories, manual verification checklist, compliance gates
19Anti-PatternsWhat breaks the contract — chatty stdout, colors in pipes, silent failures
20Compliance ChecklistMinimum-viable and complete compliance gates for registry entry
21VersioningSemVer strict, 0.x stability contract, status lifecycle (alpha → stable → maintenance)
22Releases & ChangelogKeep-a-Changelog format, tag conventions, release workflow
23Self-Update<tool> update mechanism, version check, rollback on failure
24Supply Chain SecurityLockfiles required, 7-day dependency quarantine, vulnerability scanning
25README & GitHub ConventionsREADME structure, badges, repo topics, default settings
26Filesystem ConventionsRoot discovery, workspaces, output paths, presets, cache locations
27Registry SpecificationUnified registry schema, collections, entry format, capability declarations
28LoggingStructured JSONL journal, PII redaction on write, retention tiers, event schema
29MCP IntegrationPer-tool MCP server, describe → MCP mapping, auth delegation
30MCP Tool DesignTiered surfaces, materialised views, persona-driven design, capabilities() keystone
31Test ResultsPer-test outcome log, flake detection, history tiers, integration with forma log
32SecurityThreat model, three-layer secrets enforcement, redaction, transport, incident response
33Auth Backendsforma_auth v1.0 — backend protocol, typed credentials, priority chain, migration, rotation

Why this matters

Without a protocol, 261 tools is 261 learning curves. With one, it's a single grammar plus a directory of resources — every hour spent learning Forma amortises across every tool you'll ever use in the ecosystem.

For AI agents, the protocol is the critical substrate. Autonomous tool chaining is impossible when tools disagree about how to report errors, paginate, or authenticate. Forma's contract is what lets an agent pipe tool A → tool B → tool C with full confidence about shapes, exit codes, and failure modes — no schema inference, no error-message parsing, no per-tool adaptation layer.

Full specification: 33 sections with implementation reference, testing requirements, and compliance checklists.


Agent Engine

The agent is model-agnostic with zero external dependencies. Direct HTTP to each provider - no LiteLLM, no middleware.

44 Models, 8 Providers

ProviderModelsRoute
OpenAIGPT-5.4, GPT-4.1, o3, o4-miniDirect API
AnthropicClaude Opus 4.6, Sonnet, HaikuDirect API
Gemini3.1 Pro, 3 Flash, 2.5 Pro/FlashDirect API
GLMGLM-5.1, GLM-5, GLM-4.7Direct (Z.AI Coding endpoint)
OpenRouterDeepSeek R1, Llama 4, Mistral, +300Proxy
OllamaLlama, Qwen, Gemma (local)Local
KimiKimi K2, MoonshotDirect API
QwenQwen Max, Plus, TurboDirect API

Switch models: forma model set gemini-3-flash

8 Built-in Tools

ToolPurpose
forma_read_fileRead files with line numbers
forma_write_fileCreate/overwrite files
forma_edit_fileFind-and-replace edits
forma_bashExecute shell commands
forma_globFind files by pattern
forma_grepSearch file contents
forma_install_toolInstall tools from registry
forma_load_skillLoad multi-step procedures

Plus all installed CLI tools (weather, xero, linear, etc.)

68 Skills

Pre-built procedures for common tasks. The agent loads them on demand:

git-ops, python-ops, debug-ops, security-ops, docker-ops, react-ops, typescript-ops, testing-ops, perf-ops, auth-ops, ci-cd-ops, postgres-ops, refactor-ops, scaffold, forma-monitor, and 53 more.

Safety Model

Three-tier approval gate:

  • Low risk (read, search): always allowed
  • Medium risk (write, edit): session-approved
  • High risk (bash, install): pattern-matched, dangerous commands blocked

Gateway users (Telegram/Slack) cannot run bash or write files.

Credentials

All API keys stored in ~/.forma/keys.env (chmod 600). No keyring dependency, no env var pollution.

forma auth set openai # Store a key
forma auth list # Show all configured providers
forma auth test anthropic # Verify a key works

The Daemon

Always-on background agent with schedules, monitors, memory, and journal.

forma daemon start --detach # Start background agent
forma daemon chat # Interactive session
forma daemon ask "morning briefing"
forma daemon status

Connect from Telegram, Slack, Discord, WhatsApp, or Signal.

Ecosystem Journal

Structured JSONL logging with PII redaction. Every tool, agent, and skill can write to the shared journal.

forma log emit "registered tessitura" --source forma-warden
forma log tail --source forma-inspector --level error
forma log query --since 1d --keyword "tessitura" --json
forma log stats
forma log clean # gzip >30d, delete >90d, purge debug >7d

Sensitive data (emails, phones, auth tokens, credentials) is redacted on write — logs never contain raw PII.

Setup

forma setup

9-step interactive wizard:

  1. Choose collections (261 tools across 25 domains)
  2. Download tools from GitHub
  3. Install via uv (shared cache, deduplicated)
  4. Choose AI model (44 options, featured picker)
  5. Connect tool accounts (OAuth/API keys)
  6. Set up workspace context
  7. Choose agent personality (13 styles)
  8. Explore use case suggestions
  9. Start the background daemon

YAML Tool Plugins

Add tools without building a CLI:

# ~/.forma/plugins/my-tool/forma-tool.yamlname: my-tooltools:
- name: my_tool_searchdescription: Search for thingsparameters:
query: { type: string, required: true }command: "my-tool search {query} --json"

For AI Assistants

See AGENTS.md.

License

MIT

Popular repositories Loading

  1. .github .githubPublic

    Forma organization profile

Repositories

Showing 1 of 1 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@forma-tools

forma-tools

Unified CLI ecosystem for agentic development. 143 tools, 16 collections, always-on daemon. One protocol.

Forma

A unified CLI ecosystem for agentic development.

Forma is a protocol, ecosystem, and agent runtime that standardises CLI tools for consistent behaviour across agentic workflows. 261 tools, 44 AI models, 68 skills, one coherent system.

What It Does

For users: One forma setup and you have an AI agent with 261 tools, a background daemon, and connections to Telegram/Slack/Discord. Ask it to check your invoices, monitor your services, or build you a daily news digest.

For developers: Build CLI tools that work in agentic workflows. Follow the protocol, get discovery, chaining, auth, and AI compatibility for free.

For AI assistants: Discover and invoke tools without MCP overhead. Zero context tokens until a tool is actually called.

Quick Start

# Install
curl -fsSL https://raw.githubusercontent.com/forma-tools/forma/main/install.sh | bash
# Interactive setup (collections, model, personality, workspace)
forma setup
# Chat with your agent
forma daemon chat
# Or from Telegram# (configured during setup)

Architecture

User (CLI / Telegram / Slack / Discord)
│
▼
┌──────────────────────────────────────────────────────┐
│ Forma Agent Engine │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ 44 Models │ │ 8 Built-in │ │ 68 Skills │ │
│ │ 8 Providers │ │ Tools │ │ On-demand │ │
│ │ Zero deps │ │ + CLI Tools │ │ Procedures │ │
│ └──────┬──────┘ └──────┬───────┘ └─────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Agent Loop │ │
│ │ System prompt (personality + context + memory)│ │
│ │ Tool calling → execute → feed back → loop │ │
│ │ Approval gate (3-tier safety model) │ │
│ └──────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 214 CLI Tools (subprocess isolation) │ │
│ │ forma/ (127 Forma CLIs) │ │
│ │ vendor/ (87 vendor CLIs) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

The Protocol

Forma is a specification before it's a toolset. Every CLI in the ecosystem implements the same 33-section contract, and that contract is what lets 261 tools behave as a single coherent system instead of 261 one-off scripts.

<tool><resource><action> [OPTIONS]

One command grammar. One {data, meta} output envelope. stdout for data, stderr for humans — strictly separated. Semantic exit codes (0 success · 2 auth · 3 not found · 4 validation · 5 conflict · 6 rate limit · 7 server). Deterministic auth login/status/logout/use across every tool. Self-describing at every level via --help and describe. Declared safety tier on every mutating operation. Caching with --no-cache and --refresh escape hatches. Pluggable auth backends with typed credentials and migration. Structured JSONL logging with PII redaction. Lockfiles and 7-day dependency quarantine. SemVer discipline with an explicit stability contract.

The 33 sections

#SectionWhat it covers
1PhilosophyCore principles — stdout sacred, stderr human, fail fast, help exhaustive
2Command Architecture<tool> <resource> <action> shape, noun-before-verb, consistent across the ecosystem
3Flags & OptionsStandard flags (--json, --limit, --count, --confirm, --read-only), naming rules
4Output SpecificationThe {data, meta} envelope, UTF-8, deterministic shape, stream separation
5Exit CodesSemantic 0-9 with HTTP mapping: success, auth, not found, validation, conflict, rate limit, server
6Error HandlingError object shape, retry-after surfacing, timeout behaviour, partial-success rules
7Agent SafetyRisk tiers, --read-only mode, confirmation gates, prompt-injection defence
8Help System--help at every level (tool/resource/action), example-first, machine-parseable headers
9Introspectiondescribe and doctor subcommands for capability manifests and health checks
10Skill SpecificationEmbedding multi-step procedures inside tools as loadable skills
11Authenticationauth login/status/logout/use, pluggable backends, profile switching
12Data ConventionsISO-8601 dates, string IDs, currency objects, enum casing, null handling
13Filtering & Pagination--limit, --all, --sort, --count, cursor-based pagination in meta
14Batch & Parallel--batch file input, --workers concurrency, raw passthrough for bulk ops
15CachingTTL-based defaults, --no-cache, --refresh, meta.cache visibility
16Project StructureDirectory layout, pyproject.toml conventions, package naming
17Implementation ReferenceShared boilerplate — error handlers, renderers, HTTP clients, credential wiring
18Testing ProtocolRequired test categories, manual verification checklist, compliance gates
19Anti-PatternsWhat breaks the contract — chatty stdout, colors in pipes, silent failures
20Compliance ChecklistMinimum-viable and complete compliance gates for registry entry
21VersioningSemVer strict, 0.x stability contract, status lifecycle (alpha → stable → maintenance)
22Releases & ChangelogKeep-a-Changelog format, tag conventions, release workflow
23Self-Update<tool> update mechanism, version check, rollback on failure
24Supply Chain SecurityLockfiles required, 7-day dependency quarantine, vulnerability scanning
25README & GitHub ConventionsREADME structure, badges, repo topics, default settings
26Filesystem ConventionsRoot discovery, workspaces, output paths, presets, cache locations
27Registry SpecificationUnified registry schema, collections, entry format, capability declarations
28LoggingStructured JSONL journal, PII redaction on write, retention tiers, event schema
29MCP IntegrationPer-tool MCP server, describe → MCP mapping, auth delegation
30MCP Tool DesignTiered surfaces, materialised views, persona-driven design, capabilities() keystone
31Test ResultsPer-test outcome log, flake detection, history tiers, integration with forma log
32SecurityThreat model, three-layer secrets enforcement, redaction, transport, incident response
33Auth Backendsforma_auth v1.0 — backend protocol, typed credentials, priority chain, migration, rotation

Why this matters

Without a protocol, 261 tools is 261 learning curves. With one, it's a single grammar plus a directory of resources — every hour spent learning Forma amortises across every tool you'll ever use in the ecosystem.

For AI agents, the protocol is the critical substrate. Autonomous tool chaining is impossible when tools disagree about how to report errors, paginate, or authenticate. Forma's contract is what lets an agent pipe tool A → tool B → tool C with full confidence about shapes, exit codes, and failure modes — no schema inference, no error-message parsing, no per-tool adaptation layer.

Full specification: 33 sections with implementation reference, testing requirements, and compliance checklists.


Agent Engine

The agent is model-agnostic with zero external dependencies. Direct HTTP to each provider - no LiteLLM, no middleware.

44 Models, 8 Providers

ProviderModelsRoute
OpenAIGPT-5.4, GPT-4.1, o3, o4-miniDirect API
AnthropicClaude Opus 4.6, Sonnet, HaikuDirect API
Gemini3.1 Pro, 3 Flash, 2.5 Pro/FlashDirect API
GLMGLM-5.1, GLM-5, GLM-4.7Direct (Z.AI Coding endpoint)
OpenRouterDeepSeek R1, Llama 4, Mistral, +300Proxy
OllamaLlama, Qwen, Gemma (local)Local
KimiKimi K2, MoonshotDirect API
QwenQwen Max, Plus, TurboDirect API

Switch models: forma model set gemini-3-flash

8 Built-in Tools

ToolPurpose
forma_read_fileRead files with line numbers
forma_write_fileCreate/overwrite files
forma_edit_fileFind-and-replace edits
forma_bashExecute shell commands
forma_globFind files by pattern
forma_grepSearch file contents
forma_install_toolInstall tools from registry
forma_load_skillLoad multi-step procedures

Plus all installed CLI tools (weather, xero, linear, etc.)

68 Skills

Pre-built procedures for common tasks. The agent loads them on demand:

git-ops, python-ops, debug-ops, security-ops, docker-ops, react-ops, typescript-ops, testing-ops, perf-ops, auth-ops, ci-cd-ops, postgres-ops, refactor-ops, scaffold, forma-monitor, and 53 more.

Safety Model

Three-tier approval gate:

  • Low risk (read, search): always allowed
  • Medium risk (write, edit): session-approved
  • High risk (bash, install): pattern-matched, dangerous commands blocked

Gateway users (Telegram/Slack) cannot run bash or write files.

Credentials

All API keys stored in ~/.forma/keys.env (chmod 600). No keyring dependency, no env var pollution.

forma auth set openai # Store a key
forma auth list # Show all configured providers
forma auth test anthropic # Verify a key works

The Daemon

Always-on background agent with schedules, monitors, memory, and journal.

forma daemon start --detach # Start background agent
forma daemon chat # Interactive session
forma daemon ask "morning briefing"
forma daemon status

Connect from Telegram, Slack, Discord, WhatsApp, or Signal.

Ecosystem Journal

Structured JSONL logging with PII redaction. Every tool, agent, and skill can write to the shared journal.

forma log emit "registered tessitura" --source forma-warden
forma log tail --source forma-inspector --level error
forma log query --since 1d --keyword "tessitura" --json
forma log stats
forma log clean # gzip >30d, delete >90d, purge debug >7d

Sensitive data (emails, phones, auth tokens, credentials) is redacted on write — logs never contain raw PII.

Setup

forma setup

9-step interactive wizard:

  1. Choose collections (261 tools across 25 domains)
  2. Download tools from GitHub
  3. Install via uv (shared cache, deduplicated)
  4. Choose AI model (44 options, featured picker)
  5. Connect tool accounts (OAuth/API keys)
  6. Set up workspace context
  7. Choose agent personality (13 styles)
  8. Explore use case suggestions
  9. Start the background daemon

YAML Tool Plugins

Add tools without building a CLI:

# ~/.forma/plugins/my-tool/forma-tool.yamlname: my-tooltools:
- name: my_tool_searchdescription: Search for thingsparameters:
query: { type: string, required: true }command: "my-tool search {query} --json"

For AI Assistants

See AGENTS.md.

License

MIT

Popular repositories Loading

  1. .github .githubPublic

    Forma organization profile

Repositories

Showing 1 of 1 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
@forma-tools

forma-tools

Unified CLI ecosystem for agentic development. 143 tools, 16 collections, always-on daemon. One protocol.

Forma

A unified CLI ecosystem for agentic development.

Forma is a protocol, ecosystem, and agent runtime that standardises CLI tools for consistent behaviour across agentic workflows. 261 tools, 44 AI models, 68 skills, one coherent system.

What It Does

For users: One forma setup and you have an AI agent with 261 tools, a background daemon, and connections to Telegram/Slack/Discord. Ask it to check your invoices, monitor your services, or build you a daily news digest.

For developers: Build CLI tools that work in agentic workflows. Follow the protocol, get discovery, chaining, auth, and AI compatibility for free.

For AI assistants: Discover and invoke tools without MCP overhead. Zero context tokens until a tool is actually called.

Quick Start

# Install
curl -fsSL https://raw.githubusercontent.com/forma-tools/forma/main/install.sh | bash
# Interactive setup (collections, model, personality, workspace)
forma setup
# Chat with your agent
forma daemon chat
# Or from Telegram# (configured during setup)

Architecture

User (CLI / Telegram / Slack / Discord)
│
▼
┌──────────────────────────────────────────────────────┐
│ Forma Agent Engine │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ 44 Models │ │ 8 Built-in │ │ 68 Skills │ │
│ │ 8 Providers │ │ Tools │ │ On-demand │ │
│ │ Zero deps │ │ + CLI Tools │ │ Procedures │ │
│ └──────┬──────┘ └──────┬───────┘ └─────┬──────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ Agent Loop │ │
│ │ System prompt (personality + context + memory)│ │
│ │ Tool calling → execute → feed back → loop │ │
│ │ Approval gate (3-tier safety model) │ │
│ └──────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 214 CLI Tools (subprocess isolation) │ │
│ │ forma/ (127 Forma CLIs) │ │
│ │ vendor/ (87 vendor CLIs) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

The Protocol

Forma is a specification before it's a toolset. Every CLI in the ecosystem implements the same 33-section contract, and that contract is what lets 261 tools behave as a single coherent system instead of 261 one-off scripts.

<tool><resource><action> [OPTIONS]

One command grammar. One {data, meta} output envelope. stdout for data, stderr for humans — strictly separated. Semantic exit codes (0 success · 2 auth · 3 not found · 4 validation · 5 conflict · 6 rate limit · 7 server). Deterministic auth login/status/logout/use across every tool. Self-describing at every level via --help and describe. Declared safety tier on every mutating operation. Caching with --no-cache and --refresh escape hatches. Pluggable auth backends with typed credentials and migration. Structured JSONL logging with PII redaction. Lockfiles and 7-day dependency quarantine. SemVer discipline with an explicit stability contract.

The 33 sections

#SectionWhat it covers
1PhilosophyCore principles — stdout sacred, stderr human, fail fast, help exhaustive
2Command Architecture<tool> <resource> <action> shape, noun-before-verb, consistent across the ecosystem
3Flags & OptionsStandard flags (--json, --limit, --count, --confirm, --read-only), naming rules
4Output SpecificationThe {data, meta} envelope, UTF-8, deterministic shape, stream separation
5Exit CodesSemantic 0-9 with HTTP mapping: success, auth, not found, validation, conflict, rate limit, server
6Error HandlingError object shape, retry-after surfacing, timeout behaviour, partial-success rules
7Agent SafetyRisk tiers, --read-only mode, confirmation gates, prompt-injection defence
8Help System--help at every level (tool/resource/action), example-first, machine-parseable headers
9Introspectiondescribe and doctor subcommands for capability manifests and health checks
10Skill SpecificationEmbedding multi-step procedures inside tools as loadable skills
11Authenticationauth login/status/logout/use, pluggable backends, profile switching
12Data ConventionsISO-8601 dates, string IDs, currency objects, enum casing, null handling
13Filtering & Pagination--limit, --all, --sort, --count, cursor-based pagination in meta
14Batch & Parallel--batch file input, --workers concurrency, raw passthrough for bulk ops
15CachingTTL-based defaults, --no-cache, --refresh, meta.cache visibility
16Project StructureDirectory layout, pyproject.toml conventions, package naming
17Implementation ReferenceShared boilerplate — error handlers, renderers, HTTP clients, credential wiring
18Testing ProtocolRequired test categories, manual verification checklist, compliance gates
19Anti-PatternsWhat breaks the contract — chatty stdout, colors in pipes, silent failures
20Compliance ChecklistMinimum-viable and complete compliance gates for registry entry
21VersioningSemVer strict, 0.x stability contract, status lifecycle (alpha → stable → maintenance)
22Releases & ChangelogKeep-a-Changelog format, tag conventions, release workflow
23Self-Update<tool> update mechanism, version check, rollback on failure
24Supply Chain SecurityLockfiles required, 7-day dependency quarantine, vulnerability scanning
25README & GitHub ConventionsREADME structure, badges, repo topics, default settings
26Filesystem ConventionsRoot discovery, workspaces, output paths, presets, cache locations
27Registry SpecificationUnified registry schema, collections, entry format, capability declarations
28LoggingStructured JSONL journal, PII redaction on write, retention tiers, event schema
29MCP IntegrationPer-tool MCP server, describe → MCP mapping, auth delegation
30MCP Tool DesignTiered surfaces, materialised views, persona-driven design, capabilities() keystone
31Test ResultsPer-test outcome log, flake detection, history tiers, integration with forma log
32SecurityThreat model, three-layer secrets enforcement, redaction, transport, incident response
33Auth Backendsforma_auth v1.0 — backend protocol, typed credentials, priority chain, migration, rotation

Why this matters

Without a protocol, 261 tools is 261 learning curves. With one, it's a single grammar plus a directory of resources — every hour spent learning Forma amortises across every tool you'll ever use in the ecosystem.

For AI agents, the protocol is the critical substrate. Autonomous tool chaining is impossible when tools disagree about how to report errors, paginate, or authenticate. Forma's contract is what lets an agent pipe tool A → tool B → tool C with full confidence about shapes, exit codes, and failure modes — no schema inference, no error-message parsing, no per-tool adaptation layer.

Full specification: 33 sections with implementation reference, testing requirements, and compliance checklists.


Agent Engine

The agent is model-agnostic with zero external dependencies. Direct HTTP to each provider - no LiteLLM, no middleware.

44 Models, 8 Providers

ProviderModelsRoute
OpenAIGPT-5.4, GPT-4.1, o3, o4-miniDirect API
AnthropicClaude Opus 4.6, Sonnet, HaikuDirect API
Gemini3.1 Pro, 3 Flash, 2.5 Pro/FlashDirect API
GLMGLM-5.1, GLM-5, GLM-4.7Direct (Z.AI Coding endpoint)
OpenRouterDeepSeek R1, Llama 4, Mistral, +300Proxy
OllamaLlama, Qwen, Gemma (local)Local
KimiKimi K2, MoonshotDirect API
QwenQwen Max, Plus, TurboDirect API

Switch models: forma model set gemini-3-flash

8 Built-in Tools

ToolPurpose
forma_read_fileRead files with line numbers
forma_write_fileCreate/overwrite files
forma_edit_fileFind-and-replace edits
forma_bashExecute shell commands
forma_globFind files by pattern
forma_grepSearch file contents
forma_install_toolInstall tools from registry
forma_load_skillLoad multi-step procedures

Plus all installed CLI tools (weather, xero, linear, etc.)

68 Skills

Pre-built procedures for common tasks. The agent loads them on demand:

git-ops, python-ops, debug-ops, security-ops, docker-ops, react-ops, typescript-ops, testing-ops, perf-ops, auth-ops, ci-cd-ops, postgres-ops, refactor-ops, scaffold, forma-monitor, and 53 more.

Safety Model

Three-tier approval gate:

  • Low risk (read, search): always allowed
  • Medium risk (write, edit): session-approved
  • High risk (bash, install): pattern-matched, dangerous commands blocked

Gateway users (Telegram/Slack) cannot run bash or write files.

Credentials

All API keys stored in ~/.forma/keys.env (chmod 600). No keyring dependency, no env var pollution.

forma auth set openai # Store a key
forma auth list # Show all configured providers
forma auth test anthropic # Verify a key works

The Daemon

Always-on background agent with schedules, monitors, memory, and journal.

forma daemon start --detach # Start background agent
forma daemon chat # Interactive session
forma daemon ask "morning briefing"
forma daemon status

Connect from Telegram, Slack, Discord, WhatsApp, or Signal.

Ecosystem Journal

Structured JSONL logging with PII redaction. Every tool, agent, and skill can write to the shared journal.

forma log emit "registered tessitura" --source forma-warden
forma log tail --source forma-inspector --level error
forma log query --since 1d --keyword "tessitura" --json
forma log stats
forma log clean # gzip >30d, delete >90d, purge debug >7d

Sensitive data (emails, phones, auth tokens, credentials) is redacted on write — logs never contain raw PII.

Setup

forma setup

9-step interactive wizard:

  1. Choose collections (261 tools across 25 domains)
  2. Download tools from GitHub
  3. Install via uv (shared cache, deduplicated)
  4. Choose AI model (44 options, featured picker)
  5. Connect tool accounts (OAuth/API keys)
  6. Set up workspace context
  7. Choose agent personality (13 styles)
  8. Explore use case suggestions
  9. Start the background daemon

YAML Tool Plugins

Add tools without building a CLI:

# ~/.forma/plugins/my-tool/forma-tool.yamlname: my-tooltools:
- name: my_tool_searchdescription: Search for thingsparameters:
query: { type: string, required: true }command: "my-tool search {query} --json"

For AI Assistants

See AGENTS.md.

License

MIT

Popular repositories Loading

  1. .github .githubPublic

    Forma organization profile

Repositories

Showing 1 of 1 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…