> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mirage.strukto.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Connect a coding agent or an agent framework to a Mirage workspace.

## Coding Agents

Run the agent as it is, on a workspace the `mirage` CLI creates.

| Agent | CLI | SSH | FUSE |
| - | :-: | :-: | :-: |
| [Claude Code](/typescript/agents/claude-code) | ✓ | | ✓ |
| [Codex](/typescript/agents/codex) | ✓ | ✓ | ✓ |
| [Grok Build](/typescript/agents/grok-build) | ✓ | | ✓ |

* **CLI**: the agent adds Mirage's seven tools from `mirage mcp`.
* **SSH**: the agent's own tools run in the workspace.
* **FUSE**: the agent's own tools work on the workspace, mounted as a folder.

Or load Mirage into the agent as a plugin, which replaces its own file and shell tools:

| Agent | Plugin |
| - | - |
| [Pi Coding Agent](/typescript/agents/pi) | `mirageExtension(ws)` |
| [OpenCode](/typescript/agents/opencode) | `@struktoai/mirage-opencode` in `opencode.json` |
| [DeepSeek Harness](/typescript/agents/dsh) | `@struktoai/mirage-dsh` |

## Agent SDKs

Your program holds the workspace and hands it to the framework.

| Framework | Hand it | The agent gets |
| - | - | - |
| [Vercel AI SDK](/typescript/agents/vercel) | `mirageTools(ws)` | Mirage's seven tools |
| [Mastra](/typescript/agents/mastra) | `mirageTools(ws)` | Mirage's seven tools |
| [Claude Agent SDK](/typescript/agents/claude-agent-sdk) | `MirageServer(ws)` | Mirage's seven tools |
| [OpenAI Agents](/typescript/agents/openai) | `mirageTools(ws)`, or `MirageShell`, `MirageEditor` and `MirageSandboxClient` | Mirage's seven tools, or its shell, patch and sandbox tools run in Mirage |
| [LangChain Deep Agents](/typescript/agents/langchain) | `new LangchainWorkspace(ws)` | its file and shell tools, run in Mirage |

Mirage's seven tools are the session's [`session.tools`](/typescript/access/in-app#session-tools): `shell`, `read`, `write`, `edit`, `ls`, `grep` and `glob`. A session gets the ones its [profile](/home/policy/policies#which-door-enforces-what) leaves it (`session.tools.names()`), so an agent is never offered a tool every call of which would be refused.

Each framework is a subpath of `@struktoai/mirage-agents`, such as `@struktoai/mirage-agents/vercel`, so a bundle carries only what it imports.

```bash theme={null}
pnpm add @struktoai/mirage-agents @struktoai/mirage-node
```

For a browser app, use `@struktoai/mirage-browser` in place of `@struktoai/mirage-node`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.