Catalog PyPI
Back to packageRELEASE DETAILS

0.2.0

PyPI

agentsdk-py

A lightweight Python SDK for building AI agents with tools, memory, and multi-agent pipelines — powered by Groq

agentsaigroqllmmulti-agentreact-agentsdktool-use
Published20 May 2026
Direct dependencies18
Transitive dependenciesNot calculated

README

Version 0.2.0 documentation

agentsdk

PyPI version Python License: MIT Docs

A lightweight Python SDK for building AI agents with tool use, multi-agent graphs, persistence, and tracing.

Install

pip install agentsdk          # core
pip install agentsdk[otel]    # + OpenTelemetry tracing
pip install agentsdk[dev]     # + pytest / dotenv

Quickstart

import asyncio, os
from agentsdk import Agent, AgentConfig, GroqProvider

agent = Agent(
    config=AgentConfig(
        name="MyAgent",
        system_prompt="You are a helpful assistant.",
    ),
    llm=GroqProvider(api_key=os.environ["GROQ_API_KEY"]),
)

async def main():
    result = await agent.run("What is the capital of France?")
    print(result.output)

asyncio.run(main())

Tools

from agentsdk import tool, ToolRegistry, Agent, AgentConfig, GroqProvider

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

registry = ToolRegistry()
registry.register(add)

agent = Agent(config=AgentConfig(name="Calc", system_prompt="Use tools."),
              llm=GroqProvider(...), registry=registry)

Multi-agent Graph

from agentsdk import AgentNode, Edge, AgentGraph, GraphRunner

graph = AgentGraph()
graph.add_node(AgentNode("researcher", researcher_agent))
graph.add_node(AgentNode("writer", writer_agent))
graph.add_edge(Edge("researcher", "writer", data_map={"output": "input"}))
graph.set_entry("researcher"); graph.set_exit("writer")
result = await GraphRunner(graph).run({"input": "Explain black holes"})

Persistence

from agentsdk import FileCheckpointStore, SessionManager, Agent

store = FileCheckpointStore(base_dir=".agentsdk/checkpoints")
session_mgr = SessionManager(store=store, agent_name="MyAgent")
agent = Agent(config=..., llm=..., session_manager=session_mgr)

# History is saved and reloaded automatically across runs:
await agent.run("My favourite language is Python.", session_id="user-001")
await agent.run("What language did I mention?",     session_id="user-001")

# Fork a session to branch an agent run:
forked = await session_mgr.fork("user-001", "user-001-branch")

Tracing (requires agentsdk[otel])

from agentsdk.observability import SDKTracer, TracedLLMProvider, TracedAgent, print_trace

tracer     = SDKTracer(service_name="myapp")
traced_llm = TracedLLMProvider(provider=GroqProvider(...), tracer=tracer)
agent      = TracedAgent(config=..., llm=traced_llm, tracer=tracer)

result, ctx = await agent.run("Summarise the last quarter earnings.")
print_trace(ctx)
# ╔══ Trace: MyAgent ══════════════════════
# ║  Session     : (none)
# ║  Trace ID    : 6744d6eca33853c5bba0...
# ║  Duration    : 3680ms
# ║  LLM calls   : 2
# ║  Tool calls  : 1
# ║  Tokens      : 1292 in / 36 out
# ╚═════════════════════════════════════════

CLI

# Scaffold a new agent project
scaffold-agent new myproject

# Interactive REPL against any agent file
scaffold-agent run myproject/agents/main.py

# Inspect a saved checkpoint
scaffold-agent trace .agentsdk/checkpoints/MyAgent/user-001.json

# List all sessions for an agent
scaffold-agent list-sessions MyAgent

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 21

Native requirements
18 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.0runtime
httpx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
httpx>=0.27runtime
aiofiles
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
aiofiles>=23.0runtime
groq
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
groq>=0.9runtime
typer
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
typer>=0.12runtime
rich
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
rich>=13.0runtime
opentelemetry-api
Environment
{
  "extras": "",
  "marker": "extra == \"otel\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
opentelemetry-api>=1.24; extra == "otel"runtime
opentelemetry-sdk
Environment
{
  "extras": "",
  "marker": "extra == \"otel\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
opentelemetry-sdk>=1.24; extra == "otel"runtime
chromadb
Environment
{
  "extras": "",
  "marker": "extra == \"rag\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
chromadb>=0.5; extra == "rag"runtime
sentence-transformers
Environment
{
  "extras": "",
  "marker": "extra == \"rag\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
sentence-transformers>=3.0; extra == "rag"runtime
pypdf
Environment
{
  "extras": "",
  "marker": "extra == \"rag\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
pypdf>=4.0; extra == "rag"runtime
PyGithub
Environment
{
  "extras": "",
  "marker": "extra == \"github\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
PyGithub>=2.0; extra == "github"runtime
beautifulsoup4
Environment
{
  "extras": "",
  "marker": "extra == \"scraping\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
beautifulsoup4>=4.12; extra == "scraping"runtime
aiosqlite
Environment
{
  "extras": "",
  "marker": "extra == \"sql\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
aiosqlite>=0.20; extra == "sql"runtime
asyncpg
Environment
{
  "extras": "",
  "marker": "extra == \"sql\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
asyncpg>=0.29; extra == "sql"runtime
beautifulsoup4
Environment
{
  "extras": "",
  "marker": "extra == \"all-tools\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
beautifulsoup4>=4.12; extra == "all-tools"runtime
aiosqlite
Environment
{
  "extras": "",
  "marker": "extra == \"all-tools\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
aiosqlite>=0.20; extra == "all-tools"runtime
asyncpg
Environment
{
  "extras": "",
  "marker": "extra == \"all-tools\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
asyncpg>=0.29; extra == "all-tools"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
pytest>=8.0; extra == "dev"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio>=0.23; extra == "dev"runtime
python-dotenv
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
python-dotenv>=1.0; extra == "dev"runtime

Distribution files

2 collected
agentsdk_py-0.2.0-py3-none-any.whl

bdist_wheel · 55.62 KB · Python py3

Source file
agentsdk_py-0.2.0.tar.gz

sdist · 51.07 KB · Python source

Source file

Repository

PENDING
vishwa0198/agentsdk

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 23:18 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:6ba6903ecf3032a2e2b1ae7e8a70e78bdade6726100a553d62e5d89be6874a60

Other collected versions

View all collected versions →