Agentic AI as code.In TypeScript.
Compose agents from small, typed steps. Let Claude Code, Codex or Operaide Code do the typing. The platform handles sign-in, permissions and operations.
invoicesextract-invoice.reaktor.tsInvoice
1import { z } from 'zod';2import { registerReaktorDefinition } from '@operaide/aktor';3import { aktorExtractInvoice } from './steps';45// The fields the AI model must return6const Invoice = z.object({7 number: z.string(),8 total: z.number(),9 dueDate: z.string(),10});1112registerReaktorDefinition({13 reaktorDefinitionId: 'extract-invoice',14 outputSchema: Invoice,15 aktor: aktorExtractInvoice,16});
$npm run check
✓Types checked
✓Follows the Reaktor framework
✓Preview ready on port 3000
Operaide Code
Ask Operaide Code to change the app…
Why developers like it
Why developers like it
Less plumbing. More agents.
The platform handles everything around your apps. You write the logic and ship it the same day.
TypeScript your coding agent already knows
Typed steps in plain TypeScript, in your Git. Coding agents write it from the first prompt.
No auth, no tenants, no ops code
Sign-in, roles, tenants, credentials and deployment come with the platform.
Your security team will say yes
Your infrastructure, local or European AI models. No stalling in the data protection review.
What an agent looks like
What an agent looks like
A few lines of TypeScript. A production API.
This agent extracts data from an invoice. The schema guarantees a typed result, the registration makes it a REST endpoint.
Typed output
total: z.number()The Zod schema defines the result. No JSON parsing.
AI model per deployment
aktorAISettingProviderModel()Provider and AI model are a setting, not code.
Instant API
POST /reaktors/extract-invoiceRegistered agents become endpoints, protected by API keys and roles.
import { aktorAIGenerateObject, aktorAISettingProviderModel, aktorMessagesFromSystemAndUser,} from '@operaide/ai';import { aktorConst, createAktorComposition, registerReaktorDefinition,} from '@operaide/aktor';import { z } from 'zod'; const Invoice = z.object({ number: z.string(), total: z.number(), dueDate: z.string(),}); const aktorExtractInvoice = createAktorComposition( 'aktorExtractInvoice', ({ document }) => aktorAIGenerateObject({ messages: aktorMessagesFromSystemAndUser({ system: aktorConst('Extract the invoice fields.'), user: document, }), providerModel: aktorAISettingProviderModel(), schema: aktorConst(Invoice), }),); registerReaktorDefinition({ reaktorDefinitionId: 'extract-invoice', inputSchema: z.object({ document: z.string() }), outputSchema: Invoice, aktor: aktorExtractInvoice,});Call it from any system
curl -X POST https://operaide.example.com/api/v2/orgs/$ORG/apps/invoices/reaktors/extract-invoice \ -H "X-API-KEY: $OPERAIDE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "document": "…" }'Workflow
Workflow
From new app to production.
If you know npm and Git, you know the workflow.
01
Start
Create a new app, then choose: Operaide Studio or your own tools.
02
Run
Deploy with one command. Test agents in the browser, step by step.
03
Publish
Review in Git, release to the app registry. Admins install it in production.
npm installnpm run check # ESLint, Prettier, TypeScriptnpm run deploy # to a development instancenpm publish # release to the app registryReaktor framework
Building blocks for common agent tasks.
Stable, backward-compatible packages cover what most agents need.
- @operaide/aktor
- The core: compose steps, branch and loop, settings, roles and permissions, scheduled agents, logging.
- @operaide/ai
- AI model calls across providers, structured output, tool use, MCP servers, embeddings, speech-to-text and web search.
- @operaide/database
- A SQL database per app instance with typed queries and file storage.
- @operaide/vector
- Embedding and retrieval pipelines for RAG, with every stage replaceable.
- @operaide/document
- PDF, Word, Excel and web pages turned into Markdown for your agents.
Built in
Built in
The platform does the rest.
Four that save you the most code. Tracing, usage reporting, backups and organisations come with it too.
REST and MCP
Every agent becomes an authenticated REST endpoint with an OpenAPI spec, and can be called via MCP. No endpoint code.
Your own interface
Ship a web interface with your app, like a review queue. Login and roles come from the platform.
Central credentials
Keys and connections are set up once by authorised people. No secrets in your code, none in logs or traces.
Roles and permissions
Platform roles plus your own permissions per app, enforced on the server. No auth checks to write.
Operaide Code
A coding agent that knows Operaide.
Our coding agent for the terminal, with the Reaktor handbook built in. Run it in Studio or on your own machine.
$ operaide-code/plan> Send invoices over 10,000 EUR to review before they are booked. Reading the handbook: aktor, branching Plan 1. Add needsReview to the Invoice schema 2. Branch after the extraction: over 10,000 EUR goes to review 3. Run npm run check/normal> Go ahead. Edit src/extract-invoice.reaktor.ts (+14 −2) Apply? [y/n]- Handbook built in
- It looks up the handbook before it touches Reaktor code. The handbook ships with each release, so it always matches the version you run.
- You set the pace
- Plan mode only reads and proposes. Normal mode asks before every change and shows the diff. Auto mode works on its own.
- Safe by design
- It works only inside your app folder and runs a short list of allowed commands. Provider keys stay on the server.
- Your AI models
- Use the AI models your organisation has approved in Studio, or your own keys for Anthropic, OpenAI, Mistral, Azure or Ollama.
Debugging
Debugging
See exactly what happened.
Every run traced step by step, with AI model, duration and tokens. No black box.
Trace
- ReceiveRequestFunction12 ms
- ClassifyAgentAgent948 ms
- Classify promptPrompt8 ms
- AICall1,240 tokens930 ms
- DraftAgentAgent880 ms
- Draft promptPrompt8 ms
- AICall860 tokens860 ms
- SaveCaseFunction40 ms
- SendForApprovalFunction20 ms
ClassifyAgent · AI call
- Model
- Mistral · self-hosted
- Duration
- 930 ms
- Tokens
- 1,180 in · 60 out
Every step traced · every AI call metered
Trace walk
Step through a recorded run, or follow one live.
Structured logs
Every log line tied to its run. Filter, search, export.
Debug mode on demand
Detailed tracing for one agent, only while you investigate.
Community Edition
Community Edition
Free to build. Access by application.
The Reaktor framework, all packages and Operaide Studio with AI coding agents, self-hosted, free of charge.
01
Apply
A short form. We open access in stages.
02
Install
Self-hosted with Docker, on your machine or server.
03
Build
Start from a template, with any AI provider or local models.
Learn
Learn
Get started.
Documentation
Concepts, guides and API reference.
Your first app
Build and deploy your first AI app, step by step.
Operaide Code
Set up the terminal coding agent.
Foundation Certification
Prove your Operaide skills with an online exam.
GitHub
Example apps and community projects.
YouTube
Walkthroughs and showcases.
FAQ
Developer questions
Build your first AI app.
Apply for the Community Edition and start with a template, or bring your team and talk to us about Enterprise.
