Skip to main content

A production-grade, framework-agnostic Python Agent SDK with Bridge and Adapter pattern runtimes.

Project description

Kneo Agent

A production-grade, framework-agnostic Python Agent SDK. Build LLM-powered agents across multiple providers (Google ADK, OpenAI Agents SDK, LangChain) with one consistent API and four execution styles: Bridge, Native, Adapter, and Workflow.


Requirements

  • Python 3.12+
  • A single mandatory runtime dependency (PyYAML)
  • Provider SDKs and OpenTelemetry are optional extras — install only what you need

Installation

pip install kneo-agent                       # core only
pip install "kneo-agent[openai]"             # + OpenAI Agents SDK
pip install "kneo-agent[langchain]"          # + LangChain
pip install "kneo-agent[google-adk]"         # + Google ADK
pip install "kneo-agent[telemetry]"          # + OpenTelemetry middleware
pip install "kneo-agent[all]"                # everything above

Verify:

python -c "import kneo_agent; print(kneo_agent.__version__)"
# → 1.3.1

Quick Start

The shortest path is build_sync_agent — no asyncio boilerplate at the call site:

from kneo_agent import build_sync_agent

agent = build_sync_agent(
    "openai",
    model="gpt-4o-mini",
    system_prompt="You are a helpful assistant.",
)

print(agent.chat("What is 2 + 2?"))   # blocks, returns str

Heads-up: build_sync_agent spins up a fresh event loop via asyncio.run. SyncAgent raises RuntimeError if invoked from inside an already-running event loop (Jupyter, FastAPI handlers, other async code) rather than silently deadlocking. In those contexts, reach for the async build_agent instead.

If you're already inside an event loop (Jupyter, FastAPI handler, other async code), use the async equivalent:

import asyncio
from kneo_agent import build_agent

async def main():
    agent = build_agent("openai", model="gpt-4o-mini")
    print(await agent.chat("What is 2 + 2?"))

asyncio.run(main())

Both functions accept the same parameters: provider, model, tools, system_prompt, middlewares, plus a runtime= escape hatch for any pre-built AgentRuntime. The explicit AgentBuilder + factory chain remains available for fine-grained control (custom strategies, multi-step tool registration, workflow composition).


Optional Features

Feature Extra What it adds
OpenAI Agents SDK runtime [openai] Native gpt-* runtime via openai-agents
LangChain runtime [langchain] Bridge over any BaseChatModel
Google ADK runtime [google-adk] Adapter wrapping ADK runners
OpenTelemetry tracing [telemetry] First-party OpenTelemetryMiddleware emitting GenAI semantic-convention spans

Built-in capabilities (no extra needed):

  • MCP tool servers — import remote tools over stdio, http, or sse via MCPServerConfig and ToolRegistry.register_mcp_server(...). HTTP / SSE transports support TLS / mTLS / custom CA bundles via the verify= / ca_bundle= / client_cert= / client_key= parameters.
  • Skills — package prompt fragments, tool bundles, and defaults into reusable Skill objects (Python or SKILL.md files).
  • Workflows — sequential, concurrent, handoff, group-chat, and graph orchestrations. Every workflow satisfies AgentRuntime, so it can be used as a normal Agent or nested inside another workflow. RetryStep wraps any component with retry-on-failure semantics.
  • Human-in-the-loop — first-class workflow step with resolver callback or pause/resume semantics.
  • Middleware — composable hooks around runs, streams, model calls, and tool dispatch. The kneo_agent.middleware subpackage ships a production bundle (RetryMiddleware, RateLimitMiddleware, TokenBudgetMiddleware, RedactionMiddleware); the OpenTelemetry middleware is in kneo_agent.observability under the [telemetry] extra.
  • Secret plumbingSecretProvider Protocol with EnvSecretProvider, FileSecretProvider, and MappingSecretProvider so credentials reach tool handlers and MCP transports without leaking into prompts, tool args, or trace spans.
  • Agent-as-tool — expose any Agent as a tool that another agent can call (agent.as_tool(...) or ToolRegistry.add_agent(...)).

Guide Map

The numbered task guides:

Guide Use it for
docs/user/agent_skills_guide.md Loading skills from Python or SKILL.md, discovery, bundled resources, activation payloads
docs/user/mcp_guide.md Importing remote MCP tools over stdio, http, or sse; corporate TLS / mTLS / custom CA
docs/user/agent_middleware_guide.md The four middleware hooks plus the v1.2.0 production bundle (Retry / RateLimit / TokenBudget / Redaction)
docs/user/human_in_the_loop_guide.md Pause / resume / approval steps inside workflows

The cross-cutting docs added in v1.2.0:

Doc Use it for
docs/user/api_stability.md What counts as public surface; the deprecation policy
docs/user/upgrading_to_1.2.md Practical "should I upgrade?" walkthrough from 1.1.x
docs/user/self_hosted_observability.md Wiring OpenTelemetry to OTLP collector / Jaeger / Tempo / SigNoz
docs/user/offline_install.md Air-gapped installs and the no-phone-home audit

Plus: docs/pub/kneo_agent_api_reference.html / .pdf — the full public-API reference, and the architecture / SRS write-ups under docs/dev/ for design-level context.


Cookbook recipes

Runnable patterns under examples/cookbook/:

Recipe What it shows
production_middleware.py Composing the four production middlewares (Retry / RateLimit / TokenBudget / Redaction + COMMON_PATTERNS) on a Bridge agent, with cumulative-budget tracking and a billing-period reset()
local_ollama.py Pointing the OpenAI runtime at a local Ollama / vLLM / llama.cpp / LocalAI via base_url=
workflow_branching_and_retry.py Graph workflow combining WorkflowBuilder.add_edge(condition=...) routing with RetryStep resilience
mcp_server_catalog.py Loading a YAML/JSON list of MCPServerConfig entries at app startup
sql_query_tool.py Read-only parameter-bound SQL tool over SQLite (psycopg2 / pymysql / pyodbc swap noted)
rest_api_tool.py Per-host REST tool with auth resolved from a SecretProvider
object_store_tool.py List / get / put against MinIO / on-prem S3 via boto3's endpoint_url=
search_index_tool.py Elasticsearch / OpenSearch query tool with a query-type allow-list

Package Contents

kneo_agent/
├── __init__.py             top-level public API exports
├── py.typed                PEP 561 typed marker
├── simple.py               build_sync_agent / build_agent / SyncAgent
├── core/                   Agent, AgentBuilder, RunConfig, types, middleware, skills
├── runtime/                Bridge / Native / Adapter runtime families
├── providers/              OpenAI / LangChain / Google ADK translations
├── workflows/              Sequential / Concurrent / Handoff / GroupChat / Graph + RetryStep
├── patterns/               BridgeAgentFactory, NativeRuntimeFactory, AdapterAgentFactory
├── mcp/                    MCP stdio / HTTP / SSE client (with TLS / mTLS support)
├── observability/          OpenTelemetryMiddleware (requires [telemetry])
├── middleware/             Retry / RateLimit / TokenBudget / Redaction bundle
└── utils/                  ToolRegistry, SecretProvider + impls, message helpers, logging

For full documentation, examples, the architecture write-up, and the SRS, see the project repository on GitHub.

Community

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

kneo_agent-1.3.1.tar.gz (84.8 kB view details)

Uploaded Source

Built Distribution

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

kneo_agent-1.3.1-py3-none-any.whl (103.8 kB view details)

Uploaded Python 3

File details

Details for the file kneo_agent-1.3.1.tar.gz.

File metadata

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

File hashes

Hashes for kneo_agent-1.3.1.tar.gz
Algorithm Hash digest
SHA256 2935aef592f8d09cca1868604309b98e3435a9bed59e2877414c4e0eb89ac50a
MD5 7284ba6611252f698711fd6922f0b134
BLAKE2b-256 f272b24da25105e6b807f941144504290311900d6b05ff7324387a0bf4035545

See more details on using hashes here.

Provenance

The following attestation bundles were made for kneo_agent-1.3.1.tar.gz:

Publisher: release.yml on kneo-agent/kneo-agent

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

File details

Details for the file kneo_agent-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: kneo_agent-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 103.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for kneo_agent-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 baaf059f8c799f426decce8219a53bdb85db92af484a1518016c9b83039c20c4
MD5 6278856ba3a7f007414445ce574b7a7d
BLAKE2b-256 f06fc4ceb0029c2e1fa15e161d017e4d64daf9d7c6e3655dfd0566e1ff72da3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for kneo_agent-1.3.1-py3-none-any.whl:

Publisher: release.yml on kneo-agent/kneo-agent

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