Skip to main content

The runtime for agents that act in the real world.

Project description

dendrux

Python SDK for Dendrux — the framework for building agents with tools, persistence, and observability.

Version: 0.1.0a1

Install

pip install "dendrux[all]"              # Everything
pip install "dendrux[anthropic,db]"     # Just Anthropic + SQLite
pip install "dendrux[openai,db]"        # Just OpenAI + SQLite

Quick Example

import asyncio
from dendrux import Agent, tool
from dendrux.llm.anthropic import AnthropicProvider

@tool()
async def add(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b

async def main():
    async with Agent(
        provider=AnthropicProvider(model="claude-sonnet-4-6"),
        prompt="You are a calculator.",
        tools=[add],
    ) as agent:
        result = await agent.run("What is 15 + 27?")
        print(result.answer)

asyncio.run(main())

Providers

Provider Import Use case
Anthropic from dendrux.llm.anthropic import AnthropicProvider Claude models
OpenAI from dendrux.llm.openai import OpenAIProvider GPT models + vLLM, SGLang, Groq, Ollama
OpenAI Responses from dendrux.llm.openai_responses import OpenAIResponsesProvider GPT + built-in tools (web search)
Mock from dendrux.llm.mock import MockLLM Deterministic testing

API Quick Reference

from pathlib import Path
from dendrux.observers.console import ConsoleObserver

async with Agent(
    provider=provider,                  # Required: LLM provider
    prompt="...",                        # Required: system prompt
    tools=[add],                         # Optional: tool functions
    database_url=f"sqlite+aiosqlite:///{Path.home() / '.dendrux' / 'dendrux.db'}",
    redact=my_scrubber,                  # Optional: scrub persisted strings
) as agent:
    result = await agent.run(
        "What is 15 + 27?",
        observer=ConsoleObserver(),      # Optional: terminal output
        tenant_id="org-123",             # Optional: multi-tenant isolation
        metadata={"thread": "t1"},       # Optional: your linking data
    )

RunResult

result.answer          # str | None — the agent's final answer
result.status          # RunStatus — SUCCESS, ERROR, MAX_ITERATIONS, WAITING_CLIENT_TOOL, CANCELLED
result.steps           # list[AgentStep] — full reasoning chain
result.iteration_count # int — how many loop iterations ran
result.usage           # UsageStats — input_tokens, output_tokens, total_tokens
result.run_id          # str — unique run identifier (ULID)
result.error           # str | None — error message if status is ERROR

Tool Options

@tool()                                  # Basic server tool
@tool(target="client")                   # Client-side — agent pauses
@tool(max_calls_per_run=3)               # Limit calls per run
@tool(timeout_seconds=120)               # Custom timeout (default 120s)
@tool(parallel=False)                    # Run alone, not concurrently

Full Documentation

See the full documentation on GitHub for provider setup, configuration, database guide, CLI, dashboard, observer system, and examples.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dendrux-0.2.0a5.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dendrux-0.2.0a5-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file dendrux-0.2.0a5.tar.gz.

File metadata

  • Download URL: dendrux-0.2.0a5.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for dendrux-0.2.0a5.tar.gz
Algorithm Hash digest
SHA256 ea3b584df7089fedc62186b93f2a3cd7ebf8201509306849c2e2f703530c346f
MD5 9b72f5d8ad30fb6901b76f64430617e8
BLAKE2b-256 674da260b36e3a5f3b8514c0593052bc96c2316cbb8c378f9e0e7b5a2b21551e

See more details on using hashes here.

File details

Details for the file dendrux-0.2.0a5-py3-none-any.whl.

File metadata

  • Download URL: dendrux-0.2.0a5-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for dendrux-0.2.0a5-py3-none-any.whl
Algorithm Hash digest
SHA256 a0ddeb88b9e4272f32c8fc4a3c32e5006c841a7128806583f6613ba0d6048148
MD5 1b5e05b061ca850e3b26286a3467aec0
BLAKE2b-256 0f68f2636e72832262b5ae144e4c478480c095d6b309dc9a5e26e0c5266428dc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page