Skip to content

jastfkjg/AgentBridge

Repository files navigation

πŸŒ‰ AgentBridge

Turn your existing system into an AI-agent-ready platform β€” in seconds.

License: MIT Python 3.10+ PRs Welcome

English Β· δΈ­ζ–‡


AgentBridge discovers capabilities from your API schemas, database schemas, and source routes, then generates a complete Agent Integration Kit that works with MCP, Claude, OpenAI, and Vercel AI SDK out of the box.

With built-in Claude Agent SDK support and AI-powered dynamic generation, AgentBridge goes beyond static templates β€” it uses AI to craft richer tool definitions, domain-specific skills, and intelligent prompts tailored to your system.

πŸ“‘ Table of Contents


✨ Features

πŸ” Auto-discovery Extracts capabilities from OpenAPI, GraphQL, SQL, and source code routes (Python/Flask/FastAPI, JS/Express, Java/Spring)

πŸ”§ Multi-format Generation Outputs MCP, Claude, OpenAI, and Vercel AI SDK tool definitions simultaneously

πŸ€– AI-Powered Generation Uses Claude Agent SDK (primary) or Anthropic API (fallback) to dynamically generate tools, skills, and prompts

🧠 Agent as a Service Runs as an interactive agent for your existing project via Claude Agent SDK

πŸ›‘οΈ Safety-first Classifies operations by risk level with human-in-the-loop confirmation for dangerous actions

πŸ§ͺ Dry-run Validation Test tool invocations against generated guardrails before executing

🌐 Custom LLM Providers Supports DeepSeek, OpenRouter, and any Anthropic-compatible endpoint

πŸͺΆ Rules + LLM Combined Rule-based analysis (risk keywords, HTTP verbs) feeds into LLM as context for smarter generation


πŸš€ Quick Start

Installation

pip install agbr
πŸ“¦ Install with optional features
# AI-powered generation + agent sessions (recommended)
pip install "agbr[agent]"

# Lightweight AI generation (no Claude Agent SDK)
pip install "agbr[ai]"

# Everything
pip install "agbr[all]"

# Install from source (for development)
git clone git@github.com:jastfkjg/AgentBridge.git
cd AgentBridge
pip install -e ".[all]"

Configure LLM Provider

AgentBridge requires an LLM API key for all generation. By default it uses Anthropic's Claude, but you can configure any Anthropic-compatible provider:

# Required
export ANTHROPIC_API_KEY="sk-ant-..."

# Optional: Custom API endpoint
export ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"   # DeepSeek
# export ANTHROPIC_BASE_URL="https://openrouter.ai/api/v1"       # OpenRouter

# Optional: Custom model name
export ANTHROPIC_MODEL="deepseek-v4-flash"
πŸ”‘ Or pass via CLI flags
agentbridge generate examples/writing_system --output build/kit \
  --api-key "sk-..." \
  --base-url "https://api.deepseek.com/anthropic" \
  --model "deepseek-v4-flash"

Note: When ANTHROPIC_BASE_URL is set, AgentBridge automatically uses the anthropic SDK backend (not claude-agent-sdk) for generation, since custom endpoints are not supported by the agent SDK.

Generate an Agent Integration Kit

# Requires ANTHROPIC_API_KEY (set via env var or --api-key flag)
agentbridge generate examples/writing_system --output .agentbridge/writing-kit

Run as an Agent

agentbridge chat .agentbridge/writing-kit

Run Tests

PYTHONPATH=src python -m unittest discover -s tests

πŸ“– CLI Reference

Command Description
agentbridge discover <paths> Discover and print capabilities as JSON
agentbridge generate <paths> -o <dir> Generate an Agent Integration Kit
agentbridge dry-run <kit> <tool> Dry-run a tool invocation
agentbridge chat <kit> Start an interactive AI agent session
πŸ“ Full command details

discover

agentbridge discover examples/writing_system

generate

agentbridge generate examples/writing_system --output build/agent-kit

# With custom name
agentbridge generate examples/writing_system --output build/agent-kit --name my-kit

# With custom LLM provider
agentbridge generate examples/writing_system --output build/agent-kit \
  --api-key "sk-..." --base-url "https://api.deepseek.com/anthropic" --model "deepseek-v4-flash"

dry-run

# Normal invocation
agentbridge dry-run build/agent-kit create_chapter --args '{"project_id":"p1","title":"Opening"}'

# High-risk operation (requires confirmation)
agentbridge dry-run build/agent-kit delete_character \
  --args '{"project_id":"p1","character_id":"c1"}' --confirmed

chat

agentbridge chat build/agent-kit
# Or with custom LLM provider:
agentbridge chat build/agent-kit --api-key "sk-..." --base-url "https://api.deepseek.com/anthropic"

πŸ” What AgentBridge Discovers

Source Type Formats
🌐 API Schemas OpenAPI JSON/YAML, GraphQL schemas
πŸ—„οΈ Database Schemas SQL CREATE TABLE statements
🐍 Python Routes FastAPI @router.get/post/..., Flask @app.route
πŸ“œ JavaScript Routes Express app.get/post/...
β˜• Java Routes Spring @GetMapping/@PostMapping/...

All sources are normalized into a common capability model with:

Field Description
domain + resource Logical grouping
action What the capability does
input_schema JSON Schema parameters
risk read / write / destructive / external_side_effect
confirm_required Whether human approval is needed
source Full traceability back to the origin file

πŸ“ Generated Kit Layout

agent-kit/
β”œβ”€β”€ manifest.json                  # Kit metadata and summary
β”œβ”€β”€ capabilities.json              # All discovered capabilities
β”œβ”€β”€ tools/
β”‚   β”œβ”€β”€ mcp_tools.json             # MCP tool definitions
β”‚   β”œβ”€β”€ openai_tools.json          # OpenAI function calling format
β”‚   β”œβ”€β”€ claude_tools.json          # Claude tool use format
β”‚   └── vercel_ai_tools.ts         # Vercel AI SDK TypeScript tools
β”œβ”€β”€ skills/
β”‚   └── writing.md                 # Domain-specific skill definitions
β”œβ”€β”€ prompts/
β”‚   └── system.md                  # Agent system prompt
β”œβ”€β”€ resources/
β”‚   └── schema.json                # Resource schema summary
β”œβ”€β”€ guardrails/
β”‚   └── permissions.json           # Risk policy and confirmation rules
β”œβ”€β”€ tests/
β”‚   β”œβ”€β”€ tool_invocation_tests.json # Auto-generated invocation tests
β”‚   └── test_generated_tools.py    # Python unit tests for tool contracts
└── dry_run_plan.json              # Dry-run execution plan

πŸ€– AI-Powered Generation

AgentBridge uses LLM to generate all content β€” tool descriptions, skills, system prompts, risk assessments, and inferred tools. Rule-based analysis (keyword matching, HTTP verb classification) is fed into the LLM as context, not used directly.

What Description
πŸ“ Enhanced tool descriptions Context-aware descriptions that capture business semantics
🎯 Domain-specific skills Workflow prompts tailored to your domain with best practices
🧠 Intelligent system prompts Prompts that understand resource relationships and suggest safe sequences
πŸ” Inferred additional tools Tools implied by your schema but not explicitly present
⚠️ Improved risk assessments LLM evaluates risk with rule-based hints as context

AI Backend

Backend Package Use Case
Claude Agent SDK (primary) claude-agent-sdk Generation + interactive agent sessions
Anthropic API (fallback) anthropic Generation only, supports custom endpoints

When claude-agent-sdk is installed and no custom ANTHROPIC_BASE_URL is set, it is used automatically. When a custom endpoint is configured or claude-agent-sdk is not installed, the anthropic SDK is used.

Programmatic Usage

from pathlib import Path
from agentbridge.generator import AgentKitGenerator
from agentbridge.agent import AIGenerator, AgentRunner

# Generate with default provider (Anthropic Claude)
ai = AIGenerator(api_key="sk-ant-...")
kit = AgentKitGenerator(ai_generator=ai).generate(
    [Path("examples/writing_system")],
    Path("build/agent-kit"),
)

# Custom LLM provider (e.g., DeepSeek)
ai = AIGenerator(
    api_key="sk-d831ecabc21842fdae6f30c24dd3b052",
    base_url="https://api.deepseek.com/anthropic",
    model="deepseek-v4-flash",
)

# Agent session
import asyncio
async def main():
    runner = AgentRunner(kit_dir="build/agent-kit", api_key="sk-ant-...")
    async for message in runner.query("List all chapters in project p1"):
        print(message)
asyncio.run(main())

πŸ›‘οΈ Safety Model

Risk Level Confirmation Examples
🟒 read Not required GET, list, search, find
🟑 write Optional by policy POST, create, update, rewrite
πŸ”΄ destructive Required DELETE, remove, destroy, drop, cancel
🟠 external_side_effect Required publish, send, email, pay, deploy, export

The safety model is applied consistently. Rule-based risk classification provides initial context, and the LLM may override when justified.


πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Discovery   │────▢│  Generator   │────▢│  Agent Kit      β”‚
β”‚  (schemas,   β”‚     β”‚  (LLM-driven β”‚     β”‚  (tools, skills,β”‚
β”‚   routes,    β”‚     β”‚   + rules as β”‚     β”‚   prompts,      β”‚
β”‚   SQL)       β”‚     β”‚   context)   β”‚     β”‚   guardrails)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚                      β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚  AI Generatorβ”‚       β”‚  Agent Runner β”‚
                    β”‚  (Claude SDK β”‚       β”‚  (Claude SDK  β”‚
                    β”‚   / Anthropicβ”‚       β”‚   Client +    β”‚
                    β”‚   API)       β”‚       β”‚   MCP Tools)  β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🧩 Extending AgentBridge

Extension How
New schema parser Implement a discoverer in discovery.py
New tool format Add a builder function in generator.py
Custom AI prompts Override prompts in agent.py
Custom risk policy Modify policy.py
Custom agent tools Extend AgentRunner._build_kit_tools()

πŸ“¦ Publishing & Installation

πŸ”§ How does `pip install "agbr"` work?

AgentBridge is packaged as a standard Python package using pyproject.toml + setuptools. Here's the mechanism:

1. Package Structure

AgentBridge/
β”œβ”€β”€ pyproject.toml          # Package metadata, dependencies, entry points
β”œβ”€β”€ src/
β”‚   └── agentbridge/        # Actual Python package
β”‚       β”œβ”€β”€ __init__.py
β”‚       β”œβ”€β”€ cli.py          # CLI entry point
β”‚       β”œβ”€β”€ agent.py
β”‚       β”œβ”€β”€ generator.py
β”‚       └── ...
└── tests/

2. pyproject.toml Key Sections

[project]
name = "agbr"                    # pip install agbr
version = "0.2.0"

[project.optional-dependencies]         # pip install "agbr[agent]"
agent = ["claude-agent-sdk>=0.1.0"]
ai = ["anthropic>=0.30.0"]

[project.scripts]
agentbridge = "agentbridge.cli:main"    # CLI entry point

[tool.setuptools.packages.find]
where = ["src"]                         # Code lives in src/

3. How pip install Works

  1. Build: pip reads pyproject.toml, uses setuptools to build a wheel (.whl)
  2. Install: The wheel is installed into your Python environment's site-packages/
  3. CLI: The [project.scripts] section creates a agentbridge executable in your PATH that calls agentbridge.cli:main

4. Publishing to PyPI (so anyone can pip install)

# Build the package
pip install build
python -m build

# Upload to TestPyPI (for testing)
pip install twine
twine upload --repository testpypi dist/*

# Upload to PyPI (for real)
twine upload dist/*

After publishing, anyone can run pip install "agbr".

5. Installing Without PyPI

Until the package is published on PyPI, users can install it in these ways:

# Install from local source (editable mode, for development)
pip install -e .

# Install from GitHub repository
pip install git+ssh://git@github.com/jastfkjg/AgentBridge.git

# Install from a local wheel
pip install dist/agentbridge-0.2.0-py3-none-any.whl

🀝 Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please make sure tests pass:

PYTHONPATH=src python -m unittest discover -s tests -v

πŸ“„ License

This project is licensed under the MIT License β€” see the LICENSE file for details.

About

AgentBridge helps existing products add an AI assistant quickly.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages