agent-hub
Executes commands in isolated Docker containers with configurable network access for safe tool execution.
Runs the web server and WebSocket API using Fastify.
Uses isolated Git worktrees for subagents and summarizes git logs in schedules.
Runs on Linux or WSL (platform requirement).
Listens on loopback for local pairing (network detail).
Integrates with local Ollama models for running AI agents locally.
Exposes an OpenAI-compatible endpoint for shared models and uses an OpenAI-compatible adapter for agent model access.
Exports spans for model calls and tool executions via OpenTelemetry (OTLP/HTTP).
Uses pnpm for package management (not a target integration).
Serves a Progressive Web App interface for managing the daemon and sending push notifications.
Connects to a relay server for remote access, sharing models, and receiving triggers over the network.
Stores conversations, messages, costs, and other data in a local SQLite database.
Reads configuration from TOML files (not a target integration).
Written in TypeScript (implementation detail).
Reads workflow definitions from YAML files (not a target integration).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agent-hubshow my recent agent sessions and their costs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
agent-hub-daemon
Servico local do Agent Hub. Roda na sua maquina e e a fonte da verdade: guarda conversas, mensagens e custos no SQLite, escolhe o agente de cada pedido, chama os provedores, executa ferramentas com politica e aprovacao, roda agendamentos, gatilhos e workflows, conecta os servidores MCP e serve a interface web e a API WebSocket para os clientes. As chaves de API ficam so aqui, num cofre cifrado.
A logica de agente vem do core; perfis, precos e regras vem do agents.
Requisitos
Linux ou WSL, Node 22 ou superior e pnpm.
../corecompilado, porque este pacote o consome porlink:../core.Para o modelo local, Ollama respondendo em
OLLAMA_BASE_URL(omake devda raiz sobe um container com GPU).
As chaves de API sao cadastradas pela tela Configuracoes, Chaves, e ficam
cifradas no SQLite. Tambem sao aceitas pelo ambiente ou por
~/.agent-hub/.env; agent-hub-daemon env mostra quais foram encontradas sem
revelar valores.
Related MCP server: machine-mcp
Pacote
make pacote, na raiz, gera dist-pacote/agent-hub-VERSAO.tgz com scripts/pacote.sh:
este daemon compilado, o core como dependencia empacotada, o dist da
interface e o modelo de agentes. make pacote-testar instala num container
limpo e confere tudo; scripts/testar-pacote-servico.sh confere o caminho do
systemd com um systemctl falso. A entrada dist/bin.js confere os modulos
nativos antes de carregar o resto, para o erro dizer o que instalar.
Configuracao
~/.agent-hub/config.toml (ou $AGENT_HUB_HOME/config.toml):
agents_dir = "/home/usuario/Projects/agent-hub/agents"
host = "127.0.0.1"
port = 47311
workspaces = ["/home/usuario/Projects"]
approval_timeout_ms = 600000
device_name = "pc-casa"
# relay_url = "wss://relay.exemplo.com"
# otel_endpoint = "http://127.0.0.1:4318"agent-hub-daemon init grava esse modelo. Sessao so pode ser criada dentro de
uma pasta listada em workspaces. Sem agents_dir, o daemon procura em
~/.agent-hub/agents. O mcp.json com seus conectores fica nessa pasta e nao
deve ser versionado.
Rodar
pnpm install
pnpm build
node dist/cli.js init
node dist/cli.js startA interface fica em http://127.0.0.1:47311. Na propria maquina a conexao e
automatica. Para subir com o sistema e voltar sozinho depois de reiniciar pela
interface, instale o servico do systemd com make servico na raiz.
Comandos
Comando | O que faz |
| prepara a maquina: config, agentes iniciais, servico do systemd e teste de saude |
| regrava o servico apontando para esta instalacao e reinicia |
| instala a versao nova do pacote e regrava o servico |
| cria |
| sobe o servidor WebSocket e a interface |
| confere se o daemon responde |
| mostra quais chaves foram encontradas, sem os valores |
| dados, link e QR para conectar outro dispositivo, local ou pelo relay |
| define a senha do acesso remoto, lida da entrada padrao |
| perfis e papeis carregados, com erros |
| mostra a decisao do roteador e o ranking, sem gastar tokens |
| votos bom e ruim por agente e intencao, com o ajuste aprendido |
| relatorio do ledger por agente, modelo, sessao ou dia |
| agendamentos e gatilhos cadastrados |
| lista workflows com custo maximo, ou roda um |
| lista plugins, ou clona e atualiza os declarados por git |
| expoe o daemon como servidor MCP por stdio |
| conversa pelo terminal, aprovando ferramentas ali mesmo |
Agendamentos
Ficam na tabela schedules e podem vir de agents/schedules/*.json
(recarregados a cada inicio) ou da interface. Toda automacao exige
budget.run_usd e budget.day_usd; mode: draft nega escrita e execucao. O
interruptor geral persiste entre reinicios.
{
"id": "resumo-diario",
"cron": "0 8 * * 1-5",
"timezone": "America/Sao_Paulo",
"agent": "qwen3",
"workspace": "/home/usuario/Projects/meu-projeto",
"prompt": "Resuma o que mudou no git log de ontem.",
"mode": "draft",
"budget": { "run_usd": 0.2, "day_usd": 0.5 },
"overlap": "skip",
"missed": "skip",
"enabled": true
}Protocolo
WebSocket em ws://host:porta/ws, quadros JSON definidos em
@agent-hub/core (protocol/frames.ts). O primeiro quadro autentica: token do
daemon, credencial de dispositivo ou, na propria maquina, a credencial entregue
por GET /pair/local, que so responde para loopback e para a propria interface.
Cada evento de run leva seq por sessao, para o cliente retomar do ponto onde
parou depois de cair.
Estrutura
src/
cli.ts comandos acima
server.ts Fastify e WebSocket, interface estatica, pareamento local, A2A, callbacks de OAuth
hub.ts quadros do protocolo para sockets locais e canais do relay
runtime.ts roteamento, runs, cascata, fallback, delegacao, retomada, classificador e melhorador
store.ts, db.ts SQLite: sessoes, mensagens, eventos, ledger, midia por hash e migracoes
approvals.ts fila de aprovacao com expiracao
auth.ts senha com scrypt e credencial por dispositivo
secrets.ts cofre cifrado das chaves
connectors.ts leitura e gravacao do mcp.json, importacao do Claude Code
mcp-oauth.ts fluxo OAuth dos servidores MCP remotos
automation.ts execucao comum de agendamentos e gatilhos
schedules.ts agendamentos por cron
triggers.ts gatilhos com assinatura por fonte, filtro e deduplicacao
webhooks.ts webhooks de saida no formato Standard Webhooks
workflows.ts motor de workflows com checkpoint
worktrees.ts worktree git isolada para subagente
terminals.ts terminais reais por sessao
relay.ts conexao de saida com o relay
a2a.ts cartao do agente e JSON-RPC do protocolo A2A
mcp-server.ts servidor MCP por stdio
otel.ts, push.ts OpenTelemetry e notificacoes pushServidor MCP para outros clientes
agent-hub-daemon mcp expoe o daemon por stdio com as ferramentas
list_agents, list_sessions, run_agent e cost_report. Assim o Claude
Code ou o Claude Desktop disparam seus agentes nesta maquina:
{
"mcpServers": {
"agent-hub": {
"command": "node",
"args": ["/caminho/agent-hub/daemon/dist/cli.js", "mcp"]
}
}
}run_agent roda em modo draft por padrao (sem escrita nem execucao).
normal segue a politica do perfil e aprovacoes pendentes expiram em
approval_timeout_ms; auto_approve libera tudo, exceto padroes destrutivos,
que continuam pedindo aprovacao.
Fases por perfil
Um perfil com phases expoe ao modelo apenas as ferramentas da fase atual e
avanca quando a ferramenta de sinal (plan, done) e chamada ou quando
max_steps da fase termina.
Workflows
agents/workflows/*.yaml descrevem sequencias fixas: etapas tool rodam sem
modelo, etapas agent chamam um perfil com ferramentas restritas e podem exigir
output_schema, etapas gate param para o usuario decidir quando a confianca
fica abaixo do limiar. O custo maximo e calculado antes de rodar, e um workflow
interrompido continua do ultimo checkpoint com --continuar.
Sandbox por container
Perfil com sandbox: { image: "node:22", network: false } executa
run_command dentro de docker run --rm com o workspace montado em
/workspace. Execucao allow em perfil sem sandbox e rebaixada para ask.
Delegacao
Um perfil com delegates: [outro] ganha delegate, spawn e collect. O run
filho roda com o outro perfil, sem o historico da sessao, opcionalmente numa
worktree git isolada. O custo do filho entra no run pai.
Observabilidade e notificacoes
otel_endpointno config (ouOTEL_EXPORTER_OTLP_ENDPOINT) liga um span por chamada ao modelo e por ferramenta, em OTLP/HTTP com atributosgen_ai.*.Push do PWA: chaves VAPID em
~/.agent-hub/vapid.json, envio em aprovacao pendente, fim de run e automacao concluida.
Compartilhar modelos
src/compartilhar.ts implementa os dois lados. Anfitriao abre uma conexao de
dispositivo no relay por convite, com a sala e a chave de ponta a ponta daquele
convite, e atende so /v1/chat/completions e /v1/models dos modelos liberados,
com limite diario e um pedido por vez, repassando ao Ollama local. Convidados
guarda os convites recebidos (sala cifrada, fora do ambiente do processo), gera
um perfil por modelo e expoe /compartilhado/<id>/v1 so para a propria maquina;
o adaptador compativel com OpenAI do agente fala com esse endereco, que atravessa
o relay. Teste de ponta a ponta em scripts/compartilhamento/testar.sh.
Acesso remoto
Com relay_url no config, o daemon abre conexao de saida para o relay e passa a
receber clientes e webhooks por la. Gatilhos ficam em agents/triggers/*.json
ou pela interface; o relay os recebe em POST /hooks/<device_id>/<trigger_id>.
Parte do Agent Hub
Este repositorio e uma das partes do Agent Hub, um gerenciador de modelos de IA que roda na sua maquina. A documentacao geral esta na wiki.
Repositorio | Papel |
ponto de partida, Makefile, scripts e wiki | |
biblioteca TypeScript: adaptadores, laco do agente, custo, roteamento, ferramentas, protocolo | |
servico local: sessoes, runs, aprovacoes, automacao, conectores, API WebSocket | |
interface Vue 3 como PWA, a mesma no navegador, no celular e no desktop | |
perfis, papeis, skills, workflows, precos, roteamento e politicas, em texto | |
app Tauri 2 para Windows e Linux | |
retransmissor sem estado para acesso remoto | |
clientes em plataformas de mensagem, hoje Telegram | |
planejamento, arquitetura, ADRs e a fonte das paginas da wiki |
Licenca
PolyForm Noncommercial 1.0.0. Pode ler, estudar, modificar e usar para fins pessoais, de pesquisa, ensino ou em organizacao sem fins lucrativos. Uso comercial nao e permitido sem autorizacao do autor.
Required Notice: Copyright (c) 2026 Raylison Nunes (https://github.com/raylison100)
This server cannot be deployed
Maintenance
Related MCP Connectors
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Remote MCP server to read and manage your Atako AI agents, messages, files, and integrations.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides a stdio MCP server for single-user local operation of the otaman platform, enabling agent orchestration, slash commands, and skill management within Claude Code without a remote bridge daemon.2AGPL 3.0
- AlicenseAqualityBmaintenanceEnables an AI agent to run local tools on the user's own machine via stdio, including command execution, workspace file read/write, and system status checks.52MIT
- FlicenseNot gradedqualityCmaintenanceEnables MCP-compatible hosts such as OpenCode to drive the Codex CLI through codex app-server over stdio, exposing tools to run prompts, inspect status, list threads, and interrupt running turns.-
- AlicenseNot gradedqualityCmaintenanceExposes OpenClaw gateway tools to MCP clients like Claude Code and Codex, enabling local tool calls, file operations, and subagent session management through a stdio MCP server.321 npmMIT