Infrastructure Paws
Infrastructure Paws provide lifecycle hooks and internal services. Unlike Tool Paws, they don't register tools the Brain calls directly — they operate behind the scenes to enrich context, manage state, and provide monitoring.
Available Infrastructure Paws
paw-memory
Persistent memory with source-isolated daily logs and BM25 ranked search.
vole paw add @openvole/paw-memoryHooks: bootstrap, observe
Storage structure:
.openvole/paws/paw-memory/
├── MEMORY.md # Shared long-term facts
├── user/ # CLI session logs
├── paw/ # Telegram/Slack logs
└── heartbeat/ # Heartbeat logsMemory is scoped by task source — CLI conversations, channel messages, and heartbeat tasks each get their own daily logs. This prevents cross-contamination between sources.
Tools: memory_read (read a memory file), memory_write (append an entry), memory_search (BM25 ranked search), memory_list (list memory files).
paw-session
Conversation continuity across messages. Auto-expiring transcripts per session ID.
vole paw add @openvole/paw-sessionHooks: bootstrap, observe
Session data lives in .openvole/paws/paw-session/, organized by session ID:
.openvole/paws/paw-session/
├── cli:default/ # CLI session transcript
├── telegram:123/ # Telegram chat transcript
└── slack:C456/ # Slack channel transcriptThe session paw loads previous messages from the current session during bootstrap, giving the Brain conversation context.
Tools: session_history (read a session's transcript), session_list (list active sessions), session_clear (remove a session), and session_append — append a single transcript entry outside the Brain loop (e.g. peer-to-peer human chat). session_append takes an optional maxMessages retention cap that trims the transcript to the last N messages after writing.
paw-compact
Context compaction — summarizes old messages when context grows too large.
vole paw add @openvole/paw-compactHooks: compact
Runs as an in-process paw (not subprocess) for performance. When the message count exceeds compactThreshold, it:
- Extracts key information from old messages (tool calls, results, responses, errors)
- Replaces middle messages with a structured summary
- Keeps the first message (original input) + recent N messages verbatim
No LLM needed — pure extraction. Fast and free.
paw-dashboard (deprecated)
WARNING
@openvole/paw-dashboard is deprecated in favor of vole serve — the control-plane dashboard that manages all your agents from one web server. It still works but logs a deprecation warning on load and will be removed in a future release. Use vole serve for a UI instead.
The legacy single-engine web control panel — monitor and operate one agent from your browser: paws (with health), tools, skills, tasks, schedules, and live events, plus editing config and identity files and restarting the engine.
vole paw add @openvole/paw-dashboard| Env Variable | Purpose |
|---|---|
VOLE_DASHBOARD_PORT | Port for the dashboard (default: 3001) |
Configuration:
{
"name": "@openvole/paw-dashboard",
"allow": {
"listen": [3001],
"env": ["VOLE_DASHBOARD_PORT"]
}
}The dashboard connects to the engine's message bus and streams state updates over WebSocket — no polling. It's a full control panel, not just a viewer:
- Config editor — edit
vole.config.jsonacross 8 sections (brain, heartbeat, loop, security/Docker, paws, tool profiles, agents, net) - Identity editor — edit
SOUL.md,USER.md,AGENT.md,HEARTBEAT.md, andBRAIN.md - One-click restart — apply config/identity changes in-process, no terminal needed
- Live event log — task lifecycle, paw/tool registration, crashes, rate limits, VoleNet executions
Embedded Dashboard Panels
Any paw — not just infrastructure paws — can ship its own UI that appears under the dashboard's Apps tab, with no per-paw web server and no extra port. See Build an Embedded App for the how-to; @openvole/paw-markets is the reference example.
