Skip to main content

Doberman

Framework-agnostic middleware for approving or denying AI agent tool calls before they execute.

Doberman sits between an AI agent and its tools. Instead of allowing an agent to directly execute a function, the call is first routed through Doberman, which decides whether to allow or block it based on user-defined policies or an interactive approval prompt.

Features

  • Approve or deny tool calls before execution
  • Allow once / deny once
  • Always allow / always deny
  • Persistent permission storage (policies.json)
  • CLI for managing permissions
  • Framework-agnostic design
  • Zero external runtime dependencies

Installation

pip install doberman-agent

Or install from source:

git clone https://github.com/DakshSharma304/Doberman.git
cd Doberman
pip install -e .

Quick Example

from doberman import doberman

tool_call = {
    "tool": "gmail",
    "args": {
        "action": "send_email",
        "to": "alice@example.com",
        "subject": "Hello",
        "body": "Hi!"
    }
}

tools = {
    "gmail": gmail_tool
}

result = doberman(tool_call, tools)

If the permission has never been seen before, Doberman asks the user:

Doberman permission request

Tool: gmail
Action: send_email

1 = Allow once
2 = Always allow
3 = Deny once
4 = Always deny

Future requests follow the stored policy automatically.

Example

A complete Gemini + Gmail example is included:

examples/gemini_gmail_agent.py

Install the example dependencies:

pip install -r requirements-examples.txt

CLI

List permissions:

doberman list

Allow permissions:

doberman allow gmail.send_email

Allow multiple permissions:

doberman allow gmail.send_email gmail.read_latest

Deny permissions:

doberman deny gmail.send_email

Remove permissions:

doberman remove gmail.send_email

Project Structure

doberman/
    __init__.py
    cli.py
    doberman.py
    policy.py

examples/
    gemini_gmail_agent.py

Roadmap

  • Desktop approval dialog
  • Wildcard policies (gmail.*)
  • Conditional policies
  • Framework adapters (OpenAI, Anthropic, LangGraph, CrewAI)
  • Logging and auditing
  • PyPI release

Contributing

Issues and pull requests are welcome.

License

Licensed under the GNU GPL v3.

Metadata

Release files for doberman-agent 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for doberman-agent 0.1.0
File Size Uploaded Provenance Actions
doberman_agent-0.1.0.tar.gz 16.6 kB With provenance Details for doberman_agent-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for doberman-agent 0.1.0
File Interpreter ABI Platform Actions
doberman_agent-0.1.0-py3-none-any.whl Python 3 none any Details for doberman_agent-0.1.0-py3-none-any.whl

Total release size: 34.4 kB

Release files / doberman_agent-0.1.0.tar.gz

Download URL doberman_agent-0.1.0.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2bddac7bf8b12a4b93e003ef64d696b05e5686bdd4aeaed5b3b42e0789c53b4d
BLAKE2b-256 checksum
How to use checksums
3693fe17c9ae7200a59575c433a00c2080e6f7d6e5e272b16dfe9f5dc9585bcd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 6, 2026.

Transparency log

Release files / doberman_agent-0.1.0-py3-none-any.whl

Download URL doberman_agent-0.1.0-py3-none-any.whl
Size 17.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f3b15903e8746ab92e53f5c7a71f069358969c9bdd6cb42af47eacdf6002cae3
BLAKE2b-256 checksum
How to use checksums
1f21d630d5b9ff0f73dd359f77f99e38e711545b58560491c3a1aa51520d60dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 6, 2026.

Transparency log

Security for doberman-agent 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for doberman_agent-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page