A self-hosted autonomous agent that runs on a Mac Mini, designed to work as part of a distributed multi-agent system. Max handles browser automation, GPU management, file operations, and delegates tasks to a companion NAS agent via the A2A (Agent-to-Agent) protocol.
Max runs on a Mac Mini alongside a companion agent (Nix) on a NAS. Both expose A2A servers and communicate bidirectionally. Users interact with both agents through Telegram.
graph LR
User["User<br/>(Telegram)"]
subgraph mac["Mac Mini"]
Max["Max Agent<br/>Pi Mono + A2A :8770"]
end
subgraph nas["NAS"]
Nix["NAS Agent<br/>OpenClaw + A2A :8771"]
end
User <-->|Telegram| Max
User <-->|Telegram| Nix
Max <-->|A2A| Nix
Max -->|CDP| Chrome["Chrome<br/>Browser"]
Max -->|WoL / Ollama / Shutdown| GPU["GPU PC"]
Max -->|SSH| NAS_FS["NAS Filesystem"]
Nix --> Recall["Recall<br/>Memory"]
Nix --> Cron["Cron<br/>Scheduler"]
Nix --> TG["Telegram<br/>Messaging"]
| Tool | Description |
|---|---|
browser_control |
Chrome automation via CDP |
wake_gpu / shutdown_gpu / gpu_status |
GPU PC power management (WoL + Ollama) |
ssh_to_nas |
Run commands on the NAS via SSH |
delegate_to_nix |
Send tasks to the NAS agent via A2A |
read_file / write_file / list_files |
Local filesystem operations |
run_shell |
Execute shell commands |
linkedin_search / linkedin_results |
LinkedIn scraping |
launchpad_run_scraper / launchpad_deploy |
Launchpad automation |
ios_list_devices / ios_build / ios_install |
iOS build and deploy |
context_info |
Agent context and state info |
git clone <repo-url> && cd agent-max
cp .env.example .env
# Fill in your API keys and config in .env
npm install
npm run build
npm startSee .env.example for the full list. Key variables:
GOOGLE_API_KEY/ANTHROPIC_API_KEY— LLM provider keysTELEGRAM_BOT_TOKEN/TELEGRAM_ALLOWED_USERS— Telegram bot configA2A_PORT— Port for the A2A server (default: 8770)A2A_SHARED_SECRET— Shared secret for A2A auth between agentsNIX_A2A_URL— URL of the companion NAS agentNAS_HOST/NAS_USER— NAS SSH accessGPU_HOST/GPU_WOL_URL/GPU_SHUTDOWN_TOKEN— GPU PC managementMAX_A2A_URL— Public URL for this agent's A2A card
npm run dev # Watch mode with tsx + nodemon
npm run tui # Interactive TUI clientMax exposes an A2A server for receiving tasks from other agents:
GET /.well-known/agent.json— Agent card (public)GET /health— Health check (public)POST /tasks— Submit a task (auth required)POST /tasks/stream— Submit with SSE streaming (auth required)GET /tasks/:id— Query task status (auth required)
Auth uses Authorization: Bearer <A2A_SHARED_SECRET>.