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

# Agents

> Create, configure, version, and export AI agents with the Noxus SDK

`client.agents` manages agents ("co-workers") — configurable AI assistants with tools, personas, and their own versioned lifecycle. Once created, you chat with them through [conversations](/sdk/conversations/overview) and read their analytics through [insights](/sdk/resources/insights).

## Creating an agent

An agent is configured with `AgentSettings`, which controls its model, behavior, and available tools.

```python theme={null}
from noxus_sdk.resources.assistants import AgentSettings

settings = AgentSettings(
    model=["gpt-4o-mini"],
    temperature=0.7,
    max_tokens=4000,
    tools=[],                       # required (empty list = no tools)
    extra_instructions="Be concise and friendly.",
    persona=None, tone=None,        # optional
)
agent = client.agents.create(name="Support Bot", settings=settings)
```

<Info>
  `AgentSettings` fields: `model: list[str]`, `temperature: float`, `max_tokens`
  (default 64000), `tools: list[...]` (required — the discriminated tool union:
  web\_research, kb\_qa, workflow, code\_execution, sandbox, …), `persona`, `tone`,
  `extra_instructions`, `agent_flow_id`.
</Info>

## CRUD & lifecycle

```python theme={null}
client.agents.list()                         # -> list[Agent]
client.agents.get(agent_id)                  # -> Agent
client.agents.update(agent_id, name=None, settings=None, preview=False)
client.agents.delete(agent_id)
client.agents.duplicate(agent_id)            # -> new Agent
client.agents.publish(agent_id)              # publish the current draft as a version
client.agents.restore(agent_id)              # restore last published
client.agents.list_versions(agent_id, page=1, page_size=10)
client.agents.get_tool_schemas()             # -> dict of available tool configs
```

<Note>
  `update(..., preview=True)` returns what the change *would* look like without
  saving. From an `Agent` object you can call `.update(name, settings)`,
  `.delete()`, and `.triggers()` / `.add_trigger(trigger_data)` directly.
</Note>

## Export / import

```python theme={null}
blob = client.agents.export(agent_id, version="auto", version_id=None,
                            set_active_on_import=False)          # -> bytes
client.agents.export_preview(agent_id)                          # -> dict
client.agents.import_(blob, version="auto", mode="clone",
                      activate=False, dry_run=False)            # -> list[dict]
```

`mode` is `"clone" | "version" | "replace"`; `dry_run=True` validates only.

## Triggers

Agent triggers (as opposed to workflow triggers) are managed directly from an
`Agent` object:

```python theme={null}
agent = client.agents.get(agent_id)
agent.add_trigger(trigger_data)
agent.triggers()
```

For workflow triggers and deployment channels, see [Deployments & Triggers](/sdk/resources/deployments).
