Now Available - Production Ready

Stop Wrestling with AI-Agent Authorization

Secure your LLM tools with enterprise-grade authorization. One decorator, instant security. Zero infrastructure.

Python SDK - Get started in 30 seconds
1. Install & Initialize
pip install d2-sdk

# Generate local policy
python -m d2 init

# In your app startup
await configure_rbac()
2. Protect Your Tools
@d2_guard("weather_api")
def get_weather(location: str):
    return weather_service.fetch(location)

# Set user context
set_user("alice", roles=["developer"])
Ready to get started?
Start Now

Built for Production AI Systems

From local development to enterprise scale, D2 provides the security and performance your AI agents need.

Default Deny Security

Secure by default. Undecorated functions are automatically blocked. No accidental security holes.

Sub-5 Second Revocation

Change permissions in our dashboard. They're enforced globally within 5 seconds. No cache invalidation.

One Decorator

Just add @d2_guard to your functions. That's it. No complex integration or infrastructure changes.

Local & Cloud Modes

Start with local file-based policies for development. Scale to cloud for production with zero code changes.

Rich CLI Tools

Built-in CLI for policy management, diagnostics, and inspection. Perfect developer experience.

Flexible Context

ASGI middleware for FastAPI/Starlette or manual context setting. Works with any Python framework.

From Complex to Simple

Replace hundreds of lines of authorization logic with a single decorator.

Before D2

# Hundreds of lines of auth logic
def check_permissions(user, tool, action):
    # Database queries
    # Cache lookups  
    # Role validation
    # Permission checks
    # Error handling
    # Logging
    # ...and more

@app.route('/weather')
def get_weather():
    if not check_permissions(
        user, 'weather', 'read'
    ):
        return 403
    # Your actual logic here
    return weather_service.fetch(location)
Complex

With D2

# One-time setup
await configure_rbac()

# Set user context (once per request)
set_user("alice", roles=["developer"])

# Protect your tools
@d2_guard("weather_api")
def get_weather(location: str):
    return weather_service.fetch(location)

# That's it. Seriously.
Simple
The Difference
Before
100+ lines of code
After
1 decorator

Simple, Transparent Pricing

Start free with local mode. Scale to cloud for production with enterprise features.

Local Mode

Perfect for development

Free/forever
Get Started
  • Up to 25 tools
  • File-based policies
  • 7-day policy expiry
  • CLI tools included
  • Community support
Most Popular

Starter

For growing teams

$500/month
  • Up to 100,000 tool calls/month
  • Cloud policy management
  • Real-time audit logs
  • Priority support
  • Multiple organizations

Team

For large organizations

Custom
  • Unlimited tool calls
  • Custom RBAC policies
  • 24/7 dedicated support
  • Custom SLA

All cloud plans include:

Automatic policy updatesCentral audit logsZero infrastructure99.9% uptime SLA

Ready to Secure Your AI Agents?

Join hundreds of developers using D2 to secure their AI applications. Start with local mode, scale to cloud.

No spam. Unsubscribe anytime. We'll only email about product updates.