kayetana is a self-hosted AI platform for businesses. It runs on a Mac Studio in your office or data center and includes chat, answers from documents with citations, search, classification, transcription and fine-tuning. Your team uses it in the browser, and your applications talk to it through a REST API. Once the models are downloaded, it runs without an internet connection.
The data protection principle is simple: your data stays in the building. Prompts and answers are never stored. The only things logged are time, endpoint, model, status, tokens and duration. You set retention periods for the usage log and for datasets, and the platform deletes older entries automatically. This helps you comply with the GDPR. It is not a guarantee and it does not replace legal advice.
This white paper explains how kayetana is built, where data flows, how access is protected and what day-to-day operations look like. It also covers the platform's limits. It is written for IT leaders, executives and data protection officers who want to make a well-founded decision.
1Background
Many teams want to use AI in their daily work: answering questions about internal policies, sorting support tickets, transcribing meetings, drafting text. The obvious route is cloud AI services. But that means your content ends up on someone else's servers, often outside your control. For contracts, HR records, customer data or product plans, many companies simply can't accept that.
Until now, the alternative took a lot of effort. Running models yourself meant server hardware, expertise in models and APIs, and a separate interface for your team. On top of that came user management, logging and retention rules.
kayetana puts all of these pieces on a single machine. A Mac Studio with Apple silicon is quiet, energy efficient and fits in any office. Open models run directly on it. The interface, API, roles, usage statistics and privacy settings are already built in. You decide which models run, who has access and how long data is kept.
Costs are predictable, too. kayetana is offered as a flat fee for the platform, with no per-token or per-user billing. A bigger team or more requests don't change that.
2Architecture overview
Every component runs on the same Mac Studio. No external service is needed for day-to-day operation. You only need the internet to download models and updates.
The components:
- Mac Studio: the server. Apple silicon with unified memory shared by the CPU and GPU, which lets you keep larger models entirely in memory.
- Ollama: runs the language and embedding models (port 11434).
- Add-on service: handles transcription, the tokenizer, reading documents and fine-tuning (port 11435).
- Web app: the browser interface and the REST API under /v2. It manages users, API keys, datasets, the usage log and settings in a SQLite database, and listens only on 127.0.0.1, port 4321.
- HTTPS proxy (Caddy): accepts connections from the network on ports 443 and 80, encrypts them with its own certificate and forwards them to the web app.
- Backup: a daily job at 3:15 a.m. backs up the database and files and keeps each backup for 14 days.
3Who talks to whom
A browser or application on your company network connects to the proxy over HTTPS. The proxy passes the request to the web app, which is only reachable locally on the Mac Studio. The web app checks the login or API key, calls Ollama or the add-on service at the local address 127.0.0.1 and returns the response. Only then does it write an entry to the usage log, without any content.
Ollama and the add-on service have no login of their own. That's why both listen only on the local address 127.0.0.1 and can't be reached from other machines. From the network, only HTTPS on port 443 is open (plus 80 for the redirect). For maintenance, an administrator reaches the services through an SSH tunnel.
| Service | Port | Reachable from |
|---|---|---|
| HTTPS proxy | 443, 80 | Company network |
| Web app and API | 4321 | 127.0.0.1 only (local) |
| Ollama | 11434 | 127.0.0.1 only (local) |
| Add-on service | 11435 | 127.0.0.1 only (local) |
4Features
kayetana covers the typical tasks teams use AI for today. Every feature is available in the browser playground and through the API.
- Chat: system prompt, temperature, max tokens, reasoning on or off with a budget, JSON mode, images as input for models with vision, tools and function calling. Templates can be saved for the whole team. For every request, the playground shows ready-to-use code in Python, TypeScript and curl.
- Answers from documents (RAG): paste text or upload PDF, Word (docx, doc), RTF, ODT and HTML. Every sentence in the answer carries a superscript number, with a source list underneath. Through the API, sources come back as citations, including when streaming. In our example, the answer with sources arrives in 1.5 s.
- Embed: turn text into vectors in float, int8, uint8, binary and ubinary formats. The playground shows the results as a 2D plot.
- Rerank: sort documents by relevance to a question.
- Classify: assign one or more labels to texts, using examples in the request or a trained classifier. Each label comes with a confidence score.
- Tokens: split text into tokens and put it back together.
- Audio: turn recordings into text, with timestamps and a selectable language. Supported formats include MP3, M4A, WAV, AIFF and FLAC, up to 100 MB per file.
- Models: see installed models with size, context length and capabilities, download new ones by name from the Ollama library, delete the ones you no longer need and set a default model for each task.
- Datasets and embed jobs: upload CSV, JSONL, TXT, PDF and Word. Embed jobs embed entire datasets in the background, with a progress bar and the result as a JSONL download.
- Fine-tuning: train a chat model further on your own conversation examples using LoRA, or build a classifier from labeled data.
- Usage: tokens and requests per day, key and model, plus response time and error rate, over 7, 30, 90 or 365 days.
- Team: roles, invitations by link and password resets by admins.
5Typical use cases
kayetana's features combine into applications that look similar across many companies. The examples below show which building blocks work together in each case.
- Questions about internal documents: policies, contracts and handbooks are loaded. Employees ask questions in the browser and get answers where every sentence points to its source. Building blocks: answers from documents, embed and rerank.
- Sorting incoming requests: support tickets and emails are assigned to categories automatically. A few examples in the request are enough to start. Once you have enough labeled data, you can turn it into your own classifier. Building blocks: classify, datasets, fine-tuning.
- Meetings and voice messages: recordings are turned into text with timestamps. A chat model can then summarize the text or pull out action items. Building blocks: audio and chat.
- Search across large collections: entire document collections are uploaded as a dataset and embedded in the background. You use the vectors in your own search application. Building blocks: datasets, embed jobs, rerank.
- Your own applications: internal tools call kayetana through the API. Each application gets its own API key with a monthly limit, so you keep track of usage. Building blocks: REST API, API keys, usage.
6How an answer with sources comes together
For many teams, answers from documents are the most important use case, so here is the process in detail. You enter a question and add documents, either as text or as files. The add-on service first converts files to text. The web app then passes the question and documents to the selected chat model with the instruction to answer only from those documents.
The model writes the answer and links each sentence to the passage it came from. In the interface you see superscript numbers with the source list underneath. Through the API you get the same information in structured form as citations, even while the answer is still streaming. That makes every statement quick to check.
Neither the question, the documents nor the answer is stored along the way. The usage log only shows that a chat request with a certain model and a certain number of tokens took place at a certain time.
7Data flows and data protection
All processing happens on the Mac Studio. A chat question, an uploaded document or a voice recording is processed locally. No content is sent to any external service.
Prompts and answers are never stored. That applies to the playground and to the API. When a request is finished, kayetana logs only metadata: time, endpoint, model, status, number of tokens and duration. You see how the platform is used without keeping any content.
What gets stored is what you deliberately create: user accounts, API keys, team templates, datasets, embed job results and your own trained models and classifiers. Documents you paste into the playground for a single question are used for that request only.
On the privacy page you set retention periods, separately for the usage log and for datasets: unlimited, 7, 30, 90 or 365 days. The platform deletes older entries automatically. You can also clear the usage log manually at any time.
| Data | Stored | Retention |
|---|---|---|
| Prompts and answers | No | Never stored |
| Usage log (time, endpoint, model, status, tokens, duration) | Yes | Configurable: unlimited, 7, 30, 90 or 365 days; can be cleared any time |
| Datasets and embed job results | Yes | Configurable: unlimited, 7, 30, 90 or 365 days |
| User accounts, roles, API keys, templates | Yes | Until deleted by an admin |
| Custom models (ft-name, clf-name) | Yes | Until deleted |
| Backups (database and files) | Yes | 14 days, on the same machine |
8Notes for data protection officers
kayetana helps you use AI in a privacy-friendly way: data stays in the building, content isn't stored, and retention and deletion are configurable. Whether a specific use is permitted depends on your purpose, your data and your processes. The platform doesn't do that assessment for you.
Keep in mind that backups contain the last 14 days of data. Anything deleted from the usage log or a dataset may still sit in a backup for up to 14 days. The same applies to any additional external backup, whose retention you set yourself.
9Security
With kayetana, security starts with location: the server sits on your network, and you decide who can reach it. The following safeguards build on that.
- Roles: Owner, Admin and Member. Admins invite new members by link and issue password reset links.
- Sign-in: a session stays valid for 14 days. After 10 failed attempts, sign-in is locked for 15 minutes.
- API keys: applications authenticate with a bearer token. Each key has a monthly limit. Once it's reached, the API responds with status 429.
- Traceability: the usage log shows requests per key and model, without content.
- HTTPS: Caddy encrypts every connection on the network with its own certificate. For browsers to accept it, the root certificate is marked as trusted once on each computer.
- Network: the web app listens only on 127.0.0.1. Only the HTTPS proxy is reachable from the network. Ollama and the add-on service also listen locally only.
- Backups: daily at 3:15 a.m., kept for 14 days. Because they sit on the same disk, we recommend an additional external backup.
- Offline operation: once the models are downloaded, kayetana doesn't need the internet. You can disconnect the server from the internet entirely.
10Models and hardware
kayetana ships with open models chosen for typical tasks. All of them are openly licensed (Apache 2.0 or MIT). You can download more open models by name from the Ollama library whenever you need them.
The model manager shows the size, context length and capabilities of each installed model, such as whether it can handle images or call tools. You set a default model for chat, embed and rerank. Through the API, /v2/models returns the available models, optionally filtered by task. Your own fine-tuned models show up in the same list with the prefix ft- or clf-.
| Model | Task | License |
|---|---|---|
| qwen3:4b-instruct | Fast chat; base model for fine-tuning | Apache 2.0 |
| qwen3:14b | Chat and reasoning | Apache 2.0 |
| gpt-oss:20b | Chat and reasoning | Apache 2.0 |
| bge-m3 | Embed, search, rerank, classification | MIT |
| Whisper large-v3-turbo | Transcription | MIT |
11Memory recommendation
We recommend a Mac Studio with 36 GB of memory or more. That runs models up to about 20 billion parameters alongside search and transcription. With more memory, you can run larger models.
For reliable around-the-clock operation, the Mac Studio shouldn't go to sleep when the display is off, and it should get a fixed IP address in your router.
12Operations
kayetana is designed to need little maintenance. All services run in a regular user account on the Mac Studio, without admin rights.
- Installation by script: a setup script installs the runtime, builds the application and sets up the app, HTTPS proxy and backup as services. A second script installs Ollama and downloads models that fit the available memory.
- Updates: the same script installs updates. It builds the new version and restarts the services. The database and files are kept.
- Backup: every day at 3:15 a.m., a job makes a consistent copy of the database plus datasets and classifiers. Backups older than 14 days are deleted.
- Restore: copy the database and files from a backup back into place and restart the app.
- Restarts: after a reboot or power outage, all services start on their own. If a service crashes, it's restarted automatically.
13API integration
Every feature is available through a REST API under /v2. Applications authenticate with an API key in the header (Authorization: Bearer). Responses come back as JSON, and chat can stream via server-sent events. The playground shows matching code for every request.
| Endpoint | Method | Purpose |
|---|---|---|
| /v2/chat | POST | Chat with tools, JSON, reasoning and images; with documents, the answer includes citations |
| /v2/embed | POST | Text to vectors (float, int8, uint8, binary, ubinary) |
| /v2/rerank | POST | Sort documents by relevance |
| /v2/classify | POST | Assign labels, with examples or a classifier |
| /v2/tokenize, /v2/detokenize | POST | Text to tokens and back |
| /v2/transcribe | POST | Audio to text |
| /v2/parse | POST | PDF, Word, RTF, ODT, HTML to text |
| /v2/models | GET | Available models, filterable by task |
| /v2/datasets | GET, POST | List and upload datasets |
| /v2/embed-jobs | GET, POST | Embed datasets in the background |
| /v2/finetuning/finetuned-models | GET, POST, DELETE | Train and manage custom models and classifiers |
14Getting started in four steps
- 1. Call and demo: in 30 minutes we show you the platform with your own examples and figure out which tasks you want to start with.
- 2. Hardware and setup: you provide a Mac Studio. kayetana is set up by script, the models are downloaded, and the root certificate is installed on your team's computers.
- 3. Team and rules: you invite your team, assign roles, set retention periods and create API keys with monthly limits.
- 4. First use cases: your team works in the playground, templates get shared, and the first applications connect through the API. The usage statistics show what works.
15Limits and an honest assessment
kayetana is deliberately built for a single machine in your own building. That comes with limits you should know about before deciding.
- Very large models need more memory than a Mac Studio in the recommended configuration has. For those, you need more memory or a cloud AI service.
- Rerank works through embedding similarity with bge-m3. A dedicated cross-encoder model isn't included.
- Fine-tuning chat models is currently available for qwen3:4b-instruct.
- The user interface is currently in German.
- Ollama and the add-on service have no login of their own, so they're only reachable locally on the Mac Studio; anyone with access to that machine can reach the models. Protect it accordingly (user accounts, physical access).
- Backups sit on the same disk as the data. Only an additional external backup protects you if the device fails.
- Like any language model, the models in kayetana can make mistakes. Citations make checking easier, but they don't replace it.
- kayetana is not a substitute for legal advice. It helps you with data protection, but it doesn't guarantee GDPR compliance.
16Contact
kayetana is developed by neonotu GmbH. Pricing is available on request. It's a flat fee for the platform, with no per-token or per-user billing.
neonotu GmbH, Edelsbergstraße 8, 80686 Munich, Germany. Phone +49 89 2000 7975 0. Or reach us through the contact form on our website.