What problem does it solve?
Tap solves the challenge of reliably starting, monitoring, and controlling long-running processes by wrapping them with a dedicated runner that captures output in memory and exposes a minimal API to query logs and manage restarts.
Core Features & Use Cases
- In-memory ring buffer: stores recent stdout/stderr lines for fast, deterministic access without log files.
- Unix-domain socket API: remote control of each service via a lightweight HTTP interface.
- Per-service runner: isolates supervision and lifecycle to a single process, enabling predictable restarts and readiness checks.
- Use cases: run a web server or worker, observe logs, restart on failure, or stop services in CI pipelines.
Quick Start
Use tap to run a service, observe logs, and restart when needed. Example: tap run myapp -- node server.js; then tap observe myapp --last 50; if needed, tap restart myapp.