DeterminAgent
CLI-First Deterministic Multi-Agent Orchestration Library
Orchestrate powerful AI workflows at zero extra cost. DeterminAgent controls multiple AI CLI tools (Claude Code, Copilot CLI, Gemini CLI, OpenAI Codex) using LangGraph to create deterministic pipelines powered by your existing flat-rate subscriptions.
🚀 First Contact
DeterminAgent is a Python library for developers who want to build complex, multi-agent systems without paying for expensive per-token API calls. By wrapping the CLI tools you already pay for, DeterminAgent allows you to build production-grade workflows for $0 in variable costs.
Key Features
- Library-Only: Full control in pure Python. No proprietary YAML DSL.
- Subscription Arbitrage: Uses your flat-rate CLI subscriptions.
- Deterministic: Powered by LangGraph state machines.
- Zero-Latency: Controls local tools via subprocess.
📦 Installation
From PyPI (Recommended)
pip install determinagent
From Source
For the latest development version or to contribute:
# Clone the repository
git clone https://github.com/Experto-AI/determinagent.git
cd determinagent
# Install dependencies and set up environment
poetry install
# Verify installation
poetry run python -c "import determinagent; print(determinagent.__version__)"
Prerequisites
- Python 3.10+
- At least one supported AI CLI tool installed and authenticated:
- Claude Code (
claude) - Copilot CLI (
copilot) - Gemini CLI (
gemini) - OpenAI Codex (
codex)
- Claude Code (
⚡ Quick Start
Library Usage
from determinagent import UnifiedAgent, SessionManager
# Create a deterministic agent
writer = UnifiedAgent(
provider="claude",
model="balanced",
role="Technical Blogger",
instructions="Write concise, technically accurate content.",
session=SessionManager("claude")
)
# Send a prompt - zero per-token cost!
response = writer.send("Explain LangGraph in 3 sentences.")
print(response)
Template Flows
Don't start from scratch. Use our pre-built Python templates in the flows/ directory:
flows/blog/: Complete Writer → Editor → Reviewer workflow with human review.
To run the blog flow:
python flows/blog/main.py "My Blog Topic" --writer claude --editor copilot
🧩 Compatibility Matrix
| Provider | Adapter Status | DeterminAgent Session Mode | Upstream CLI Resume | Search / Web in Upstream CLI | Current Library Surface |
|---|---|---|---|---|---|
| Claude Code | ✅ Alpha | ✅ Deterministic --session-id + --resume |
✅ Yes | ✅ Yes | Models, deterministic sessions, web tools, custom allowed tools |
| Copilot CLI | ✅ Alpha | ⚠️ Fresh session by default | ✅ Yes (provider-managed) | ✅ Yes | Models, non-interactive prompts, tool/url permission flags |
| Gemini CLI | ✅ Alpha | ⚠️ Fresh session by default | ✅ Yes (provider-managed) | ✅ Yes | Models, headless --prompt, JSON output, sandbox/tool passthrough |
| OpenAI Codex | ✅ Alpha | ⚠️ Fresh session by default | ✅ Yes (provider-managed) | ✅ Yes | Models, JSON exec mode, sandbox, structured event parsing |
Audit Snapshot — March 2026
Claude Coderemains the only provider where DeterminAgent can create a deterministic first-call session ID itself.Copilot CLI,Gemini CLI, andCodex CLInow document resume flows upstream, but those session IDs are provider-owned. DeterminAgent still defaults to fresh sessions there to keep multi-agent orchestration deterministic.- The library now aligns better with current CLIs by:
- using Gemini headless mode via
--prompt - emitting Codex
exec --jsonwith--model - forwarding configured
sandboxandtoolsfromUnifiedAgentinto adapters - using current Claude
--allowed-tools/--resumeforms
- using Gemini headless mode via
If you need a provider capability that exists upstream but is not yet abstracted cleanly here, pass an exact model string or extend the adapter directly.
🎯 Model Alias Map
DeterminAgent resolves model aliases per provider so you can keep flows consistent.
| Alias | Claude Code | Gemini CLI | Copilot CLI | OpenAI Codex |
|---|---|---|---|---|
| fast | haiku | gemini-3-flash-preview | claude-haiku-4.5 | gpt-5.1-codex-mini |
| balanced | sonnet | gemini-3-flash-preview | gpt-5-mini | gpt-5.4 |
| powerful | opus | gemini-3.1-pro-preview | claude-opus-4.6 | gpt-5.3-codex |
| reasoning | opus | gemini-3.1-pro-preview | gpt-5.4 | gpt-5.4 |
| free | haiku | gemini-3-flash-preview | gpt-5-mini | gpt-5.1-codex-mini |
Notes:
- You can always pass an exact model string to override the alias.
- Availability depends on your provider plan and CLI version.
- Gemini aliases now target current Gemini 3.x CLI-safe models:
gemini-3-flash-previewfor fast/default work andgemini-3.1-pro-previewfor top-end reasoning. gemini-3.1-flash-lite-previewexists in the Gemini API, but current Gemini CLI validation does not reliably expose it yet.- Copilot
powerfulandreasoninguse newer premium models and may require broader plan access thangpt-5-mini. - Codex and Copilot model inventories change frequently; aliases are conservative defaults, not an exhaustive upstream model list.
🛠️ Troubleshooting
Common Issues
-
ProviderNotAvailable: CLI command 'claude' not found- Ensure the tool is installed and available in your
$PATH. - Run
claude --versionmanually to verify.
- Ensure the tool is installed and available in your
-
Authentication Errors
- DeterminAgent uses your local sessions. Ensure you are logged in to the CLI tool (e.g.,
copilot auth statusorclaude login).
- DeterminAgent uses your local sessions. Ensure you are logged in to the CLI tool (e.g.,
-
Subprocess Timeouts
- Some agents (like Writer) can take a few minutes for long content. Ensure your environment doesn't kill long-running processes.
Debug Mode
Set LOG_LEVEL=DEBUG to see the full subprocess commands and raw output.
📖 Documentation
Core Documentation
- Technical Architecture: Design principles and system internals.
- CLI Reference: Low-level flag mappings for each provider.
- Actionable Plan & Roadmap: Current status and next steps.
API Reference
- UnifiedAgent: Core orchestration class.
- Provider Adapters: Claude, Copilot, Gemini, Codex wrappers.
- SessionManager: Conversation history management.
- Exceptions: Error handling hierarchy.
Tutorials
- Your First Flow: Step-by-step guide to building a workflow.
Community
- Contributing: How to help improve the project.
- Code of Conduct: Community guidelines.
- Security Policy: Reporting vulnerabilities.
📜 License
Apache License 2.0 - see LICENSE for details.
Metadata
Release files for determinagent 0.15.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 | |
|---|---|---|---|---|
| determinagent-0.15.0.tar.gz | 31.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| determinagent-0.15.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 69.6 kB
Release files / determinagent-0.15.0.tar.gz
| Download URL | determinagent-0.15.0.tar.gz |
|---|---|
| Size | 31.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b9a9714d632e0d43775f802c036921f6a95484d4d2e2ce91e1e6928a2962c5e0
|
|
BLAKE2b-256 checksum How to use checksums |
fbefce354b398076b2c75cf01519bc9be81833d209b1378ec77db126886b480d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Mar 14, 2026.
Transparency logRelease files / determinagent-0.15.0-py3-none-any.whl
| Download URL | determinagent-0.15.0-py3-none-any.whl |
|---|---|
| Size | 37.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
789164ad48153cf3b4a10c1ff747132d7bb28177839f01192b994307ed2c9708
|
|
BLAKE2b-256 checksum How to use checksums |
8eabe8c240ad9e8caf8b2caa74919c9864f29b08657b5f45ffe4cbbb8d562564
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Mar 14, 2026.
Transparency logSecurity for determinagent 0.15.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 determinagent-0.15.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 Mar 14, 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.