rmcp-presence

Auditable, permissioned environmental awareness for agentic AI systems.

Give your AI eyes and hands without giving it a shell.


Why This Exists

You could give your AI bash access. But should you?

Approach Auditable Sandboxed Cross-platform Safe
Shell access ❌ Logs everything ❌ Full system access ❌ Platform-specific ❌ Injection risks
rmcp-presence ✅ Every tool call logged ✅ Only enabled tools ✅ Sensors + actuators ✅ No arbitrary execution

170 tools. One binary. Zero shell access.

cargo install rmcp-presence

What It Can Do

Perceive (Sensors)

Act (Actuators)

Control (Linux)


Composite Tools

8 composites provide environmental snapshots in a single call:

Composite What You Get
get_context System state, datetime, user, battery, idle
get_peripherals Displays, USB, cameras, mics, bluetooth
get_network_info Online status, public IP, interfaces
get_audio_status Volume, mute, devices, now playing
get_git_info Branch, commit, working tree, remotes
get_workspace_status Workspaces, focused window, outputs
get_bluetooth_status Adapter, paired devices, connections
get_ollama_status Models installed, models running

One tool call instead of many. Less context, faster orientation.


Architecture

┌──────────────────────────────────────────────────────────────┐
│                       rmcp-presence                           │
│                    (single binary, 13MB)                      │
├──────────────────────────────────────────────────────────────┤
│  Layer 3: Linux         │  79 tools — Linux only             │
│  (conditional)          │  i3, xdotool, mpris, systemd,      │
│                         │  brightness, bluer, dbus,          │
│                         │  logind, pulseaudio                │
├──────────────────────────────────────────────────────────────┤
│  Layer 2: Actuators     │  48 tools — Cross-platform         │
│  (all platforms)        │  clipboard, audio, trash, open,    │
│                         │  screenshot, camera, mic,          │
│                         │  ollama, breakrs, printers         │
├──────────────────────────────────────────────────────────────┤
│  Layer 1: Sensors       │  35 tools — Cross-platform         │
│  (all platforms)        │  sysinfo, display, idle, git,      │
│                         │  network, usb, battery, weather    │
├──────────────────────────────────────────────────────────────┤
│  Composites             │  8 tools — Quick orientation       │
└──────────────────────────────────────────────────────────────┘
Platform Tools
macOS ~83
Windows ~83
Linux 170

Runtime Configuration

Disable tools without recompiling. Perfect for restricting capabilities per-deployment.

# ~/.config/rmcp-presence/tools.toml
disabled = [
    "suspend",       # Don't let AI sleep the system
    "poweroff",      # Definitely not
    "print_file",    # No unsupervised printing
]

Every tool has an off switch.


Security Model

rmcp-presence is designed for supervised AI deployments:

  1. No shell access — AI cannot execute arbitrary commands
  2. Typed parameters — Every tool has a JSON schema defining valid inputs
  3. Runtime restrictions — Disable dangerous tools via config
  4. Audit trail — MCP logs every tool invocation
  5. No persistence — Tools are stateless; AI can’t install backdoors

This is not a replacement for proper sandboxing. It’s a safer alternative to giving AI bash.


The Story

This started as 17 separate MCP servers. Each one useful, but scattered. Configure one here, another there, remember which works on which platform…

Then the realization: why make people install 17 servers when they could install one?

Built in a 14-hour marathon session with Claude. 170 tools. Cross-platform sensors, cross-platform actuators, full Linux desktop control. One binary.

The next morning: replaced 17 MCP servers with one config line. Dogfooding complete.


The Vision

“Your AI shouldn’t be trapped in a tab — but it shouldn’t have root either.”

AI assistants are evolving from chatbots to agents. They need to perceive and act on their environment. But giving them a shell is dangerous.

rmcp-presence is the middle ground: presence without privilege.



rmcp-presence consolidates 21 individual crates. They’re still available:

rmcp-sensors · rmcp-clipboard · rmcp-audio · rmcp-trash · rmcp-open · rmcp-screenshot · rmcp-breakrs · rmcp-ollama · rmcp-i3 · rmcp-xdotool · rmcp-mpris · rmcp-systemd · rmcp-brightness · rmcp-bluer · rmcp-dbus · rmcp-logind · rmcp-pulseaudio · rmcp-camera · rmcp-microphone · rmcp-printers


Built with Claude. 170 tools. One binary. Zero shell access.

Pour toujours. 💙

← Back to projects