roxabi-sense
Local workstation attention journal that tracks focus, idle, and agent sessions, exposing timeline data via MCP for AI agents to query current or past activity.
README
roxabi-sense
Workstation attention journal — light sensors, local store, agent surfaces.
Status: scaffold · design locked · implementation not started
Not screenpipe. Not a web SaaS. Not insideroxabi-factory.
Why
Screen capture + OCR is the wrong tool for “what was I doing?”.
You already have timestamped work in ~/.claude and ~/.grok. Meetings live in Claap. What is missing is a cheap focus spine: which app/window was active, which agent sessions were open, whether Slack/Discord was running — without pixels, keyloggers, or a 174 MB trial for 40 seconds of frames.
roxabi-sense is that spine. It publishes facts, not policy.
What it is / is not
| Is | Is not |
|---|---|
Local user-session daemon (systemd --user) |
Factory hub module |
| CLI + optional MCP + optional NATS publisher | Screen OCR / continuous screenshots |
| Reads existing Claude/Grok session artifacts | Re-logs AI conversations |
| Focus / idle / process presence | Meeting recorder (→ Claap) |
| Edge sensor for Sentinelle later | Sentinelle decision brain (→ factory hub) |
Architecture (target)
collectors (facts only)
┌─────────────┐ ┌──────────────┐ ┌────────────────┐
│ focus/idle │ │ agent sessions│ │ process presence│
│ (Wayland / │ │ ~/.claude │ │ slack/discord │
│ AT-SPI) │ │ ~/.grok │ │ (running?) │
└──────┬──────┘ └──────┬───────┘ └───────┬────────┘
│ │ │
└────────────────┼───────────────────┘
▼
local store (SQLite)
~/.local/share/roxabi-sense/
│
┌───────────────┼────────────────┐
▼ ▼ ▼
CLI MCP NATS (opt-in)
day-slice agent query factory.event.host.*
status what_was_i… activity | stale only
Boundary (ADR-091-aligned): sensors publish facts; roxabi-factory Sentinelle (hub module, not shipped yet) may consume host events and decide. This repo never opens Discord, never dispatches jobs, never applies ops policy.
| Surface | Granularity | Depends on factory? |
|---|---|---|
| Local store + CLI | Fine timeline | No |
| MCP (stdio) | Query on demand | No |
| NATS plane ① | Coarse heartbeats (activity / stale) |
Yes (bus up) |
Details: docs/ARCHITECTURE.md · purpose: docs/PURPOSE.md
Stack decision
Local daemon + CLI + MCP — not a Silex web boilerplate.
| Candidate | Verdict |
|---|---|
silex-boilerplate / Next / multi-page web app |
No — that shape is for client demos & product UI, not a user-session sensor |
Full stack inside roxabi-factory |
No — factory owns Sentinelle consumer; capture stays on the workstation |
Python 3.13 + uv + systemd --user |
Yes — matches Roxabi satellites (voiceCLI, xcli, cortex packages) |
SQLite under ~/.local/share/roxabi-sense/ |
Yes — single-machine, Syncthing-friendly if paused |
| MCP stdio | Yes — Claude / Grok / Hermes |
| NATS publisher (optional extra) | Yes later — facts only, feature-flagged |
Tiny 127.0.0.1 status page |
Optional V2 — human glance only, not the product surface |
Setup model (target)
# 1. install
git clone git@github.com:Roxabi/roxabi-sense.git
cd roxabi-sense && uv sync
# 2. enable user service (writes unit under ~/.config/systemd/user/)
uv run sense install-service
systemctl --user enable --now roxabi-sense.service
# 3. human CLI
uv run sense status
uv run sense day --from 14:00 --to 16:00
# 4. agents (Claude Code / Grok) — MCP stdio
# mcpServers.sense.command = ["uv", "run", "--directory", ".../roxabi-sense", "sense", "mcp"]
# 5. optional NATS (when factory Sentinelle is ready)
# sense config set nats.enabled true
# sense config set nats.url nats://...
No Podman required on the laptop for V1. M₂ may use the same user unit. M₁ host-sensor path (services snapshot only) is a later collector, not a Quadlet of this whole app.
Roadmap (coarse)
| Phase | Deliverable |
|---|---|
| 0 — this scaffold | Public repo, purpose, architecture, empty package |
| 1 — local spine | Agent-session collector + store + CLI status / day |
| 2 — focus | Wayland/COSMIC focus + idle (AT-SPI first) |
| 3 — MCP | 3–5 tools (active_now, what_was_i_doing, agent_sessions, …) |
| 4 — NATS opt-in | factory.event.host.{machine}.activity|stale for Sentinelle |
| 5 — optional | Process presence, filtered browser history, local status HTTP |
Out of scope forever (for this repo): OCR, continuous screenshots, keylogging, clipboard dumps, scraping Slack/Discord desktop clients, meeting transcription.
Relation to the rest of Roxabi
| Project | Relation |
|---|---|
roxabi-factory |
Future consumer (Sentinelle hub module). Not the home of collectors. ADR-091 factory-host-sensor role lives here as an edge process. |
roxabi-cortex |
Downstream memory/insight may ingest sense observations later. Sense stays capture + query, not the entity graph. |
| Claap | Meetings — do not duplicate |
~/.claude / ~/.grok |
Read-only sources for agent presence |
License
AGPL-3.0-or-later (same family as roxabi-cortex).
Status
Scaffold only — no collectors yet. Design intent is frozen enough to implement phase 1 without another product loop.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。