AgentChat
A chat app for your own AI models, on Android and Windows. Conversations are saved on the device, not on a server. I designed it, built it and submitted it to Google Play.
- 2Apps, Android and Windows
- 4Kinds of server, local and cloud
- 5Files per message, 20 MB each
The brief
Running a model on your own computer keeps your questions private and costs nothing per message. The catch is the interface. It sits in a browser on one machine, and it stops being useful the moment you leave the desk.
So the brief was short. Use my own model from my phone. Keep every chat, searchable. Make setup something a person can finish from the guides inside the app.
Models forget
A model can only read so much at once. The app has to decide what to keep.
Phones sleep
Android cuts the connection when you switch apps, and a reply stops half way.
Tokens cost money
On a paid service every word is billed, so a long reply needs a limit.
How it connects
AgentChat sends one kind of request, the OpenAI chat format, so the same chat works against every server. For a model at home there are three ways in: the same Wi-Fi, Tailscale, or a Cloudflare Tunnel. Cloud services connect directly.
Setup guides for every route are built into the app, with steps you can tick off and commands you can copy.
Screen anatomy
The chat screen has five parts. Everything else lives in history and settings.
- AHeaderThe model in use and its connection, with past chats, a new chat and settings one tap away.
- BAgent tabsGeneral, Photo reader, Problem solver, Researcher or your own. Each is a saved set of instructions and tools.
- CMessagesReplies stream in. The model's thinking sits in a collapsible section, and each reply shows its speed.
- DMemory meter and thinkingA thin gauge shows how full the model's memory is. Fast, Balanced or Deep sets how hard it thinks.
- EMessage boxType, dictate, or attach files and photos.
The design
Every screen was drawn in Figma before it was built. The file below is the working design, live. Drag to move around the canvas and scroll to zoom in on any screen.
The screens
The same design on both platforms. Light and dark themes, with the conversation as the main thing on screen.
What I decided
Four problems took most of the thinking. Each one was a number that had to be chosen and then checked.
Memory that looks after itself
Every model has a window of text it can read at once. AgentChat counts what is in use and shows it as a gauge. It treats 60% of the window as usable, so the reply has room.
When a chat reaches 85% of that, the model writes a short summary of the older messages (context compaction). The recent ones stay word for word, and the chat carries on at about 50%. The older messages stay on screen for you to read.
Replies that survive switching apps
Android puts an app to sleep soon after you leave it, and a sleeping app loses its connection. While a reply is being written, AgentChat runs as a foreground service. The notice shows the model, a timer and a Stop button.
If the connection still drops, the app asks again by itself, twice, before it shows an error.
A cap on what a reply can cost
On a paid service every token is billed. I added three options. All are off by default, and none appear for a local LM Studio server, where a long reply costs time and no money.
- Reply length. Short, Medium or Long, with a hard cap on the reply.
- Short answers. One line added to the instructions that asks the model to lead with the answer.
- Long message warning. A note under the message box before a huge paste goes out.
OpenAI names its cap differently from everyone else, so the app asks each server the way it expects and corrects itself if one refuses. Models that think count their hidden reasoning against the cap, so they get 8,000 tokens of room on top.
| Setting | About | Cap |
|---|---|---|
| Short | 500 words | 700 tokens |
| Medium | 1,500 words | 2,000 tokens |
| Long | 3,000 words | 4,000 tokens |
Help where the errors are
Most failures are about the connection, not the app. Setup guides for each route sit inside it, with steps you tick off and commands you can copy.
A Fix a problem screen runs a live check on your settings, matches the error you are seeing to a fix, and can be searched. Contact support opens a ready email and adds setup details only if you choose. Tokens and keys are never included.