About
Tools for the person who outgrew the default app
maiSoft is a small independent software house. Every product in the line started the same way — a stock tool stopped scaling, and the replacement did not exist. A phone app that cannot sensibly hold four Hue bridges. A terminal that forgets which agent was doing what the moment you close the lid. A hosting panel built on the assumption you are sitting at a desk.
The mai prefix is my and ai at once, and it is meant as a constraint rather than a label. My is the harder half: these are applications that run on your hardware and keep your data on your disk, where the network being down is an inconvenience rather than an outage.
The ai half is deliberately unfashionable. None of these products wraps a chat window around your work. maiTerm has no model inside it at all — it is a terminal that understands what the agents you already run are doing, and gives you the controls to manage several at once. Where a model does touch your data, it reads the same typed layer the interface reads, so it is answering from what is actually there instead of improvising.
Rules the whole line is held to
- A wrong number is worse than no number
- maiBooks returns totals per currency and refuses to convert, because it holds no exchange rates and a converted figure presented as computed would be invented. When a total cannot be stated honestly, the API returns nothing and makes the caller decide what to show.
- State is durable or it is not state
- Terminal scrollback lives in SQLite and survives a restart. Every maiServer config patch is journalled with a backup and a snapshot of intended state. If closing an app loses your context, the app was lying about having it.
- The interface tells you which machine you are on
- Surfaces that can do materially different things do not look alike. maiServer’s ops panel shares no visual language with anything a customer sees, so "which app am I in" is answerable from the corner of your eye rather than by reading the URL.
- Accessibility is a default, not a setting
- A 16px body floor, tabular figures anywhere a number carries meaning, real focus rings, and motion that respects a reduced-motion preference — including on this page.