Observed since 20 Oct, 22:50 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Domain-agnostic multi-agent orchestration core (LangGraph) with pluggable local/cloud LLM providers.
A small, domain-agnostic core for multi-agent LLM workflows on LangGraph:
It runs on local models by default (Ollama), with bring-your-own-key OpenAI and Anthropic support, and gets reliable structured output from small models.
pip install agentpanel # Ollama only
pip install "agentpanel[cloud]" # plus OpenAI and Anthropic
import asyncio
from agentpanel import AgentContext, LLMReviewer, LLMSpecialist, Workflow
from agentpanel.config import LLMSettings
from agentpanel.llm import create_chat_model
model = create_chat_model(LLMSettings()) # qwen3:8b on local Ollama by default
class Join:
async def assemble(self, ctx: AgentContext) -> str:
return ctx.artifacts["writer"].content
workflow = Workflow(
specialists=[
LLMSpecialist(
name="writer",
kind="product description",
model=model,
instructions="You write concise product descriptions.",
render=lambda ctx: f"Describe {ctx.inputs['product']} in two sentences.",
)
],
reviewers=[LLMReviewer("editor", model, "You edit marketing copy for accuracy.")],
coordinator=Join(),
max_revisions=1,
)
result = asyncio.run(workflow.run({"product": "a solar-powered kettle"}))
print(result.result, result.unresolved)
| Module | What it gives you |
|---|---|
agentpanel.graph | Workflow: parallel specialists, cross-review, bounded revision, progress callbacks |
agentpanel.agents | Specialist, Reviewer, Coordinator protocols: bring any implementation |
agentpanel.llm_agents | LLMSpecialist, LLMReviewer: prompt-driven agents with revision handling |
agentpanel.structured | ainvoke_structured: pydantic-validated output with error feedback and domain checks; constrained decoding on Ollama |
agentpanel.llm | create_chat_model, check_provider: provider factory and health checks |
agentpanel.config | LLMSettings: env/.env settings, per-agent model and reasoning overrides |
agentpanel.testing | ScriptedChatModel: a deterministic fake chat model for tests |
LLMSettings reads AGENTPANEL_* environment variables (subclass it to use your own
prefix): PROVIDER (ollama, openai, anthropic), MODEL, BASE_URL, TIMEOUT,
REASONING, CONTEXT_WINDOW, AGENT_MODELS, AGENT_REASONING. Cloud keys use the
standard OPENAI_API_KEY / ANTHROPIC_API_KEY.
Built for and used by API Shakedown, where the source lives. Issues and contributions: see that repository.
MIT
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.2 | 15 Oct 2026 | 8 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 22:50 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:ef3547951338fad6bb40ac77c02bd0ec325a6fa07da32ef4cddfbb9c5453d4bc