In short
Maurice turns a plain-language instruction into a workflow: a sequence of steps described in a versioned file, the Agent Spec. Rule-based steps run as code; an AI model is called only at the steps that need one. Maurice installs from your coding assistant and runs on a computer, on a server, or on Kubernetes on quote.
1. From instruction to workflow
- You describe the task, in your assistant or in Maurice's Studio.
- Maurice writes the Agent Spec: inputs, steps, outputs, permissions. It is a set of readable files (
agent-spec.json,workflows/,miniapps/,tests/), validated by JSON schemas and versionable in Git. - You clarify, test and correct, in plain language, until the result suits you: Maurice updates the specification and its tests on every round. Then you approve. Approval is always human: a coding assistant can prepare and check an Agent Spec, it cannot approve it for you.
- Maurice applies and verifies it.
maurice spec check → maurice spec plan → human approval → maurice spec apply → maurice spec verify
What the specification guarantees the company
- An immutable plan: before applying, Maurice produces a plan with its fingerprint and the detail of every change. What is approved is exactly what is applied.
- Approval by a person distinct from the agent that prepared the specification. In production, no agent or service can approve itself.
- No silent rollback: an old plan cannot restore a permission that was revoked.
- Tests shipped with the specification, replayed on every change.
- A tool that outlives its author: the specification and its tests stay in the company, versioned.
2. Workflow steps
| Step | What it does | Calls a model? |
|---|---|---|
code_execution | Runs code: rules, calculations, checks | No |
tool_call | Calls a tool: an MCP server, an integration | No |
workflow_call | Calls another published workflow | Depends on that workflow |
decision | Picks a branch from a bounded set | |
question | Asks a judgement model a closed question (choice, score, yes/no) | Yes |
llm_call | Asks a model for text or structured output | Yes |
A protected step (require_approval) waits for a person's decision before it runs.
This is what makes AI compiled: in the published measurement on 1,000 order checks, nine rules out of ten ran as code_execution, and only one step kept a model call. Read the measurement
3. Execution
- Code runs in a sandbox (Deno) with explicit permissions: no network access without a per-Agent allowlist of hosts, limits on time (300 s by default), output and memory, a private directory per run.
- Every run is traced: state, steps, tool calls, model calls, cost.
- The same run key gives the same run: a repeated call does not redo the work.
4. When it must think every time: agent mode
For an open-ended task, Maurice hands the reasoning to a model on every run, like an AI agent, within the same frame: same permissions, same approvals, same log. The cost is then the cost of the model calls.
5. From your assistant
- Installation: you paste a text into your coding assistant; it installs Maurice, pairs it with a single-use link valid for 15 minutes, then checks the installation (
maurice doctor). Supported assistants: Claude Code, Codex, Cursor, Grok Bot, Hark, or any generic MCP client. - The
mauriceMCP front door: your assistant discovers, gets explanations for and runs the workflows you allow it to use, with three tools:search,explain,execute. Every grant has a scope (one workflow or one application), a duration and a quota, and can be revoked at any time. A step that needs your approval is decided in your own session, never by the assistant.
6. AI models
- With your keys: Anthropic, OpenAI, Mistral, Google, or a local model (Ollama). Your keys are encrypted at rest.
- With our credits: over 500 off-the-shelf models (Claude, GPT, Gemini, Mistral, Grok, Llama, Qwen, DeepSeek…), embedding models and an OCR, called through our gateway. See the connectors
- No automatic switch from one provider to another: a failed call is retried with the same provider, then reported.
7. Connections and channels
What Maurice uses
- MCP servers: search, memory, documents, browser, SSH… and your own MCP servers. Our MCP servers are open source. github.com/agentmaurice/mcp
- Integrations: over 800 services over OAuth, connected from the Console.
- Turnkey services: search, files, memory, documents, OCR, browser, switched on in one click. See the connectors
How people and machines reach Maurice
| Channel | Who uses it | How |
|---|---|---|
| AI agents | Claude Code, Codex, Cursor, Grok Bot, Hark, any MCP client | The maurice MCP front door (section 5) |
| Messaging | Telegram, Slack, WhatsApp, Discord, Google Chat, Signal | Your teams or your customers write to Maurice in their messaging app |
| Web | Your site, your product | An embeddable real-time chat (SDK) |
| HTTPS | Your applications | A REST API, with keys limited to what you expose |
| MQTT | Machines, sensors, controllers | An MQTT broker; each key only reaches its own topics |
| Other Maurices | Another approved instance | See section 8 |
What you expose is defined once, in a versioned public surface. Permissions, approvals and the log are the same whatever the channel. See the Swarm page
8. The swarm: Maurice to Maurice
One Maurice instance can hand a request to another: a colleague's Maurice, the team's or the company's server.
- The recipient chooses who may write to it: it approves each source instance. No discovery of strangers.
- You authorise every request: Maurice shows you what will be sent and its limits before sending it.
- Only the request travels: your conversation stays on your instance.
- A signed answer, shown with where it came from and its real state; the conversation can go on over several turns with the same recipient.
- No silent replay: a turn whose outcome is unknown is flagged as such and blocks the next one until you decide.
9. Where Maurice runs
| Mode | For | What changes |
|---|---|---|
| On a computer | One person | The maurice binary; data stays on the computer; the MCP front door only listens locally |
| On a server | A team | Your server (Docker Compose) or a dedicated machine hosted by us; several users, roles and permissions |
| Maurice Enterprise (Kubernetes) | Demanding organisations | Several nodes, high availability, assisted deployment; on quote |
10. CLI and API
- Maurice is the
mauriceCLI: it can be an instance itself, running your tools, or talk to remote instances (your company's server, a machine we host). It installs, connects an assistant, manages Agent Specs, runs and diagnoses (maurice doctor). - REST API and published contracts for the MCP front door.