Introduction
Introduction
Section titled “Introduction”Pilotoo is a kit for putting an AI agent behind a chat in your own product. It is a set of packages, not an application: an agent runtime, a streaming server, a typed wire protocol, a client “brain” and ready-made chat components.
You write the parts only your product can: the tools the agent calls, the way users sign in and the screen around the chat. The kit does the rest, and you pick up every fix made to it later.
What you can build
Section titled “What you can build”The same packages serve three shapes of product.
| Shape | What it is | Backend |
|---|---|---|
| Hosted copilot | A chat inside your web app, for your signed-in users. | A NestJS server you run, on PostgreSQL. |
| Desktop app | The same chat in a Tauri window, working on the user’s own files. | A local process on the user’s machine, on SQLite. |
| Mobile app | The chat in an Expo app. | The same server as the web app. |
The repository ships one demo of each: a server (apps/api), a web app (apps/web), a desktop app (apps/desktop) and a mobile app (apps/mobile). They are the best place to see how the pieces are put together.
Who it is for
Section titled “Who it is for”Pilotoo is for engineers who embed a copilot in a product. That product is called the host. The people who use it see a chat that answers, calls tools, asks permission before acting and remembers the conversation. They never see the kit.
What the kit gives you
Section titled “What the kit gives you”- Agents defined in YAML files, with their own prompt, model and tools.
- Tools you register in code, and skills the agent reads on demand.
- A streaming gateway with replay, so a second window or a reload picks a run up where it is.
- Human decisions in the middle of a run, and tools served by the client.
- Chat components for the DOM and for React Native, and a headless client for your own UI.
- Optional voice, scheduled runs, attachments, usage reporting and a local backend.
What it is not
Section titled “What it is not”- It is not a document editor, and it owns none of your domain.
- It does not own your sign-in screen, users, teams or billing. You tell it who the caller is.
- It is not a plugin marketplace and never runs code it loads at runtime.
- It does not give each tenant its own database.
Extending without forking
Section titled “Extending without forking”You extend the kit in two ways. A port is an interface the kit declares and you implement, such as identity or usage reporting. A registry is a list you add entries to in code, such as tools. If you need to fork the kit to do something, a port is missing.
Next steps
Section titled “Next steps”- Installation to run the demo stack.
- Quickstart to build a server and a chat page.
- Concepts for the vocabulary used everywhere else.