# ExtensionAPI

> **Class** in `deepagents_code`

📖 [View in docs](https://reference.langchain.com/python/deepagents-code/extensions/api/ExtensionAPI)

Factory-scoped registrar and read-only session context.

Each extension receives a dedicated instance, which attributes every
registration to the extension's source without exposing mutable dcode
application state.

## Signature

```python
ExtensionAPI(
    self,
    registry: ExtensionRegistry,
    source: SourceInfo,
    *,
    cwd: Path,
    mode: ExtensionMode,
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `registry` | `ExtensionRegistry` | Yes | Shared registry receiving extension units. |
| `source` | `SourceInfo` | Yes | Provenance recorded on each registration. |
| `cwd` | `Path` | Yes | Working directory for this session. |
| `mode` | `ExtensionMode` | Yes | Runtime mode, either `interactive` or `headless`. |

## Constructors

```python
__init__(
    self,
    registry: ExtensionRegistry,
    source: SourceInfo,
    *,
    cwd: Path,
    mode: ExtensionMode,
) -> None
```

| Name | Type |
|------|------|
| `registry` | `ExtensionRegistry` |
| `source` | `SourceInfo` |
| `cwd` | `Path` |
| `mode` | `ExtensionMode` |


## Properties

- `cwd`
- `mode`
- `has_ui`
- `path`

## Methods

- [`register_middleware()`](https://reference.langchain.com/python/deepagents-code/extensions/api/ExtensionAPI/register_middleware)
- [`register_tool()`](https://reference.langchain.com/python/deepagents-code/extensions/api/ExtensionAPI/register_tool)
- [`register_backend_route()`](https://reference.langchain.com/python/deepagents-code/extensions/api/ExtensionAPI/register_backend_route)
- [`on_shutdown()`](https://reference.langchain.com/python/deepagents-code/extensions/api/ExtensionAPI/on_shutdown)

---

[View source on GitHub](https://github.com/langchain-ai/deepagents/blob/caaa7e7c12d214afa5cf0a1afed8eb6232aa6f7b/libs/code/deepagents_code/extensions/api.py#L31)