ContextPulse is a local-first ambient context tool for AI agents, running as a desktop daemon that lets agents such as AI coding assistants "see" the screen, "hear" speech, and understand what the user has just done. The current version is the v0.1-alpha developer preview, and the project is still under active development, so the API and configuration may change between versions.
-
Main purpose ContextPulse is designed to fill the gap in AI assistants' lack of ambient awareness. It captures the screen, speech, keyboard and mouse activity, and clipboard content in real time, then delivers them to AI agents through the Model Context Protocol (MCP). A tray-icon daemon handles capture, and a companion MCP process provides the data to agents. It has been MCP-native from day one, exposing all context as MCP tools over streamable HTTP, so any standards-compliant MCP client can read it without custom integration.
-
Main capabilities
-
Multimodal capture: screen capture (including OCR), speech dictation, and keyboard/mouse input all run in the same background process, with no need to stitch together multiple tools.
-
Toolset: 37 MCP tools in total, of which 33 are free (11 Sight, 7 Voice, 3 Touch, 5 Project, 5 Memory, 2 Recall), while the Pro version additionally provides 4 search tools (semantic memory search plus cross-modal event queries). The two Recall tools read the nightly distilled fact store, so they will not return anything until the consolidator has run at least once.
-
Memory architecture: a hot/warm/cold three-tier architecture—in-memory LRU cache → SQLite WAL + FTS5 → compressed archive. The optional pip install contextpulse-memory package provides these tools.
-
Background learning tools: including vocabulary consolidation and correction detection, which run automatically to gradually improve transcription quality.
-
Local storage and search: all modules emit events to a shared EventBus and write to a local SQLite database (with FTS5 full-text search). The MCP server never writes to activity.db; that pipeline is for capture only; the memory server is the exception, writing to its own memory.d by design through memory_store and memory_forget.b.
III. Usage
- Configuration and installation: Run contextpulse --setup to write an authenticated contextpulse entry into Claude Code, Cursor, and Gemini CLI. An access token is created on first run; after regenerating the token, it must be run again. Then start ContextPulse.
- MCP integration: Can be added to ~/.claude.json. The endpoint requires an access token, generated once per installation on first use and stored with user-only permissions: on Windows at %APPDATA%\ContextPulse\mcp_token, on macOS at ~/Library/Application Support/ContextPulse/mcp_token, on Linux at $XDG_CONFIG_HOME/ContextPulse/mcp_token. It can be printed with contextpulse-mcp --print-config claude-code, or viewed in the tray under Settings -> MCP Access. Configuration snippets for Cursor, Gemini CLI, and Claude Desktop, along with troubleshooting, are in docs/mcp-configs.
- Security notes: The token can defend against other local callers, such as other accounts on the machine, sandboxed applications with loopback access, and other MCP clients and agents; however, it cannot defend against a process already running as the current user, because that process can directly read the token file and database. Captured text is redacted before storage and before being returned by any MCP tool. Rows written before 0.1.1 are redacted in place via a one-time scan on the first startup of the daemon or MCP server after upgrading; scripts/purge_clipboard_secrets.py can also be run manually. See SECURITY.md for filter coverage.
- Network features (all disabled by default): Semantic memory search downloads the embedding model from huggingface.co on first use, only once, and then runs offline; voice LLM cleanup sends dictated text to the Anthropic API to correct grammar and remove filler words, and requires providing akey in voice_anthropic_api_key (or ANTHROPIC_API_KEY) and enabling voice_always_use_llm. The same key also allows the vocabulary learner to send recent transcription pairs to Anthropic to identify words that speech recognition consistently mishears; the fact consolidator scripts/probe_consolidator.py distills recent captured events into facts via the Claude CLI, and that prompt includes the app name, window title, and the captured text itself, and only runs when you run or schedule that script.
IV. Use cases Suitable for users who want to give AI coding assistants access to screen, voice, and action context, as well as developers who need to keep data local and avoid cloud dependencies. Free features are available permanently and require no license; Pro is an optional paid tier unlocked by an offline-verified license key and offers a 30-day trial that starts on first use, with no credit card required. Commercial licensing is available for embedding into proprietary products.
V. Limitations and considerations The project is a developer preview, and the API and configuration may change. Core functionality requires no account, but it will not contact any third-party servers until the optional network features above are enabled, two of which send captured text to Anthropic and are disabled by default. Once an agent has read tool results, how they are subsequently handled depends on the client: local models keep them on the machine, while cloud clients send them to their provider like any other prompt, and ContextPulse cannot see or control that hop. The license is the GNU Affero General Public License v3.0 (AGPL-3.0): free to use, modify, and distribute, and if modified and deployed as a service, the changes must be open-sourced. The project is built by Jerard Ventures LLC, whose unified multimodal context delivery system is patent pending.