For the full product overview (what ships today), see the root README.md. This doc tracks tool agents and future channel ideas.
mac-stats is a local AI agent for macOS that provides a range of features, including:
- CPU, GPU, RAM, and disk usage monitoring
- Ollama chat and Discord bot functionality
- Task runner and scheduler
- MCP integration
Download the latest release from GitHub and drag the app to the Applications folder.
git clone https://github.com/raro42/mac-stats.git && cd mac-stats && ./runOr one-liner: curl -fsSL https://raw.githubusercontent.com/raro42/mac-stats/refs/heads/main/run -o run && chmod +x run && ./run
- Menu Bar: Displays CPU, GPU, RAM, and disk usage at a glance. Click to open the details window.
- AI Chat: Ollama chat and Discord bot functionality.
- Discord Agent: Handles Discord DMs and @mentions.
Ollama invokes tools by replying with one line: TOOL_NAME: <argument>. The app sends the full list of active agents (including SCHEDULER as informational only). Implemented tools include:
- FETCH_URL: Fetch a web page's body as text (server-side, no CORS).
commands/browser.rs. - BRAVE_SEARCH: Web search via Brave Search API.
commands/brave.rs; requiresBRAVE_API_KEY. - PERPLEXITY_SEARCH: Perplexity API search; results injected for Ollama to summarize.
- RUN_CMD: Run allowlisted shell commands (e.g.
ps,wc,uptime,cursor-agent). Seedocs/033_docs_vs_code_review.mdfor allowlist. - RUN_JS: Execute JavaScript (e.g. in CPU window).
- BROWSER_SCREENSHOT: Open URL via CDP, save PNG to
~/.mac-stats/screenshots/; used by Discord and chat. - SCHEDULER: Informational; Ollama can recommend recurring/one-shot tasks; actual add/remove via SCHEDULE / REMOVE_SCHEDULE.
For the full table and invocation details, see docs/README.md (Tool Agents) and docs/007_discord_agent.md.
- Backend Fetch: Tauri command
fetch_pageinsrc-tauri/src/commands/browser.rs;FETCH_URL: <url>in chat and Discord. - BROWSER_SCREENSHOT: CDP-based screenshot to
~/.mac-stats/screenshots/; invoked viaBROWSER_SCREENSHOT: <url>.
- Mail: IMAP/OAuth integration via a dedicated module.
- WhatsApp: WhatsApp Business API or unofficial APIs.
- Google Docs: Google APIs (OAuth) integration.
- Module:
src-tauri/src/discord/mod.rs. - Credentials: Discord Bot Token in Keychain (
discord_bot_token). - Reply Pipeline: Discord handler uses the shared "answer with Ollama + fetch" API.
- Current Behaviour: A single
OllamaClientis stored when the user configures Ollama. - Done:
send_ollama_chat_messagesnow uses the storedOllamaClient's HTTP client (viaOllamaClient::http_client()) instead of creating a newreqwest::Clientper request. The stored client is built with the app's chat timeout (Config::ollama_chat_timeout_secs()) viaOllamaConfig::timeout_secs.
See 006-feature-coder/FEATURE-CODER.md for the current FEAT backlog. Remaining items:
- Implement Mail, WhatsApp, and Google Docs integrations.