Skip to content

Features

Explore Agenkit's comprehensive feature set.

Overview

Agenkit provides production-ready features organized into five categories:

  • Transport Layer


    Connect agents across processes and languages with HTTP, gRPC, and WebSocket.

    Learn more

  • Middleware


    Add resilience, caching, rate limiting, and observability with composable middleware.

    Learn more

  • Composition


    Orchestrate multiple agents into workflows with sequential, parallel, and router patterns.

    Learn more

  • Observability


    Full OpenTelemetry integration with distributed tracing and Prometheus metrics.

    Learn more

  • LLM Adapters


    Connect to any LLM provider with a consistent interface. Swap providers with one line.

    Learn more

  • Tools


    Extend agents with executable tools for deterministic operations.

    Learn more


Feature Matrix

Feature Python Go Cross-Language
Transport Layer
HTTP/1.1
HTTP/2
HTTP/3 (QUIC)
gRPC
WebSocket
Middleware
Retry N/A
Circuit Breaker N/A
Timeout N/A
Rate Limiter N/A
Caching (LRU) N/A
Batching N/A
Composition
Sequential
Parallel
Fallback
Conditional
Observability
OpenTelemetry Tracing
W3C Trace Context
Prometheus Metrics
Structured Logging
LLM Adapters
Anthropic (Claude) N/A
OpenAI (GPT) N/A
Google Gemini N/A
AWS Bedrock N/A
Ollama (Local) N/A
LiteLLM (100+ providers) N/A
Tools
Tool Interface N/A
Tool Registry N/A

Quick Examples

Transport Layer

# HTTP
agent = RemoteAgent(name="api", endpoint="http://localhost:8080")

# gRPC
agent = RemoteAgent(name="api", endpoint="grpc://localhost:50051")

# WebSocket
agent = RemoteAgent(name="api", endpoint="ws://localhost:8080")

Middleware

# Stack middleware
agent = MyAgent()
agent = CachingDecorator(agent, max_size=1000)
agent = RetryDecorator(agent, max_attempts=3)
agent = CircuitBreaker(agent)
agent = TimeoutDecorator(agent, timeout=30.0)

Composition

# Sequential pipeline
pipeline = SequentialAgent([validator, processor, formatter])

# Parallel analysis
analysis = ParallelAgent([sentiment, summary, entities])

# Router
router = ConditionalAgent(
    agents=[weather_agent, news_agent, general_agent],
    condition=route_function
)

Observability

# Initialize tracing and metrics
init_tracing("my-service", otlp_endpoint="http://jaeger:4317")
init_metrics("my-service", port=8001)

# Wrap agent
agent = TracingMiddleware(MetricsMiddleware(MyAgent()))

LLM Adapters

from agenkit.adapters.llm import AnthropicLLM, OpenAILLM, GeminiLLM

# Use Anthropic
llm = AnthropicLLM(api_key="sk-ant-...")

# Swap to OpenAI (same interface!)
llm = OpenAILLM(api_key="sk-...")

# Or try Gemini
llm = GeminiLLM(api_key="...")

# All use the same interface
response = await llm.complete(messages)

Performance

All features are designed for production use with minimal overhead:

  • Transport overhead: <1% in realistic workloads
  • Middleware overhead: <0.01% per middleware
  • Composition overhead: <5% for sequential/parallel
  • Observability overhead: <2% with tracing enabled

View detailed benchmarks →


Next Steps