An AI assistant that runs on our own hardware.
Frontal is the operations assistant we built for ourselves and run on our own server. It brings mail, payments, renewals, deadlines, projects and the health of our systems into one app made for a phone. A local AI model sorts what comes in, drafts replies and flags what matters, and a decision usually takes one tap.
The problem
Small companies lose things between inboxes.
Replies, promises, renewals and failures slip through when they live in five different places. Frontal exists so that they do not.
It was built for one person and is used by one person. It is not a product: it is here as an example of how we build with AI, useful and private where it can be, and plain about what it does by itself.
What we built
One app on the phone
A home screen, a queue of decisions, mail, projects, notes and history, and a chat that can check live status.
Sorting that learns
A local AI model sorts incoming items by importance, and every correction becomes a rule that overrides the model.
Drafts in the owner's voice
Reply drafts written from the thread, past dealings and the owner's own writing style.
A careful mail client
Several accounts, new mail as it arrives, 30 seconds to recall a send, and undo on every action.
Decisions from the lock screen
Notifications with Send, Later and No buttons, so most decisions take a second.
Standing orders
Pre-agreed replies that earn the right to send on their own through approvals, and lose it after a rejection.
An overnight shift
Open threads re-read overnight, promises recorded only when the quoted words are really in the thread, and replies drafted for the morning.
Voice
Voice memos transcribed on our own hardware into notes and actions, and a spoken morning brief.
Watching the systems
An alert when any source goes quiet, read-only checks on servers and backups, and support messages and stuck jobs picked up from connected systems.
Under the surface
The engineering
- 01
Its own containers, network and database, listening only on the machine itself and reached only over a private network.
- 02
One account, made on first run: scrypt with a per-user salt, constant-time comparison, session tokens stored hashed, and a strict HttpOnly cookie.
- 03
Lock-screen links are stored hashed, work once, expire, and allow one action on one item.
- 04
Text from outside senders is marked as untrusted data wherever it is handed to an AI model.
- 05
Payment and server monitoring are read-only, and the certificate of the server it watches is pinned.
- 06
Nightly backups are checked for integrity, encrypted with AES-256 as they are written, test-decrypted on every run, kept for 14 days and 8 weeks, and copied off-site with a key that can only add files. The restore has been tested.
- 07
The sorting model, speech recognition and speech run on our own GPU. Coding work orders go to Claude Code, and phone notifications pass through a public relay.
Private
Frontal has one user and is not for sale. We show it because it is the clearest example of what we build with AI.
Services this drew on
More work
- Our productVizi PlayerA media player for iPhone and iPad that plays the playlist a person already has. It comes with no content of its own.
- Client workDubai meal-plan marketplaceRebuilding a Dubai meal-plan marketplace: a new back office, customer app, website and API, and menus that load themselves from partner kitchens.
- Our productLinkACodeTurns a server address into a short code, like AB123456. Give out the code instead of the address.
- Our productVantanAn iPhone and iPad app for watching the IP cameras you already own, privately: the video goes from the camera to your phone and nowhere else.
- Our productVVS PanelOur foundation for client back offices: a React design system for admin panels built around each client's own data and roles.
Start a project
Tell us what you are building.
A few lines about the problem is enough to start. We reply within one business day.
