Why Geenius Chat has its own agent engine
Why we built our own agent engine for Geenius Chat instead of wrapping one AI provider, and what that changes for long tasks, models and safety.
When we started on Geenius Chat, the quick route was obvious: take one AI provider, put a chat window on top of it and ship. Many chat apps are exactly that. We chose the slower route and built our own agent engine first. This post explains why, and what it means for you once Chat opens.
A chat is more than a reply#
A quick question needs one answer. A real task needs more. "Compare these three venues and draft an email to the best one" is several steps: read, compare, decide, write. Some steps call tools, some may need to ask you something. If the chat is only a thin window over one model, all of that lives in the window. Close the tab, and the work is gone.
Our engine treats that kind of task as a run. A run keeps what you asked, every step the agent took, every tool it called, any question it is waiting on and its answer. Each step is saved as it finishes. That is the part that lets a run continue after an interruption instead of starting again.
One interface, many providers#
The second reason is choice. AI models change quickly. A model that is the best fit today may not be the best fit in three months, and different tasks suit different models. If Chat were tied to one provider, every change would be a rebuild.
So the engine talks to providers through one interface. Each provider is a plug-in behind it, and a router decides which one answers. Adding a model means adding a plug-in, not changing how you chat. The keys for those providers stay on the server; they are never put in your browser or in the app's code.
We test every provider plug-in against recorded examples. That means our tests never call a real model, and it also means something we want to be plain about: no real model call happens in Chat yet. The models you can pick will be listed when conversations go live.
Data is not orders#
The third reason is safety. An agent reads things on your behalf: a web page, a file, the result of a tool. Some of that text may try to give the agent instructions. A well-known trick is a web page that says "ignore what you were told and do this instead".
Our engine has one rule for that, and it is not a setting: every tool result is data to read, never an instruction to follow. That lowers the risk of an agent being steered by something it reads. No system can promise the risk is zero, and we will not pretend ours does.
What this means today#
Today the engine exists in code and is tested: the agent loop, the provider interface and saving runs step by step. There is no public app yet, no sign-in page and no conversations. When Chat opens, you will sign in with your account and see its plans and prices here.
If you want to hear first, join the waitlist. And if you have a task you would like a chat to keep going on, tell us about it: it helps us decide what to build next.