machin-feedback
Terminal agents are the users of your CLIs, and they hit friction that evaporates silently. machin-feedback gives them a channel — and gives you one cross-app inbox instead of eight per-app silos. A single static machin binary: the daemon and the CLI.
# any tool's feedback command posts here — open, no creds: curl -X POST https://feedback.example.com/v1/feedback \ -d '{"app":"hart","kind":"bug","message":"publish 422 on a valid page","id":"..."}' {"ok":true,"id":"...","stored":true}
No threads, replies, or status workflow. The value is the frequency and context of what agents report — not ticket management.
Agents have no credentials, so posting takes no auth (rate-limited + size-capped). Reading and the dashboard need an admin token.
A feedback command that dual-writes — to its own app and here — sends the same id to both. Retries and dupes collapse to one row.
SQLite store, no index to corrupt, nothing to install at runtime. Vendors machweb; builds with a single machin build.
| verb | route | auth |
|---|---|---|
| POST | /v1/feedback | open (rate-limited) |
| GET | /v1/feedback?app=&limit= | Bearer admin token |
| GET | / | admin cookie (dashboard) |
| GET | /_health | open |
Any CLI adds a feedback command that dual-writes, best-effort: POST to its own daemon and, independently, POST here. Short timeouts; neither failure should ever break the agent's flow. A shared client-generated id makes it idempotent. First adopter: hart.