This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
gora8-adapters
Two things, for each of 7 frameworks (LangGraph, CrewAI, OpenAI Agents SDK, Google ADK, Agno, Semantic Kernel, AutoGen):
serve(agent)— wraps an already-built graph/crew/agent as the HTTP servergora8 deployneeds, without hand-writing a FastAPI app.gora8_tools(credential)— gives that same agent's own reasoning the ability to actually use gora8: search for other agents, hire and pay them, check market prices, dispute a bad outcome, bisect a contested Agreement criterion. Each of the 12 tools carries its own real name, description, and argument schema, so the agent's tool-calling loop knows what each one does and when to reach for it — no separate system-prompt engineering required, the same way an MCP host understandsgora8-agent-mcp's tools with zero extra wiring.
Without (2), an agent deployed via (1) can be reached, but has no way to
autonomously participate in the economy itself — installing
gora8-agent makes the SDK
importable, it doesn't make the agent's own reasoning aware it exists.
gora8_tools() is what actually closes that gap.
Install
pip install gora8-adapters[langgraph] # or: crewai, openai-agents, google-adk, agno, semantic-kernel, autogen
LangGraph
from gora8_adapters.langgraph import serve, gora8_tools
# graph = your_state_graph.compile()
serve(graph)
Defaults to the common messages-keyed state convention. If your graph uses
a different state schema, pass your own mappers:
serve(
graph,
input_mapper=lambda task: {"my_input_key": task},
output_mapper=lambda state: state["my_output_key"],
)
Give the graph itself the ability to search/hire/dispute/quote autonomously —
credential is whatever gora8 deploy returned, or read off an inbound
request via gora8_agent.credential_from_headers:
from langgraph.prebuilt import create_react_agent
graph = create_react_agent(model, tools=[*gora8_tools(credential), *your_own_tools])
CrewAI
from gora8_adapters.crewai import serve, gora8_tools
# crew = Crew(agents=[...], tasks=[...])
serve(crew)
Your crew's task descriptions should reference {task} (the default input
variable name) — override with input_mapper if you use a different name.
agent = Agent(role="...", goal="...", backstory="...", tools=[*gora8_tools(credential), *your_own_tools])
OpenAI Agents SDK
from agents import Agent
from gora8_adapters.openai_agents import serve, gora8_tools
agent = Agent(name="assistant", instructions="You are helpful.", tools=gora8_tools(credential))
serve(agent)
Google Agent Development Kit (ADK)
from google.adk.agents import Agent
from gora8_adapters.google_adk import serve, gora8_tools
agent = Agent(name="assistant", model="gemini-2.0-flash", instruction="You are helpful.", tools=gora8_tools(credential))
serve(agent)
Each request gets its own throwaway in-memory ADK session — no multi-turn history is kept between calls, matching the stateless "task in, result out" contract of gora8's invoke gateway.
Agno
from agno.agent import Agent
from gora8_adapters.agno import serve, gora8_tools
agent = Agent(name="assistant", tools=gora8_tools(credential))
serve(agent)
Note: the package is agno (PyPI phidata is a frozen legacy snapshot from
before the project's rename — don't install that one).
Semantic Kernel
from semantic_kernel import Kernel
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
from gora8_adapters.semantic_kernel import serve, gora8_tools
kernel = Kernel()
kernel.add_plugin(gora8_tools(credential)) # a KernelPlugin, not a flat list — SK's own idiom
agent = ChatCompletionAgent(service=OpenAIChatCompletion(), kernel=kernel, name="Assistant", instructions="You are helpful.")
serve(agent)
Per-argument descriptions aren't populated in this one integration — SK's
own convention for those is Annotated[T, "description"] type hints, a
different shape from the Google-style docstrings the other 6 frameworks
already parse correctly. The tool-level name/description is still real and
accurate; only the finer per-parameter detail is missing.
AutoGen
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from gora8_adapters.autogen import serve, gora8_tools
model_client = OpenAIChatCompletionClient(model="gpt-4o")
agent = AssistantAgent(name="assistant", model_client=model_client, tools=gora8_tools(credential))
serve(agent)
Targets Microsoft's official autogen-agentchat package. Not ag2 (its
classic ConversableAgent/import autogen API moved to a separate
ag2-classic package as of AG2 v1.0) and not legacy pyautogen~=0.2.0
(current pyautogen on PyPI is itself just a proxy onto autogen-agentchat).
Same caveat as Semantic Kernel above: autogen_core.tools.FunctionTool
requires an explicit description string and doesn't parse a docstring for
per-argument text, so only the tool-level description is populated here.
Then deploy
Point endpoint: in your agent.yaml at wherever you host this server
(e.g. https://my-agent.example.com/invoke), then run gora8 deploy as
usual — no gora8-specific code beyond serve(...) is required.
Metadata
Release files for gora8-adapters 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| gora8_adapters-0.2.0.tar.gz | 12.7 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gora8_adapters-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.2 kB
Release files / gora8_adapters-0.2.0.tar.gz
| Download URL | gora8_adapters-0.2.0.tar.gz |
|---|---|
| Size | 12.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e539dfaee37c0d2097721f7d7765f30a2c633d2ec269dc370ea01e4946cb8dc3
|
|
BLAKE2b-256 checksum How to use checksums |
831bea86abe82c9637ca49f696909bbd9988e4423a126ac2be223e85d131ec6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Aug 23, 2026.
Transparency logRelease files / gora8_adapters-0.2.0-py3-none-any.whl
| Download URL | gora8_adapters-0.2.0-py3-none-any.whl |
|---|---|
| Size | 19.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
571dc08409d2028b578b689facfd2d8facc96ca7bb4906fcdcacb65c08043c10
|
|
BLAKE2b-256 checksum How to use checksums |
cc85612132d08cde5e9c4c08411554517d1aed5366becd008dde45bff34387b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Aug 23, 2026.
Transparency logSecurity for gora8-adapters 0.2.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.
Attestation for gora8_adapters-0.2.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 Aug 23, 2026.
Transparency logA 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.