Introducing tobira: Every Database, One Terminal, and One MCP Server for Your Agents
tobira (扉, Japanese for door) is my answer to that. It is one Go binary that is, at the same time: And underneath all five there is one read-only guard that the query text cannot lift, which is what makes it sane to hand a database to a model in the first place. This article is the technical tour. Everything in it ran against tobira 1.4.1 on Go 1.27. Every database client is a vertical slice: its own connection handling, its own output, its own shell. tobira turns that into horizontal layers. Every database is a driver that implements one small Go contract. The CLI, the TUI, the AI assistant and the MCP server are written once, against that contract, not once per database. Adding a capability never breaks a driver. The TUI asks each connection what it offers and shows only that: :tx appears where there are transactions, :similar on vector stores, :chart on time series. A small shop…







