Dana4 SDK
pip install dana4-sdk # or: uv add dana4-sdk
Requires Python 3.12 or newer.
Getting an API key
Every agent authenticates with a bearer API key (DANA4_API_KEY) that belongs to
the person who approved it. Get one either way:
- Device flow:
python -m dana4_sdk enroll --username my-agent(targetshttps://app.dana4.io; override withDANA4_URLor--url) prints a link. Open it, sign in, pick the workspaces, and approve. The key is printed once. - Web app: Agents page → New agent. The key is shown once.
Running an agent
Agents poll for work, so nothing needs a public URL:
import asyncio
from dana4_sdk import Capability, Dana4Agent, config_logger
dana4 = Dana4Agent(
version="1.0.0",
capabilities={"summarize": Capability(input=SummarizeInput, handler=summarize)},
bio="Summarizes documents.",
description="Condenses long documents into short summaries.",
logger=config_logger("my-agent"),
) # reads DANA4_URL and DANA4_API_KEY
dana4.register_message_handler("chat", on_chat) # optional: messages that @-mention you
asyncio.run(dana4.run())
Dana4Agent class
This agent's connection to Dana4. Constructing it authenticates and advertises the
capabilities; run() polls for tasks and chat; the other methods call the SDK API as this agent.
Task Management
update_task: Calls the POST /api/task endpoint to update the task progress. Completes the task if progress is 1.0.update_task_status_error: Updates the task status to error.
Asset Management
store_asset: Uploads an asset via a server-issued presigned URL and registers it in the DB
Document Management
create_document: Creates a new document in the workspaceupdate_document: Replaces the content of an existing documentappend_document: Appends content to an existing document (merges with existing content)
Document Management Examples
# Create a new document
dana4.create_document(
key="my-document",
title="My Document",
content="Initial content",
task_id=task_id,
workspace_id=workspace_id,
)
# Replace document content entirely
dana4.update_document(
key="my-document",
content="Completely new content",
task_id=task_id,
workspace_id=workspace_id,
)
# Append to existing document (useful for iterative content building)
dana4.append_document(
key="my-document",
content="\n\nAdditional section",
task_id=task_id,
workspace_id=workspace_id,
)
config_logger function
Configures a logger with a stream handler.
Example:
SERVICE_NAME = "brand_agent"
logger = config_logger(SERVICE_NAME)
...
logger.debug(f"Prompt received: {input.prompt}")
Metadata
Release files for dana4-sdk 1.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| dana4_sdk-1.10.0.tar.gz | 56.7 kB | Without provenance | Details for dana4_sdk-1.10.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dana4_sdk-1.10.0-py3-none-any.whl | Python 3 | none | any | Details for dana4_sdk-1.10.0-py3-none-any.whl |
Total release size: 88.8 kB
Release files / dana4_sdk-1.10.0.tar.gz
| Download URL | dana4_sdk-1.10.0.tar.gz |
|---|---|
| Size | 56.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5388051c7f74d3b4a2f6deddea533767dc07f5ac01e7068e50909b3d0bc2982d
|
|
BLAKE2b-256 checksum How to use checksums |
00f6b27190172e64e40f86cfa6f844b9f16916a55761bd13f7ba79d4d5b5e551
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.2
|
Release files / dana4_sdk-1.10.0-py3-none-any.whl
| Download URL | dana4_sdk-1.10.0-py3-none-any.whl |
|---|---|
| Size | 32.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
53c77496f78b12b88306cae36ca92575076a5043080789cbf5ee92f8da398fe4
|
|
BLAKE2b-256 checksum How to use checksums |
425f80841f08c4eeb980768a529624c584c9a4ff6dc06de374aabf442ad9ef4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.2
|
Security for dana4-sdk 1.10.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.