> ## 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.

# In Process

> Run Python or JavaScript on a runtime inside Mirage.

An `in_process` machine runs a [runtime](https://docs.mirage.strukto.ai/home/setup/runtime/overview.md)
inside Mirage, so Python or JavaScript runs where Mirage runs, with no
container or host of its own. Each entry names its `runtime`:

```yaml theme={null}
machines:
  py:
    provider: in_process
    runtime: monty
```

| `runtime` | Runs | SDK |
| - | - | - |
| [`monty`](https://docs.mirage.strukto.ai/home/setup/runtime/monty) | `python3`, a Python subset | both |
| [`wasi`](https://docs.mirage.strukto.ai/home/setup/runtime/wasi) | `python3`, CPython in WebAssembly | Python |
| [`pyodide`](https://docs.mirage.strukto.ai/home/setup/runtime/pyodide) | `python3`, CPython with packages such as numpy | TypeScript |
| [`quickjs`](https://docs.mirage.strukto.ai/home/setup/runtime/quickjs) | `node` and `js` | both, not on Cloudflare Workers |
| A [custom runtime](https://docs.mirage.strukto.ai/home/setup/runtime/custom.md) | what you write | both |

`runtime` also takes a runtime you registered in code, or a
`./file.py:Class` (Python) or `./file.mjs:Class` (TypeScript) reference. The
entry's other keys are the runtime's settings.

## Files

A runtime here reaches the workspace's mounts directly, under the same mount
modes, permissions and policies as `cat`. Monty, WASI and QuickJS have no host
files or network; Pyodide's access depends on where it runs, see its
[containment](https://docs.mirage.strukto.ai/typescript/runtime/python.md#containment); a custom runtime reaches
what its code reaches. For hostile code, prefer a machine with a kernel
boundary: a [`host`](https://docs.mirage.strukto.ai/home/setup/machine/host) with a `sandbox`, or a
[machine provider](https://docs.mirage.strukto.ai/home/setup/machine/overview.md#providers).

## CLIs

Every [`clis` entry](https://docs.mirage.strukto.ai/home/configuration/workspace#cli-entries) names its
`machine`. A registered CLI, such as `slack`, or one made from an MCP server
runs only here. A script runs here on the first entry that runs its
language, or on the `runtime` it names:

```yaml theme={null}
clis:
  slack:
    cli: slack
    machine: in_process
    config:
      token: {from: env, key: SLACK_TOKEN}
  report:
    script: report.py
    machine: in_process
    runtime: monty
```


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