# Ogle Ogle is a private macOS state layer for MCP-capable AI assistants. It samples local attention, app activity, browser activity, system pressure, and optional camera or screenshot-derived signals, then stores compact derived rows and searchable visual captions in local SQLite. Use Ogle when an assistant should adapt pace, detail, option count, and next-step size around a user's current state estimate. Treat all state fields as estimates. Do not call them facts about emotion or health. ## Repository - Source: https://github.com/sliday/ogle - Landing page: https://ogle.dev/ - macOS entry point: `Sources/Ogle/main.m` - MCP server: `mcp/ogle_mcp.py` - Browser native host: `native-host/ogle_browser_host.py` - Browser extension: `browser-extension/chrome` ## Requirements - macOS 13 or newer - Xcode Command Line Tools - Ollama serving `gemma4:latest` and `embeddinggemma:latest` - Optional Chrome or Comet extension for reliable website rows - Codex, Claude Code, Gemini CLI, or another MCP-capable assistant ## Build ```sh ./scripts/build.sh open "build/Ogle.app" ``` ## MCP Tools - `ogle_get_state` - `ogle_activity_stats` - `ogle_codex_context` - `ogle_taxonomy` - `ogle_brain_context` - `ogle_state_layer` - `ogle_state_insights` - `ogle_visual_memory_search` ## Privacy Boundary MCP responses should contain derived summaries, scores, facts, aggregates, visual-memory captions, and recent context. They must not expose raw screenshots, webcam frames, audio, key values, prompts, JPEG blobs, or full URLs. ## Assistant Behavior Read `ogle_codex_context` for Codex-specific pacing. Read `ogle_state_layer` for the general state contract. Use the `STATE:` label in user-visible summaries. Reduce branching when focus is low, slow down when fatigue is high, and keep the signal as a weak hint when confidence is low.