DeepParallel
A multi-model agentic coding CLI with cross-model Guardian review. Many models check the work; you ship with a second opinion. Served via Crowe Logic.
Install
uv tool install deepparallel # recommended
# or
pipx install deepparallel --python python3.13
Then run deepparallel (or the short alias dp).
Note: on systems with a broken Homebrew Python 3.14, bare pipx install may
fail to find a usable interpreter - use uv tool install or pin --python.
From source
uv venv
uv pip install -p .venv -e .
Configure
Free is bring-your-own-key, and the backend is auto-detected from whatever
credentials the machine already has (a .env file in the working directory is
loaded automatically). Detection order: Azure creds, then an OpenAI key, then
an OpenAI-compatible endpoint, then a local Ollama. With none of these, dp
prints setup guidance instead of starting.
# OpenAI
OPENAI_API_KEY=sk-...
# Local Ollama: install from https://ollama.com and start it - no other
# config needed; the first installed model is used unless
# DEEPPARALLEL_MODEL is set.
# Any OpenAI-compatible endpoint (incl. the Crowe Logic Foundry control plane)
FOUNDRY_BASE_URL=https://<control-plane>
FOUNDRY_API_KEY=<token>
# Azure OpenAI
AZURE_CORE_ENDPOINT=https://<resource>.openai.azure.com
AZURE_CORE_API_KEY=<key>
DEEPPARALLEL_API_VERSION=2024-08-01-preview # optional
Pin a backend explicitly with DEEPPARALLEL_BACKEND=openai|ollama|foundry|azure|crowe
(or [backend] backend = "..." in ~/.config/deepparallel/config.toml).
Use
deepparallel # interactive agent chat
deepparallel run "question" # one-shot, pipe-friendly (answer on stdout)
deepparallel tools # list the agent's tools
deepparallel info # model + backend status
deepparallel doctor # diagnose config + reachability
deepparallel run --no-tools "..." # plain chat, no tools
deepparallel run --yes "..." # auto-approve tool actions
deepparallel review <file|--diff> # cross-model review as a CI gate (Pro)
deepparallel audit <file> # supply-chain gate: catch hallucinated deps (Pro)
deepparallel research conduit # latent-relay research demo (needs [research] extra)
Supply-chain gate
LLMs invent package names that don't exist — and attackers register those names
("slopsquatting"). deepparallel audit <file> extracts the dependencies a file
introduces (imports, requirements.txt, package.json) and checks each against the
real registry (PyPI / npm), flagging any the registry has never seen. Exit 0
clean, 2 if a likely-hallucinated package is found — so it gates a commit or PR.
The Guardian also runs this automatically on every edit: a hallucinated import
forces a confirmation even under --yes.
Fusion (stacking models for stronger output)
deepparallel can stack the answerer with a separate reasoning model. All modes
compose hosted backends (no GPU/weight-merging), so they are API-call stacking.
deepparallel run --fuse reason "hard question" # reasoner thinks, answerer answers
deepparallel run --fuse escalate "question" # answer first; escalate to reasoner only if unsure
deepparallel run --deep "question" # heavy: many models in parallel + a judge (slow)
deepparallel run --dual "A,B" "question" # compare two deployments side by side
deepparallel run --dual "A,B" --synth "question" # ...and synthesize a merged answer
--fuse also works in interactive chat. Set a default with DEEPPARALLEL_FUSION=reason.
Fusion-native UX (what single-model agents cannot do)
- Guardian review - before an edit (
write_file/edit_file/ast_replace_symbol) is applied, a second model reviews the diff and its verdict (safe/risky: .../bug: ...) is shown in the confirm card. Advisory: you still approve. Toggle withDEEPPARALLEL_GUARDIAN; pick the reviewer withDEEPPARALLEL_GUARDIAN_DEPLOYMENT. - Consensus + divergence -
run --deepprints aconsensus:chip from cross-model agreement (agreement, not correctness), and on low agreement lists the dissenting candidates. - Live dial - in interactive chat,
/fast,/fuse,/escalateswitch the fusion mode mid-session (shown in the prompt);/deepruns the next prompt as a multi-model query.
Agent and tools
deepparallel is an agent: it can call tools to inspect and change your project.
- Read-only (run automatically):
read_file,list_dir,glob,grep,ast_symbols,ast_show_symbol,web_fetch,web_search,analyze_image. - Mutating / executing (require confirmation):
write_file,edit_file,ast_replace_symbol,run_shell,run_code,open_path(open a file, folder, or URL in the OS default app - e.g. an HTML report in the browser).
In interactive chat, type /auto to toggle auto-approve (tools run without
asking; edits outside the project and unknown dependencies still confirm), or
start with deepparallel --yes.
web_search needs DEEPPARALLEL_SEARCH_API_KEY; analyze_image works out of the
box on a multimodal deployment (override with DEEPPARALLEL_VISION_DEPLOYMENT).
In interactive chat, mutating actions prompt for y/n. In run (non-interactive)
they are denied unless you pass --yes. ast_* tools are multi-language via
tree-sitter; run_code executes in a Docker sandbox when available, else a
timeboxed local subprocess.
Configuration reference
| Variable | Purpose | Default |
|---|---|---|
DEEPPARALLEL_BACKEND |
azure or foundry |
azure |
AZURE_CORE_ENDPOINT / AZURE_CORE_API_KEY |
Azure transport | (required for azure) |
AZURE_MIKE9320_ENDPOINT / AZURE_MIKE9320_KEY, AZURE_MIKE6250_ENDPOINT / AZURE_MIKE6250_KEY |
the other Azure resources in models.json; a model id resolves to every resource that is keyed |
(optional; unlocks Claude, GPT-5.6, Kimi K3) |
DEEPPARALLEL_API_VERSION |
Azure API version | 2024-08-01-preview |
FOUNDRY_BASE_URL / FOUNDRY_API_KEY |
control-plane transport | (required for foundry) |
DEEPPARALLEL_TEMPERATURE |
default sampling temperature | 0.4 |
DEEPPARALLEL_MAX_TOKENS |
response cap (large enough to write whole files) | 8192 |
DEEPPARALLEL_THINK |
surface reasoning stream | 0 (answer-only) |
DEEPPARALLEL_TOOLS |
enable agent tools | 1 (on) |
DEEPPARALLEL_AUTO_APPROVE |
auto-approve mutating tools | 0 (off) |
DEEPPARALLEL_MAX_STEPS |
max agent tool-call rounds | 12 |
DEEPPARALLEL_SHELL_TIMEOUT |
run_shell timeout (s) | 120 |
DEEPPARALLEL_SANDBOX |
auto / docker / subprocess for run_code |
auto |
DEEPPARALLEL_PLAIN |
force plain (non-rich) output | 0 |
DEEPPARALLEL_FUSION |
default fusion: off / reason / escalate |
off |
DEEPPARALLEL_REASONER_DEPLOYMENT |
reasoner model for fusion | gpt-5.6 |
DEEPPARALLEL_PARALLEL_MODELS |
comma-separated chains for --deep |
gpt-5.6,claude-fable-5-1,DeepSeek-V4-Pro,grok-4.3,Kimi-K3 |
DEEPPARALLEL_JUDGE_DEPLOYMENT |
judge/synthesizer model | gpt-5.6 |
DEEPPARALLEL_SEARCH_API_KEY |
enables web_search (Brave Search API) | (unset) |
DEEPPARALLEL_SEARCH_URL |
search API endpoint | Brave web search |
DEEPPARALLEL_VISION_DEPLOYMENT |
multimodal model for analyze_image | Llama-4-Scout |
DEEPPARALLEL_GUARDIAN |
second-model review of edits before apply | 1 (on) |
DEEPPARALLEL_GUARDIAN_DEPLOYMENT |
the reviewer model | DeepSeek-V4-Flash |
DeepParallel is served via Crowe Logic infrastructure. https://crowelogic.com
Metadata
Release files for deepparallel 0.11.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| deepparallel-0.11.3.tar.gz | 236.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| deepparallel-0.11.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 432.4 kB
Release files / deepparallel-0.11.3.tar.gz
| Download URL | deepparallel-0.11.3.tar.gz |
|---|---|
| Size | 236.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ad1cdfae82c4dca4041ef9bb7ed4838a916ba3af883413410cccb0e91c35f57e
|
|
BLAKE2b-256 checksum How to use checksums |
9bb1002f7f9ee52e6da67d7d428a1b4d2e85ddf9441b9cc10eb670683f6bd6cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / deepparallel-0.11.3-py3-none-any.whl
| Download URL | deepparallel-0.11.3-py3-none-any.whl |
|---|---|
| Size | 196.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d689946bfb9a119b19aa3c53fa6185a2741bf65d447d1b82ebfd95994468a55
|
|
BLAKE2b-256 checksum How to use checksums |
24daf13b580d3a0fdb2a212f25669ee15d8d6442d0e789df46fd34d50cfc572c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|