Skip to main content

Claude Agent SDK provider for Zeno (Anthropic Claude with sub-agents, built-in tools, and SDK hooks).

Project description

zeno-provider-claude

Claude Agent SDK provider for Zeno. Wraps claude-agent-sdk (ClaudeSDKClient) behind Zeno's Provider Protocol so an Agent definition stays portable across providers.

Install

uv add 'zeno-framework[claude]'

The zeno-framework meta-package ships Claude as the default; this extra is the explicit form for environments that pin extras.

Usage

from zeno.agent import Agent
from zeno.app import ZenoApp
from zeno.channels.cli.channel import CliChannel
from zeno.providers.claude_sdk import ClaudeSDKProvider

app = ZenoApp(
    agent=Agent(
        name="root",
        instructions="You are a helpful personal assistant.",
        permission_mode="bypassPermissions",
    ),
    channels=[CliChannel()],
    provider=ClaudeSDKProvider(),
)

ClaudeSDKProvider reads ANTHROPIC_API_KEY from the environment via the underlying SDK. Set it before app.start().

Resuming SDK sessions

Pass a session_lookup callable to resume a prior SDK session keyed by (user_id, channel, thread_key):

async def lookup_session(user_id: str, channel: str, thread_key: str | None) -> str | None:
    return await my_store.get_sdk_session_id(user_id, channel, thread_key)


provider = ClaudeSDKProvider(session_lookup=lookup_session)

When session_lookup returns None (or is omitted), each turn starts a fresh SDK session.

Capabilities

ClaudeSDKProvider is the only Zeno provider that supports:

  • sub_agents — Claude Agent SDK dispatch via AgentDefinition
  • built_in_toolsWebSearch, WebFetch, Bash, etc.
  • permission_modedefault / acceptEdits / bypassPermissions / plan
  • Streaming assistant text via ctx.stream(...)
  • SDK hook bridge (PreToolUse / PostToolUse / UserPromptSubmit and the optional SubagentStart / SubagentStop / PostToolUseFailure hooks when available) translated into Zeno trace events.

Part of the Zeno framework.

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

zeno_provider_claude-1.0.1.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

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

zeno_provider_claude-1.0.1-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file zeno_provider_claude-1.0.1.tar.gz.

File metadata

  • Download URL: zeno_provider_claude-1.0.1.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for zeno_provider_claude-1.0.1.tar.gz
Algorithm Hash digest
SHA256 c1b9c06b3e452082ac7653533b29e9922bf56991ec86402df4d4ce0920226438
MD5 aee8cc14d89ec445d40067fe5c5dd0b7
BLAKE2b-256 6565b79663802516288d328f00578818ea33749aea23bff3b6df0e4eb5fbcb2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for zeno_provider_claude-1.0.1.tar.gz:

Publisher: publish.yml on nkootstra/zeno

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zeno_provider_claude-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for zeno_provider_claude-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 80d86997be1293dcffb63344ba71052a8d6a84b803e3ed33465ff894ab71d43c
MD5 b6e906ea594ffa0e82ad0d6b610acf77
BLAKE2b-256 b9f590f1026d2a4081d863b10cdd44060f296dfb077a8d3513744ffd35a3c0cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for zeno_provider_claude-1.0.1-py3-none-any.whl:

Publisher: publish.yml on nkootstra/zeno

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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