MATE — Command Center for AI Agents
Edit prompts, swap models, and gate access from a dashboard — no code change, no redeploy.
- Source repo
- antiv/mate
- Stars
- ★ 108
- Last updated
- 3d ago
- License
- Apache-2.0
- Primary language
- Python
- FA score
- 53/100 · Major gaps
At a glance
- How it runs
- Works with
- Universal · cross-platformOpenAI API · Claude API
- Cost
- Free software; you pay for model usage
- Setup effort
- Medium · a few setup steps
- You'll need
- Typical use
- Platform or ops teams that need one control plane for agent hierarchies, permissions and costs across multiple teams and projects.
- Not a fit if
- Solo developers who want a single-file script, not a running web service
- Teams unwilling to operate a database-backed server
- Source review
- 53/100 · Major gaps
What does this agent do, and when should you use it?
MATE is a production-oriented multi-agent orchestration engine built on Google ADK (with LangGraph support), served through FastAPI with a web dashboard. Agent definitions live in the database and are edited on a drag-and-drop canvas where you draw parent→child hierarchies, attach tools and MCP servers, and roll back to any previous version in one click. It reaches 50+ LLM providers through LiteLLM — including local servers such as Ollama and LM Studio — and logs every model call with a US-dollar cost plus a four-bucket token breakdown. Governance features include per-agent RBAC, token and dollar budgets that warn or block, alert rules to webhook/email/Slack/Discord, guardrails, and an append-only audit log. An eval framework with exact-match, semantic-similarity and LLM-judge scoring, plus a Playground for side-by-side variant comparison, covers pre-release testing. It ships as a Docker image or run-from-source self-hosted service with SQLite by default and PostgreSQL/MySQL 8 as alternatives.
MATE boots a FastAPI server via auth_server.py on port 8000 and reads agent definitions from the database: model, instructions, parent/child hierarchy, tools, MCP servers, memory blocks, planner and RBAC roles. During a conversation it calls the configured model through LiteLLM and writes each call's dollar cost and prompt/response/thoughts/tool-use token counts to logs surfaced at /dashboard/usage. It exposes each root agent as an MCP server (/agents/{name}/mcp/*) and an A2A endpoint (/a2a/{agent}), provides an OpenAI-compatible /v1 bridge, and ships an embeddable <script> chat widget. The eval framework invokes the live agent, scores responses by exact match, semantic similarity or LLM-as-Judge, and fires a regression webhook when a new version drops more than 5 points. Database migrations run automatically at startup.
- Platform or ops teams that need one control plane for agent hierarchies, permissions and costs across multiple teams and projects.
- Product teams that iterate on prompts and models without redeploying, with one-click rollback as a safety net.
- Teams deploying chat on several public websites (support, sales, docs) with per-site appearance and access rules via widget keys.
- Finance or compliance groups tracking LLM spend per agent, project and user, with budgets and alerting.
- Developers connecting agents to Claude Desktop, Cursor or OpenAI-compatible IDE clients.
- Teams wanting automated regression suites against prompt changes before shipping.
How do you install or deploy this agent?
Fastest path: run the published Docker image.
docker run -d --name mate -p 8000:8000 \
-e AUTH_PASSWORD=change-me -e GOOGLE_API_KEY=your-key \
-e DB_PATH=data/my_agent_data.db -v mate-data:/app/data \
ghcr.io/antiv/mate:latestOr install from source:
git clone https://github.com/antiv/mate.git && cd mate
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.lock
cp .env.example .env
# Set GOOGLE_API_KEY (or any supported provider key), AUTH_USERNAME and AUTH_PASSWORDYou can also build the full stack with docker-compose up --build (it needs AUTH_PASSWORD set in .env).
Requirements: Python 3.10+ for the source path, one LLM provider API key, and a database — SQLite by default, with migrations applied automatically on startup.
How do you use this agent?
After the service starts, open http://localhost:8000 and log in with AUTH_USERNAME / AUTH_PASSWORD (left empty they are admin / mate; MATE_ENV=production refuses that default).
Source install launch:
python auth_server.py
# Dashboard: http://localhost:8000You land on /dashboard/workroom, pick a root agent from the card grid and chat. On /dashboard/agents you create agents, draw parent→child edges and configure tools and MCP servers on the canvas.
Expose agents as MCP servers:
export MCP_EXPOSED_AGENTS=creative_agent,support_agentClients authenticate with a Personal Access Token from the dashboard account menu:
curl -H "Authorization: Bearer mate_pat_..." https://your-mate-instance.com/mcpEmbed the chat widget on a website:
<script
src="https://your-mate-instance.com/widget/mate-widget.js"
data-key="wk_abc123..."
data-server="https://your-mate-instance.com"
></script>Common environment variables: DB_TYPE, GOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET and GITHUB_CLIENT_ID/GITHUB_CLIENT_SECRET for SSO, RATE_LIMIT_ENABLED, ALERTS_ENABLED, CSP_MODE, OTEL_TRACING_ENABLED, AUDIT_RETENTION_DAYS.
What are this agent's strengths and limitations?
- Agent config is database-driven: prompts, models and roles change live from the dashboard with one-click rollback and no redeploy.
- 50+ providers through LiteLLM, including local servers like Ollama, LM Studio, llama.cpp, LocalAI and Llamafile.
- Built-in per-agent RBAC, dollar cost tracking, budgets that warn or block, alerts and an append-only audit log.
- Eval framework plus Playground compare model, instructions and stored versions side by side on score, latency and cost.
- Every agent can be exposed as an MCP server and A2A endpoint, with an OpenAI-compatible
/v1bridge for external clients. - A single
<script>tag deploys a per-key chat widget with its own admin panel and origin restrictions.
- It is a substantial service: a FastAPI process plus a database (SQLite by default, PostgreSQL or MySQL 8 alternatives) to operate.
google-adkand SQLAlchemy are hand-pinned below 2.1 inrequirements.txt, so upgrades depend on upstream changelogs.- Advanced capabilities (SSO, alerts, OpenTelemetry, MCP exposure, A2A) each need extra environment configuration.
- Cost reporting depends on OpenRouter/LiteLLM price lists or prices you set; unknown-price calls are labeled rather than counted as $0.
- The product UI is in English and the browser wizard demo is in Serbian, so non-English teams need to adjust.
How does this agent compare with similar options?
The README contrasts MATE directly with raw Google ADK: in ADK, changing a prompt or model means editing code and redeploying, whereas MATE applies it instantly from the dashboard; ADK ships without per-agent RBAC, cost visibility, budgets, an eval suite or an embeddable widget, all of which MATE adds.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| MATE — Command Center for AI Agents This agent | 53 · Major gaps | Self-hosted serviceFree + model costs | ★ 108 | 3d ago | Python | OpenAI API · Claude API |
| EDDI Conversational AI Orchestration | 68 · Some gaps | Self-hosted serviceFree + model costs | ★ 389 | today | Java | OpenAI API |
| DashClaw | 65 · Some gaps | CLIFree | ★ 316 | 1mo ago | TypeScript | Codex · Claude Code |
| Agent Swarm | 47 · Major gaps | Agent plugin / skillFree + model costs | ★ 1k | today | TypeScript | Codex · Claude Code |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence shows layered authorization (DashboardAuthzMiddleware, platform-only paths, workspace isolation, three-layer RBAC) and a solid CSP doc, so least_privilege scores 2; however insecure defaults (AUTH_PASSWORD=mate, TRUSTED_PROXY_HOSTS=*, WIDGET_ORIGIN_STRICT=false, CSP report-only by default) weaken least privilege, deducted. user_confirmation only appears as optional RESUMABILITY human-in-the-loop tool approval (off by default), no general confirmation, scores 1. data_flow_transparency has a configuration reference and CSP/data-flow notes but no end-to-end data-flow map, scores 2. sensitive_data_handling has MATE_SECRET_KEY encryption, PAT hashing, audit logs, but stores secrets in clear with only a warning when unset, deducted to 2. dependency_security has hashed requirements.lock and a monthly upgrade workflow, but no vulnerability-scanning evidence, scores 2. external_effects covers code execution, browser tools, MCP stdio, alert egress, gated only by platform-only checks with no unified confirmation/rollback, scores 1. rollback has one-click agent version rollback but config-level only, scores 2. source_attribution lists author and case links but publisher is unverified and no provenance mechanism, scores 1.
self_consistency: docs, configuration reference and CSP doc are mutually consistent, scores 2. dependency_availability: lock file, multiple DB drivers, Docker image, scores 2. failure_messages: some errors (403/404/409) documented but no systematic error-message spec, scores 1.
audience_and_scenarios clearly separates user/dev docs and three spaces, scores 2. capability_boundaries has a platform-only capability list and workspace boundaries, scores 2. trigger_precision has triggers and alerts but thin evidence on precision/dedup, scores 1. environment_fit supports SQLite/PostgreSQL/MySQL, Docker, many LLM providers, scores 2.
information_architecture has docs tree with order and covers metadata, scores 2. install_notes has Quick Start, Docker, dependency notes, scores 2. naming_stability no stability commitment found, scores 1. examples_and_faq has examples and demos but no FAQ, scores 1. known_limitations has Known gaps and insecure-default notes, scores 2. license states Apache-2.0, scores 2. versioning_changelog has CHANGELOG link and release badge but content not in evidence, scores 1. maintenance_responsibility has author and monthly dependency workflow but unverified publisher and unclear ownership, scores 1.
output_usability has dashboard, API, MCP, A2A, embeddable widget, scores 2. marginal_value adds governance, cost, evals over raw ADK, scores 2. cost_benefit has cost tracking and budgets but high deployment/ops complexity and insecure defaults add hidden cost, scores 1.
claim_traceability README claims 1400+ tests and production use but no test files or case detail in evidence, scores 1. cross_source_corroboration several docs corroborate some config but key claims lack independent support, scores 1. fact_inference_separation docs mix marketing claims with facts without clear separation, scores 1.
- Insecure defaults: AUTH_PASSWORD=mate, TRUSTED_PROXY_HOSTS=*, WIDGET_ORIGIN_STRICT=false, CSP report-only by default; must be tightened before production.
- Secrets stored in clear when MATE_SECRET_KEY is unset, with only a startup warning.
- High-risk capabilities (code execution, browser tools, MCP stdio) gated only by platform-only checks, lacking unified confirmation and rollback.
- README claims 1400+ tests and production use, but no test files or case detail appear in evidence; verify independently.
- Publisher identity is unverified; maintenance responsibility and update path are unclear.
FAQ
Does the software itself cost anything?
Which databases are supported?
python shared/migrate.py status lists pending ones.Can agents run outside MATE?
How do I avoid shipping regressions after a prompt change?
Can Claude Desktop or Cursor use my agents?
MCP_EXPOSED_AGENTS, then clients call /agents/{name}/mcp/* with a dashboard-issued Personal Access Token (Authorization: Bearer mate_pat_...).