observal-pi
Observal session telemetry for Pi — zero-dependency extension that pushes session traces to your Observal server
Package details
Install observal-pi from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:observal-pi- Package
observal-pi- Version
1.10.3- Published
- Jul 21, 2026
- Downloads
- 2,503/mo · 349/wk
- Author
- shaannarendran
- License
- Apache-2.0
- Types
- extension
- Size
- 48.7 KB
- Dependencies
- 0 dependencies · 1 peer
Pi manifest JSON
{
"extensions": [
"./extensions/observal.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
observal-pi
Session telemetry extension for Pi that pushes conversation traces to your Observal server.
Install
pi install npm:observal-pi
Prerequisites
- An Observal account (run
observal auth loginto authenticate) - Pi installed (
>=0.74.0)
What it does
- Incremental push: After each user prompt (
agent_end), durably stages new JSONL lines before sending them to Observal - Acknowledged checkpoints: Advances byte and line cursors only after a contiguous server acknowledgement
- Final push: On session exit, sends remaining lines and a SHA-256 audit manifest; mismatches replay from the requested range
- Crash recovery: Retries durable pending batches and rebuilds missing/corrupt cursors from the authenticated server checkpoint
- Status indicator: Shows
● observalin the footer with line count
Commands
| Command | Description |
|---|---|
/obs-sync |
Show sync status (lines pushed, server URL) |
/obs-sync flush |
Force push pending lines now |
/obs-sync config |
Show config file path and server URL |
Design
- Zero dependencies: only
node:*built-ins - Fail-open: never throws, never crashes pi. If the server is unreachable, pi continues normally
- 5s timeout: all HTTP calls abort after 5 seconds
- Chunked uploads: batches of 500 lines max per request
- Retry-safe: pending batches retain stable source indexes and are retried until acknowledged
Configuration
The extension reads credentials from ~/.observal/config.json (written by observal auth login):
{
"server_url": "https://your-server.observal.dev",
"access_token": "..."
}
Acknowledged cursors are stored atomically in ~/.observal/sync_state.json. Unacknowledged Pi batches remain in ~/.observal/pi_session_outbox/ until the server confirms a contiguous checkpoint.
License
Apache-2.0. See LICENSE