Skip to main content

Agents

Agents are workflow-powered assistants that run as persistent pods with function calling, memory, and tools. Use this resource to create and configure an agent, control its pod, and manage conversation threads and chat (streamed). An agent's knowledge bases are on client.knowledge.

Access it as client.agents on a Strongly client, or the same path on AsyncStrongly with await. All methods exist on both with identical signatures.

Quick start​

from strongly import Strongly

client = Strongly()

# List (auto-paginates as you iterate) # filters: status, search
for agent in client.agents.list():
print(agent.id)

Methods​

Core​

list​

list(*, status: str | None = None, search: str | None = None, limit: int | None = None) -> SyncPaginator[Agent]

List agents with pagination and filtering.

Parameters

  • status (str | None, optional): Filter by status ("running", "stopped", "starting").
  • search (str | None, optional): Search by agent name.
  • limit (int | None, optional): Maximum number of items to return (default: all matching items).

create​

create(*, name: str, description: str | None = None, nodes: Sequence[Mapping[str, Any]] | None = None, connections: Sequence[Mapping[str, Any]] | None = None) -> Agent

Create a new agent.

Creates a workflow in agent mode.

Parameters

  • name (str): Agent name (required).
  • description (str | None, optional): Human-readable description.
  • nodes (Sequence[Mapping[str, Any]] | None, optional): Workflow node definitions.
  • connections (Sequence[Mapping[str, Any]] | None, optional): Workflow connection definitions.

retrieve​

retrieve(agent_id: str) -> Agent

Get detailed agent information including live status.

Parameters

  • agent_id (str): Agent workflow ID.

update​

update(agent_id: str, *, name: str | None = None, description: str | None = None, nodes: Sequence[Mapping[str, Any]] | None = None, connections: Sequence[Mapping[str, Any]] | None = None) -> dict[str, Any]

Update an agent's name, description or graph (only the fields given change).

The agent's brain settings (personality, operating prompt, context policy) are update_personality, update_operating_prompt and update_context_policy.

Parameters

  • agent_id (str): Agent workflow ID.
  • name, description, nodes, connections: Workflow-level fields to update.

delete​

delete(agent_id: str) -> None

Delete an agent - stops pod, removes agent mode, cleans up records.

Parameters

  • agent_id (str): Agent workflow ID.

Lifecycle & actions​

start​

start(agent_id: str) -> Agent

Start an agent pod.

Creates a persistent Kubernetes pod running the agent server.

Parameters

  • agent_id (str): Agent workflow ID.

Returns

  • dict[str, Any]: Dict with agent_id, pod_ip, success.

stop​

stop(agent_id: str) -> Agent

Stop a running agent pod.

Parameters

  • agent_id (str): Agent workflow ID.

redeploy​

redeploy(agent_id: str) -> Agent

Apply pending brain-config changes to a running agent.

Stops and re-starts the pod. Does nothing when no pod is running: the next start picks up the latest config either way.

promote​

promote(workflow_id: str) -> Agent

Promote a workflow to agent mode and return the agent.

The workflow must contain at least one agent node. What the promotion warned about is in the agent's warnings.

Parameters

  • workflow_id (str): Workflow ID to promote.

Other​

analytics​

analytics(agent_id: str, *, days: int = 30) -> AgentAnalytics

Get agent analytics - sessions, tokens, success rate, daily activity.

Parameters

  • agent_id (str): Agent workflow ID.
  • days (int, optional): Number of days to look back (default: 30).

attach_skill​

attach_skill(agent_id: str, *, skill_id: str, editable: bool | None = None, auto_connected: bool | None = None, connected_by: str | None = None) -> dict[str, Any]

Attach a skill to an agent.

Parameters

  • agent_id (str): Agent workflow ID.
  • skill_id (str): Skill id to attach (required).
  • editable (bool | None, optional): Whether the agent may edit the skill (default true server-side).
  • auto_connected (bool | None, optional): Whether the skill was auto-connected (default true server-side).
  • connected_by (str | None, optional): Who attached the skill (default agent server-side).

chat​

chat(agent_id: str, thread_id: str, message: str) -> Iterator[dict[str, Any]]

Send a message to an agent and stream the response.

Yields SSE events as dictionaries. Each event has an event field (e.g., "thread.message.delta") and a data field with the payload.

Parameters

  • agent_id (str): Agent workflow ID.
  • thread_id (str): Thread ID for the conversation.
  • message (str): Message to send.

Yields

  • dict[str, Any]: SSE event dictionaries.

Examples

for event in client.agents.chat("wf_abc", "thread_123", "/help"):
if event.get("event") == "thread.message.delta":
content = event["data"]["delta"].get("content", "")
print(content, end="")
elif event.get("event") == "thread.run.completed":
print("\n--- Done ---")

config​

config(agent_id: str) -> dict[str, Any]

Read the agent's current configuration.

Its personality, operating prompt reference, context policy, session policy, heartbeat, primary model and fallback models, plus whether the agent pod is running. applyPending is true when a setting was saved after the running pod started; redeploy applies it.

create_thread​

create_thread(agent_id: str, *, title: str | None = None) -> AgentThread

Create a new conversation thread.

Parameters

  • agent_id (str): Agent workflow ID.
  • title (str | None, optional): Thread title (default: "New Conversation").

delete_thread​

delete_thread(agent_id: str, thread_id: str) -> None

Delete a conversation thread.

Parameters

  • agent_id (str): Agent workflow ID.
  • thread_id (str): Thread ID to delete.

demote​

demote(agent_id: str) -> Workflow

Turn an agent back into a regular workflow and return the workflow.

Only the mode changes: a deployed agent keeps running until it is stopped.

detach_skill​

detach_skill(agent_id: str, skill_id: str) -> dict[str, Any]

Remove a skill from an agent.

get_template​

get_template(key: str) -> dict[str, Any]

Get a reference agent's Agent Builder payload, to prefill create.

key is iris, atlas, sage or aria (from list_templates).

list_skills​

list_skills(agent_id: str) -> dict[str, Any]

List skills attached to an agent.

list_templates​

list_templates() -> list[dict[str, Any]]

List the reference agents an agent can be created from: each key and summary.

list_threads​

list_threads(agent_id: str) -> list[AgentThread]

List conversation threads for an agent.

Parameters

  • agent_id (str): Agent workflow ID.

logs​

logs(agent_id: str, *, lines: int | None = None, container: str | None = None) -> dict[str, Any]

Recent log lines of a deployed agent's pod.

name_available​

name_available(name: str, *, ignore_agent_id: str | None = None) -> bool

Whether an agent name is free for you (names are unique per user).

ignore_agent_id leaves one agent out, to check a rename.

remove_addon​

remove_addon(agent_id: str, addon_id: str) -> Agent

Take an attached add-on off an agent (agent.attachments.addons).

The add-on is not deleted; once nothing uses it, it can be. Returns the agent without it. A running agent loads the change at its next restart (redeploy).

remove_tool_workflow​

remove_tool_workflow(agent_id: str, workflow_id: str) -> Agent

Take a tool workflow off an agent (agent.attachments.tool_workflows).

The workflow is not deleted; once no agent lists it, it can be. Returns the agent without it. A running agent loads the change at its next restart (redeploy).

status​

status(agent_id: str) -> AgentStatus

Get the current status of an agent pod.

Parameters

  • agent_id (str): Agent workflow ID or pod ID.

update_context_policy​

update_context_policy(agent_id: str, *, kind: str, token_budget: int, keep_recent: int) -> dict[str, Any]

Write the agent's context policy.

kind is one of window / summarise / hierarchical. Requires a redeploy.

update_model​

update_model(agent_id: str, model_id: str, fallback_model_ids: list[str] | None = None) -> dict[str, Any]

Swap the agent's primary model and (optionally) its ordered fallback list.

The platform rebuilds the runtime services bundle on save; call redeploy afterwards to bring up a pod on the new model.

update_operating_prompt​

update_operating_prompt(agent_id: str, operating_prompt_id: str | None) -> dict[str, Any]

Point the agent at a Library prompt.

None resets to the platform default. Operating-prompt edits live-reload on the agent's next turn - no redeploy needed.

update_personality​

update_personality(agent_id: str, personality: str) -> dict[str, Any]

Set the inline personality paragraph.

Requires a redeploy via redeploy to take effect on a running agent.

update_skill​

update_skill(agent_id: str, skill_id: str, *, editable: bool) -> dict[str, Any]

Update a skill attachment's editable flag on an agent.