Observed since 20 Oct, 22:15 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Framework-agnostic agent orchestration with A2A, MCP, runtime adapters, and vendor-fabric tools
Framework-agnostic agent fabric orchestration. Declare fabric agents once in YAML, then run them on CrewAI, LangGraph, Strands, or local CLI runners without changing a single fabric agent definition. Runtime frameworks are optional and are detected lazily from what is installed.
Documentation | Source | Issues
# Core discovery, loading, runner selection, local CLI, and neutral file tools
pip install agentic-fabric
# With a specific framework
pip install "agentic-fabric[langgraph]"
pip install "agentic-fabric[strands]"
# Non-framework optional surfaces
pip install "agentic-fabric[a2a]"
pip install "agentic-fabric[mcp]"
pip install "agentic-fabric[scraping]"
# Add only the provider SDKs the agent actually calls
pip install "agentic-fabric[github,slack]"
Local CLI runners do not require a Python extra. Install the external CLI
(aider, claude, codex, ollama, or a custom executable) and inspect
profiles with agentic-fabric list-runners --json.
vendor-fabric is a required dependency and owns provider routing. The
anthropic, aws, cursor, github, google, meshy, secrets-sync,
slack, vault, and zoom extras pass through to its matching optional
dependencies. Provider SDK imports remain lazy.
There is no aggregate AI extra. Install exactly the framework or provider path
you use. The CrewAI adapter remains lazy, but agentic-fabric does not publish
a CrewAI extra while CrewAI depends on ChromaDB releases covered by an upstream
critical advisory with no patched version. Install CrewAI separately only after
reviewing that advisory state. Core, local-CLI, and first-party scraping
installs are unaffected.
# .fabric/fabric_agents/analyzer/agents.yaml
code_reviewer:
role: Senior Code Reviewer
goal: Find bugs and improvements
backstory: Expert at code analysis
# .fabric/fabric_agents/analyzer/tasks.yaml
review_code:
description: Review the provided code for issues
expected_output: List of findings with severity
agent: code_reviewer
from pathlib import Path
from agentic_fabric import detect_framework, get_fabric_agent_config, run_fabric_agent_auto
# See what framework is available
framework = detect_framework()
# Load a fabric agent manifest discovered in a package or workspace
config = get_fabric_agent_config(Path(".fabric"), "analyzer")
# Auto-detect best framework and run
result = run_fabric_agent_auto(config, inputs={"code": "..."})
Or from the CLI:
agentic-fabric run my-package analyzer --input "Review this code: ..."
from agentic_fabric import get_runner
runner = get_runner("langgraph") # Force LangGraph
fabric_agent = runner.build_fabric_agent(config)
result = runner.run(fabric_agent, inputs)
from agentic_fabric import AgenticData, get_framework_info
print(get_framework_info())
session = AgenticData({"repo": "jbcom/agentic-fabric"})
session.register_fabric_agent("reviewer", config)
result = session.run_fabric_agent("reviewer", runtime="crewai")
langgraph, strands, a2a, mcp, scraping,
tests, typing, docs, and dev.AgenticData: carries data, registered fabric agents, active runtime selection, and
vendor-layer context together.AGENTIC_FABRIC_TOOL_IMPORT_ALLOWLIST.AgenticData.vendor_tools() adapts inherited
VendorData capability metadata into agent-facing tools without importing
provider SDKs directly.ManagerAgent delegates across fabric agents..fabric/, .crewai/, .langgraph/, and
.strands/ directories.vendor-fabric provider
dependency without moving connector behavior into this package.You can always force a specific runner with get_runner("langgraph") or
agentic-fabric run --framework langgraph.
If the selected runtime is not installed, errors point to the matching
agentic-fabric[...] extra. Framework-specific config directories also enforce
their runtime: a fabric agent in .langgraph/ will not silently run on CrewAI.
For single-agent coding tools, use the --runner CLI path:
agentic-fabric list-runners --json
agentic-fabric run --runner aider --input "Add validation to auth.py"
agentic-fabric run --runner ollama --model deepseek-coder --input "Explain this module"
Profiles are loaded from the packaged local_cli_profiles.yaml, validated
before use, and rejected on POSIX systems if the profiles file is group- or
world-writable.
The a2a extra installs the official A2A Python SDK and Starlette/Uvicorn
HTTP surface. Agentic Fabric implements A2A Protocol 1.0 with Agent Card
discovery and the JSON-RPC binding:
from agentic_fabric import create_fabric_agent_spec, create_a2a_app
spec = create_fabric_agent_spec("reviewer", "https://agents.example.com/a2a")
app = create_a2a_app(spec)
create_vendor_a2a_app() exposes a single structured skill accepting
provider, operation, and arguments; execution delegates to
AgenticData.call() and therefore to VendorData. The bundled development
entry point is:
agentic-fabric-vendor-a2a --host 127.0.0.1 --port 8000 \
--url https://agents.example.com/a2a
The app uses an in-memory task store and declares streaming but not push notifications. Wrap it with application authentication, authorization, rate limits, audit logging, HTTPS, and a durable task store before production use. Only JSON-RPC is advertised; HTTP+JSON/REST and gRPC are not silently claimed.
The mcp extra installs the stable MCP Python SDK 2.x, which implements the
2026-07-28 protocol while retaining earlier-client compatibility. It enables
two stdio console entry points:
agentic-fabric-vendor-mcp
agentic-fabric-meshy-mcp
agentic-fabric-vendor-mcp exposes credential-free public catalog functions
and currently available VendorData.capabilities(). Calls route through
AgenticData.call(); the adapter never imports connector implementations or
uses Vendor Fabric's private registry. agentic-fabric-meshy-mcp converts
Meshy capability metadata from vendor-fabric[meshy] into MCP tools. Both
servers validate tool inputs against Draft 2020-12 JSON Schema and return both
structured content and a serialized text fallback. Declared output schemas are
also enforced. Provider results and diagnostics pass through Extended Data's
redaction helpers before leaving the process.
The generic MCPToolAdapter and create_tool_server() API can expose an
application-owned callable set without a vendor dependency. The shipped CLIs
use stdio; applications can mount the returned SDK server over another MCP 2.x
transport when they own the transport security policy.
extended-data owns base data containers, logging, input handling, files,
redaction, and generic workflows.vendor-fabric owns vendor connectors, provider-backed sync, the SecretSync
Python facade/capability surfaces, provider capability metadata, and provider
dispatch.agentic-fabric owns fabric agent discovery, runner selection, framework
adapters, A2A/MCP protocol surfaces, agent-facing tool wrappers, and
orchestration.Protocol behavior follows the current A2A 1.0 specification and MCP 2026-07-28 tool specification.
Full guides and API documentation are published at
jonbogaty.com/agentic-fabric.
AGENTS.md contains durable repository guidance for Codex sessions.
The docs are built with Sourcey. The public API-reference Markdown is
deterministically generated from the two package __all__ surfaces:
python scripts/generate_api_reference.py --check
npm ci --prefix docs
npm run build --prefix docs
Local validation:
uv sync --all-packages --all-extras --dev
tox -e lint
tox -e typecheck
tox -e audit
tox -e py311
tox -e py312
tox -e py313
tox -e py314
tox -e coverage
tox -e plugin
tox -e examples
tox -e build
MIT
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.4.0 | 24 Aug 2026 | 24 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 22:15 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:e64b30d2543b0587452f85f3cc18f74dd9b95d354daabdc49890cfb123a1366d