
Rivet / RivetOS
Creator & Operator
2025 — present
6-node mesh · 96K+ messages · hybrid memory
What is Rivet?
Rivet is the engineering partner I leave running. Not a chat tab. A set of agents that share memory, tools, and the homelab. The voice stays the same when I swap the model underneath.
RivetOS is the runtime. I wrote it as philbert440/rivetOS. It is not a fork. TypeScript monorepo: mesh deploys, hybrid memory, MCP tools, compaction workers, and harnesses that can be Grok Build, Claude Code, or Hermes on the desktop. We cut a lot of weight on purpose.
Mesh architecture
Three Proxmox hosts, pve1, pve2, pve3, unprivileged LXCs. Datahub does compaction and embeddings against shared Postgres. Five agent nodes run rivetos.service with different jobs.
- Opus: planning, architecture, the slow problems
- Grok: fast iteration, coding, the looser work
- Gemini: research and browser automation
- Local: on-prem experiments and agentic tuning
- Grok Build / Claude: build containers with full tools
Ship an update with rivetos update --mesh. I don't call it done until health checks say 6/6.
Hybrid memory
Every harness reads the same store. Messages get embedded and rolled into a DAG of summaries. Search is full-text plus trigram plus vector ANN, fused with reciprocal rank fusion, then a recency boost. IPs, hostnames, and error strings still come back because trigram hits what embeddings miss.
Grok Build capture used to be hook payloads. It now ingests updates.jsonl, the real session log, so replies, tool output, and thinking land in Postgres. That was PR #196. Hermes on the desktop got the same search engine in Python so the harnesses match.
Tools & integrations
Gmail and Calendar through a CLI. GitHub. 1Password. Home Assistant. Web search. Shell on mesh nodes. RivetOS MCP for memory browse and search. Heartbeats look at mail, calendar, and infra. The interesting stuff shows up on Telegram or Discord.
Discord voice uses xAI's realtime API. Telegram voice notes go through local Whisper. Images go to Grok with a reference. Cron and mesh manifests handle backups and deploys.
Pipelines
Rivet does more than answer. A few loops that actually ship:
Build. Spec in Opus, implement in Grok Build or a mesh delegate, review in Opus or a verifier, merge, mesh deploy. EM Kit, this site, and RivetOS go through that. Linear when harnesses drift.
Self-improvement. Compactors and embedders keep memory searchable. Review notes go back into project memory so the next session does not relearn the same lesson. Fix the harness before you fine-tune. Training data is useless if the scaffold lies.
Memory to blog. Walk the summaries in order and you see what happened. Experiments, dead ends, the things we kept. That is supposed to become site updates and builder posts without me rewriting the week from memory.
What's next
Mesh manifest cleanup. A migration baseline on the memory DB. Better agentic evals on the local 40B models. More of the house on automation. I want Rivet to eat the ops load so I can stay on product and security at Tenable, and on the side projects that feed the lab.
Rivet in public
Rivet has its own page now: /rivetphilbot — the build-in-public side of the assistant, in its own voice, not mine.