Skip to main content
Glama

ACR: Adaptive Cognitive Runtime

CI PyPI License: MIT

acr-runtime.netlify.app

A local-first AI orchestration runtime that runs entirely on your own machine. Persistent memory, a skill system, task/agent orchestration, and multi-provider model routing, all on SQLite, with no cloud account, API key, or telemetry required to try it. Point it at your own local Ollama models when you want real inference, or keep it on the zero-config mock provider indefinitely; ACR never assumes you're online or paying for anything.

pip install acr-runtime
acr db upgrade && acr doctor
acr run "say hello"

Full specification: ACR_MASTER_SYSTEM_PROMPT.md. Current implementation state: docs/ARCHITECTURE.md, the single source of truth for what's actually built, so nothing here duplicates that status and drifts stale.

What's here

A Python CLI (acr) built around a real task engine, a hybrid-retrieval memory store, a skill registry with routing/validation/evolution, model and tool routing with safe-mode-aware permission checks, an agent planner/critic/topology system, an operational dashboard with a real-telemetry visualization, and an MCP server exposing ACR's memory, skill, web, and GitHub search tools to any MCP client, including project-scoped registration for both Claude Code and Codex CLI out of the box. See docs/ARCHITECTURE.md for the full breakdown of what's implemented, how, and why.

Related MCP server: WEATHGARDS

Quick start

Install from PyPI:

pip install acr-runtime   # or: uv tool install acr-runtime
acr db upgrade            # create the local SQLite schema, no repo checkout needed
acr doctor

Or from a source checkout (for development; see CONTRIBUTING.md):

uv sync                 # install deps + local package into .venv
cp .env.example .env    # local dev data dir (repo-local ./data, gitignored)
uv run alembic upgrade head
uv run acr doctor
acr run "say hello"          # create + execute a task end to end
acr dashboard serve          # operational dashboard: http://127.0.0.1:8765
acr mcp serve                # MCP server (stdio by default)

(prefix with uv run if working from a source checkout instead of a pip/uv tool install)

Using ACR from Claude Code or Codex CLI

This repo ships project-scoped MCP server registration for both Claude Code and Codex CLI, so opening it in either offers ACR's memory/skill/web/GitHub search tools and task execution as MCP tools directly. Claude Code prompts for approval the first time it opens the project; Codex CLI only loads project-scoped config for a project you've marked trusted (codex trust prompt, or trust_level = "trusted" under [projects."<path>"] in your own ~/.codex/config.toml); either way, cloning the repo can't silently launch anything without you consenting.

Development

See CONTRIBUTING.md for the full workflow. Short version:

uv run pytest            # tests
uv run ruff check .      # lint
uv run ruff format .     # format
uv run pyright           # type check

License, security, support

MIT licensed. See SECURITY.md to report a vulnerability privately. For bugs, questions, or feature requests, use GitHub Issues.

If ACR is useful to you, consider supporting its development: ko-fi.com/hbkcustomsinc.

Available Tools

6 tools
browser_fetchB

Render a URL in a real headless browser and return its visible text, including JS-rendered content web_fetch can't see.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It mentions using a 'real headless browser' but does not disclose behavioral traits such as execution time, resource usage, error handling, or side effects. This leaves significant gaps in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded with the main action. It is efficient but could include a bit more detail without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a headless browser tool and the existence of an output schema, the description covers the key differentiator from siblings. However, it omits information about error conditions, limitations, and parameter details, leaving it insufficient for complete context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does not explain the purpose or constraints of the 'max_chars' parameter, and only indirectly references the 'url' parameter by mentioning it. No additional semantic value is added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool renders a URL in a headless browser and returns visible text, including JS-rendered content. It distinguishes itself from the sibling 'web_fetch' by noting that web_fetch cannot see JS-rendered content, so the purpose is specific and well-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for pages with JS-rendered content that web_fetch cannot access, providing clear context. However, it does not explicitly state when not to use it or mention alternatives beyond web_fetch, so slightly lacking in complete guidelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_taskB

Run an objective through ACR's task engine. Uses the zero-config mock provider unless min_quality_tier is raised (or Settings.default_min_quality_tier is configured) to prefer a configured Ollama/cloud provider instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectiveYes
min_quality_tierNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; the description mentions the mock provider behavior but fails to disclose potential side effects, authentication needs, rate limits, or what happens to data during execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no unnecessary words. However, the structure could be improved by front-loading the purpose more explicitly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, incomplete parameter descriptions, and no explanation of return values despite an output schema, the description leaves significant gaps in understanding the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%; the description only alludes to min_quality_tier without defining it or the 'objective' parameter. It does not add meaningful meaning beyond the schema's property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb ('Run') and the resource ('objective through ACR's task engine'). The tool's purpose is distinct from sibling tools (search, fetch), making selection unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context on provider selection based on min_quality_tier or default configuration, but lacks explicit guidance on when to use this tool versus alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_fetchC

Fetch a URL over HTTP(S) and return its extracted text.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description only mentions 'extracted text' but lacks details on HTTP methods, redirects, timeouts, or truncation behavior. Default max_chars parameter not explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise but omits important details. Minimal structure adequate for a very simple tool, but missing parameter context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks context for alternatives (browser_fetch) and does not leverage output schema to describe return value. Insufficient for agent to use accurately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and description adds no information about parameters 'url' or 'max_chars'. Agent has no guidance on input semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Fetch' and resource 'URL' with outcome 'return its extracted text'. No differentiation from sibling 'browser_fetch'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like 'browser_fetch'. Missing context about prerequisites or use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv0.1.0
    • First observedbrowser_fetch
    • First observedgithub_search
    • First observedmemory_search
    • First observedrun_task
    • First observedskill_search
    • First observedweb_fetch

TDQS

B3.2/5.0
Disambiguation5/5

Each tool targets a distinct domain: memory search, skill search, web fetching (two variants), GitHub search, and task execution. No overlaps exist.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., memory_search, web_fetch, run_task), with clear prefixes for related operations.

Tool Count5/5

Six tools provide a focused set covering search, fetch, and task execution without being excessive or minimal.

Completeness2/5

Significant gaps exist: memory and skill stores only support search (no create/update/delete), and run_task lacks status or result retrieval, limiting the workflow.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hbkdad/arc'

If you have feedback or need assistance with the MCP directory API, please join our Discord server