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

# Amp

> Run Amp in a secure Nullspace machine.

The `amp` template supports `AMP_API_KEY`.

## Run Amp

Create a machine from the `amp` template, run Amp headlessly, and clean up. The
SDK and CLI paths are equivalent — use the one that matches your workflow.

<CodeGroup>
  ```python Python SDK theme={"theme":{"light":"one-light","dark":"one-dark-pro"}}
  import os
  from nullspace import Machine

  with Machine.create(
      template="amp",
      envs={"AMP_API_KEY": os.environ["AMP_API_KEY"]},
      timeout=600,
  ) as machine:
      result = machine.commands.run(
          'amp --dangerously-allow-all -x "Create a hello world HTTP server in Go"',
          shell=True,
          cwd="/workspace",
          timeout=600,
      )
      print(result.stdout)
  ```

  ```bash CLI theme={"theme":{"light":"one-light","dark":"one-dark-pro"}}
  nullspace machine create \
    --template amp \
    --env "AMP_API_KEY=${AMP_API_KEY}" \
    --timeout 600
  # machine create prints the id used below as mch_123
  nullspace machine exec mch_123 \
    --cwd /workspace \
    --timeout 600 \
    --shell 'amp --dangerously-allow-all -x "Create a hello world HTTP server in Go"'
  nullspace machine kill mch_123
  ```
</CodeGroup>

### Interactive terminal

Open a PTY instead of a headless run to drive Amp interactively:

```bash theme={"theme":{"light":"one-light","dark":"one-dark-pro"}}
nullspace machine pty create mch_123 --cols 120 --rows 30
nullspace machine pty connect mch_123 --session-id ses_123
# then, inside the PTY:
amp
```

Use the `session_id` from `machine pty create` with `--session-id`.

## Work on a cloned repository

```python theme={"theme":{"light":"one-light","dark":"one-dark-pro"}}
machine.git.clone("https://github.com/your-org/your-repo.git", path="/workspace/repo", depth=1)
machine.commands.run(
    'amp --dangerously-allow-all -x "Add error handling to all API endpoints"',
    shell=True,
    cwd="/workspace/repo",
    timeout=600,
    on_stdout=lambda data: print(data, end=""),
)
print(machine.git.diff(path="/workspace/repo"))
```

## Streaming JSON

```python theme={"theme":{"light":"one-light","dark":"one-dark-pro"}}
machine.commands.run(
    'amp --dangerously-allow-all --stream-json -x "Find and fix TODO comments"',
    shell=True,
    cwd="/workspace/repo",
    timeout=600,
    on_stdout=lambda data: print(data, end=""),
)
```

## Thread continuation

Amp manages threads through its CLI. Keep the machine alive when you want to
continue a thread with follow-up tasks, then inspect the resulting diff through
`machine.git.diff()`.

## Related

* [Fork](../machines/fork)
* [Git helpers](../reference/git)
* [Templates](../templates/overview)
