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, manage conversation threads, chat (streamed), and upload 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: Optional[str] = None, search: Optional[str] = None, limit: Optional[int] = None) -> SyncPaginator[Agent]
List agents with pagination and filtering.
Args:
status: Filter by status ("running", "stopped", "starting").
search: Search by agent name.
limit: Maximum number of items to return (default: all matching items).
create
create(*, name: str, description: Optional[str] = None, nodes: Optional[Sequence[Mapping[str, Any]]] = None, connections: Optional[Sequence[Mapping[str, Any]]] = None) -> Dict[str, Any]
Create a new agent.
Creates a workflow in agent mode.
Args: name: Agent name (required). description: Human-readable description. nodes: Workflow node definitions. connections: Workflow connection definitions.
retrieve
retrieve(agent_id: str) -> Agent
Get detailed agent information including live status.
Args: agent_id: Agent workflow ID.
update
update(agent_id: str, *, name: Optional[str] = None, description: Optional[str] = None, nodes: Optional[Sequence[Mapping[str, Any]]] = None, connections: Optional[Sequence[Mapping[str, Any]]] = None, config: Optional[Mapping[str, Any]] = None) -> Dict[str, Any]
Update an agent's configuration.
Args: agent_id: Agent workflow ID. name, description, nodes, connections: Workflow-level fields to update. config: Runtime config applied to a running agent pod.
delete
delete(agent_id: str) -> None
Delete an agent - stops pod, removes agent mode, cleans up records.
Args: agent_id: Agent workflow ID.
Lifecycle & actions
start
start(agent_id: str) -> Dict[str, Any]
Start an agent pod.
Creates a persistent Kubernetes pod running the agent server.
Args: agent_id: Agent workflow ID.
Returns:
Dict with agent_id, pod_ip, success.
stop
stop(agent_id: str) -> Dict[str, Any]
Stop a running agent pod.
Args: agent_id: Agent workflow ID.
redeploy
redeploy(agent_id: str) -> Dict[str, Any]
Apply pending brain-config changes to a running agent by stopping
and re-starting the pod. No-op when no pod is running - the next
start picks up the latest config either way.
promote
promote(workflow_id: str) -> Dict[str, Any]
Promote a workflow to agent mode.
The workflow must contain at least one agent node.
Args: workflow_id: Workflow ID to promote.
Other
analytics
analytics(agent_id: str, *, days: int = 30) -> AgentAnalytics
Get agent analytics - sessions, tokens, success rate, daily activity.
Args: agent_id: Agent workflow ID. days: Number of days to look back (default: 30).
attach_skill
attach_skill(agent_id: str, *, skill_id: str, editable: Optional[bool] = None, auto_connected: Optional[bool] = None, connected_by: Optional[str] = None) -> Dict[str, Any]
Attach a skill to an agent.
Args:
agent_id: Agent workflow ID.
skill_id: Skill id to attach (required).
editable: Whether the agent may edit the skill (default true server-side).
auto_connected: Whether the skill was auto-connected (default true server-side).
connected_by: 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.
Args: agent_id: Agent workflow ID. thread_id: Thread ID for the conversation. message: Message to send.
Yields: SSE event dictionaries.
Example::
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 config - personality, operating prompt reference, context policy, session policy, heartbeat, primary model, fallback models, plus whether the agent pod is running.
create_artifact
create_artifact(agent_id: str, *, title: str, content: str, artifact_type: Optional[str] = None, thread_id: Optional[str] = None, summary: Optional[str] = None, skill_id: Optional[str] = None, tags: Optional[Sequence[str]] = None, metadata: Optional[Mapping[str, Any]] = None) -> Dict[str, Any]
Record a new agent artifact.
Args:
agent_id: Agent workflow ID.
title: Artifact title (required).
content: Artifact content (required).
artifact_type: Artifact type (default html_report server-side).
thread_id: Originating thread id.
summary: Short summary.
skill_id: Skill that produced the artifact.
tags: Categorization tags.
metadata: Arbitrary metadata blob.
create_thread
create_thread(agent_id: str, *, title: Optional[str] = None) -> AgentThread
Create a new conversation thread.
Args: agent_id: Agent workflow ID. title: Thread title (default: "New Conversation").
delete_artifact
delete_artifact(agent_id: str, artifact_id: str) -> None
Delete an agent artifact.
delete_thread
delete_thread(agent_id: str, thread_id: str) -> None
Delete a conversation thread.
Args: agent_id: Agent workflow ID. thread_id: Thread ID to delete.
detach_skill
detach_skill(agent_id: str, skill_id: str) -> Dict[str, Any]
Remove a skill from an agent.
list_artifacts
list_artifacts(agent_id: str) -> Dict[str, Any]
List artifacts the agent has produced.
list_skills
list_skills(agent_id: str) -> Dict[str, Any]
List skills attached to an agent.
list_threads
list_threads(agent_id: str) -> List[AgentThread]
List conversation threads for an agent.
Args: agent_id: Agent workflow ID.
retrieve_artifact
retrieve_artifact(agent_id: str, artifact_id: str) -> Dict[str, Any]
Get a single agent artifact.
status
status(agent_id: str) -> AgentStatus
Get the current status of an agent pod.
Args: agent_id: 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: Optional[List[str]] = 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: Optional[str]) -> 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.
upload_knowledge
upload_knowledge(agent_id: str, file: Union[str, Path, BinaryIO], *, description: Optional[str] = None, tags: Optional[str] = None, document_id: Optional[str] = None) -> KnowledgeUploadResult
Upload a document to the agent's knowledge base.
The file is sent to the agent's knowledge-upload workflow which parses it (PDF, PPTX, TXT, MD, HTML, CSV - with OCR fallback for scanned PDFs), chunks the text, generates embeddings, and stores them in the agent's Milvus vector database.
Args: agent_id: Agent workflow ID. file: Path to a file, or a file-like object opened in binary mode. description: Human-readable description of the document. tags: Comma-separated tags for categorization. document_id: Custom document ID. Auto-generated if omitted.
Returns:
KnowledgeUploadResult with document_id, filename,
file_size, execution_id, and status.
Example::
result = client.agents.upload_knowledge( "wf_abc123", "brand-guide.pdf", description="Company brand guidelines", tags="brand,guide", ) print(f"Ingesting {result.filename} → {result.status}")