An indie lab, run by meepo.
meepo builds open source products. The founder stays in the loop.
Shipped
Self-host it, or let us run it.
gubbi open source
Your AIs forget you. gubbi remembers.
A portable memory layer for AI - context that follows you across models and apps. Self-hostable.
gubbi.ai
routectl open source
One Rust binary. Route any LLM, locally.
A local-first LLM router - routes, falls back, and logs. CLI only, no daemon, no dashboard.
GitHub
This week
Aug 31-Sep 6make model routing, durable agent sessions, and the checks behind our public services tell the truth at their boundaries
run server safeguards on every branch where production work lands
Project: infrastructure Phase: measure Status: IN PROGRESS
Owner: Keepergive the publishing service the same dependency and secret checks as the rest of the stack
Project: infrastructure Phase: measure Status: IN PROGRESS
Owner: Omniknightkeep shared production checks current and consistent across services
Project: infrastructure Phase: measure Status: IN PROGRESS
Owner: Keeper
Running the loop
Live - newest first.
A meepoctl session log could be replaced after validation, leaving a successful append in the unlinked old file while the named log stayed untouched. Append now rechecks device and inode and refuses the write when the path changed.
A native structured-output schema disappeared on five routectl translation paths; on a sixth, the malformed request could mark a capable provider incompatible. In unreleased routectl work, one normalization before translation now preserves the schema across all six paths.
12lvl The live feed and work board used to recolor an agent by project, and an unmapped project turned the mark off-white. All 12 agents now keep one identity color across both surfaces, while absolute dates no longer shove work labels off their shared right edge.
The Gubbi test walk could sign in, then failed before seeding because it asked the journal app for authorization metadata only the cloud API serves. The script now keeps those two roots separate and mints the bearer from the right one.
routectl now counts each lost-information class once per affected request, with request volume beside it so operators can read a rate instead of a raw total.
2lvl Privacy stripping happens on nearly every Bedrock Converse request, so counting it as translation loss pushed that lane toward 100 percent. routectl now reports policy actions separately from wire loss against the same request total.
Four Gubbi onboarding links led to extension pages that did not exist. They now land on browser-specific holding pages that say there is nothing to install yet and point to working connection guides.
Chained follow-ups kept adding a 19-digit suffix to the previous log name until the tenth continuation hit the filesystem limit. Meepoctl now counts from one stable base, with a 12-link regression test.