Skip to main content

Open-source multi-provider AI deep research CLI (BYOK)

Project description

parallect

PyPI version Python License CI

Multi-provider AI deep research from the command line. Bring your own keys.

parallect fans a research query out to multiple frontier AI providers in parallel — Perplexity, Gemini, OpenAI, Grok, Anthropic, plus local models via Ollama and LM Studio — then synthesizes their outputs into a single report with cross-referenced citations, extracted claims, and consensus/conflict detection. The result is packaged as a portable, signed .prx archive you can read in any text editor, diff against another run, or publish to prxhub.

$ parallect research "What are the leading theories on dark matter?"

  Fanning out to: perplexity, gemini, openai, anthropic
  [████████████████] 4/4 providers  4m 32s  $0.18
  Synthesizing with anthropic ...
  Extracting 47 claims from 4 reports ...

   Saved to research.prx  (127 KB, signed)

  $ parallect research "..."  - dark matter theories
   4 providers  · 47 claims  · 23 sources  · 92% consensus

Why?

  • No single provider knows everything. Different models see different sources, reason differently, and disagree in useful ways. Ask several at once, then see where they agree.
  • Portable, signed output. Every run saves to an open .prx archive — plain text under the hood, verifiable via Ed25519, shareable via prxhub.
  • BYOK. Your API keys, your bill, your data. No intermediate service sees your queries.
  • Local-first option. Run entirely offline against Ollama or LM Studio if you don't want to call frontier APIs.
  • Scriptable. Stable CLI, structured output, clean exit codes. Pipe it, chain it, call it from your editor.

Install

From PyPI:

pip install parallect-cli

Or with uv:

uv tool install parallect-cli

Requires Python 3.10+.

Rename note (0.3.0): the canonical PyPI distribution is now parallect-cli. The legacy parallect name still works as a compatibility shim (pip install parallect transparently installs parallect-cli and emits a DeprecationWarning on import). The Python import name (import parallect), the CLI command (parallect …), and the config directory (~/.config/parallect/) are unchanged. See parallect/prx-ecosystem#3 for context.

Quick start

# One-time setup — interactive TUI configures providers, keys, and defaults
parallect config

# Run research
parallect research "What are the leading theories on dark matter?"

# Pick specific providers
parallect research "quantum computing progress 2025" -p perplexity,openai,anthropic

# Deep research mode — premium models, higher cost, deeper reasoning
parallect research "CRISPR gene therapy developments" --deep

# Offline — Ollama or LM Studio only
parallect research "explain transformers" --local

# Follow-on research rooted in a prior bundle
parallect continue output.prx "What about practical applications?"

Commands

Command Purpose
parallect config Interactive TUI for providers, API keys, backends, plugins
parallect research <query> Run a new research query
parallect continue <bundle> <query> Follow-on research rooted in an existing bundle
parallect enhance <bundle> Send a bundle to the hosted Parallect API for claim extraction + evidence graph
parallect jobs <subcommand> Manage async SaaS-mode jobs (status, download)
parallect plugins <subcommand> Manage data-source and pipeline plugins (list, status, index, config)

Run parallect <command> --help for full flags.

Providers

Provider Default model Deep model Env var
Perplexity sonar-deep-research PARALLECT_PERPLEXITY_API_KEY
OpenAI gpt-4o-mini o3-deep-research PARALLECT_OPENAI_API_KEY
Gemini gemini-2.5-flash gemini-2.5-pro PARALLECT_GOOGLE_API_KEY
Anthropic claude-sonnet-4 claude-opus-4 PARALLECT_ANTHROPIC_API_KEY
Grok grok-3 grok-4 PARALLECT_XAI_API_KEY
Ollama llama3.2 (local, no key)
LM Studio default (local, no key)
LDR llama3.2 (local; pip install "parallect-cli[ldr]")

Install optional provider SDKs with the all extra:

pip install "parallect-cli[all]"

Configuration

parallect config writes to ~/.config/parallect/config.toml (or the platform equivalent). Precedence, highest to lowest:

  1. Explicit CLI flags
  2. Environment variables (PARALLECT_* prefix)
  3. Project-local parallect.toml
  4. User config
  5. Defaults

Data source plugins

Plugins let parallect search and cite your local content alongside web sources. Built-in plugins:

Plugin Purpose
filesystem Index a directory of markdown / text / PDF
obsidian Index an Obsidian vault, respecting links and graph ranking
prior_research Reuse prior .prx bundles as a knowledge base
prxhub Pull from a prxhub collection

Add one via parallect config → "Data source plugins" → "Add", or edit config.toml directly.

Pipeline plugins

External Python packages can hook into the research pipeline at four points:

class ResearchPlugin:
    async def pre_research(self, query: str, providers: list[str]) -> str: ...
    async def post_provider(self, provider: str, result: Any) -> Any: ...
    async def post_synthesis(self, synthesis: Any) -> Any: ...
    async def post_bundle(self, bundle: Any) -> Any: ...

Register via the parallect.plugins entry point. See docs/PLUGINS.md for the full protocol.

Output format

Every run saves to a .prx bundle — a gzipped tar archive:

research.prx
├── manifest.json          JSON-LD envelope: providers, cost, provenance
├── manifest.jws           Ed25519 signature of manifest hash
├── public-key.jwk         Public key for standalone verification
├── query.md               The research question
├── providers/
│   ├── perplexity/report.md + meta.json
│   ├── gemini/report.md + meta.json
│   └── ...
├── synthesis/
│   ├── report.md          Unified cross-provider synthesis
│   └── claims.json        Extracted atomic claims with provider attribution
├── sources/registry.json  Deduplicated, quality-scored sources
├── evidence/graph.json    Claim-to-source graph
└── provenance/graph.jsonld  W3C PROV-O provenance

Every file is human-readable text or JSON — tar -xzf research.prx and read in any editor.

Use the prx CLI to read, validate, diff, merge, sign, and publish bundles.

Documentation

Development

git clone https://github.com/parallect/parallect.git
cd parallect
uv sync --group dev
uv run pytest tests/
uv run ruff check src/ tests/

Contributing

Contributions welcome — see CONTRIBUTING.md. For security reports, email security@parallect.ai.

License

MIT — see LICENSE.


Built by SecureCoders. A hosted managed version is available at parallect.ai — same multi-provider pipeline, with billing, team workspaces, and a web dashboard.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

parallect_cli-0.3.0.tar.gz (605.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

parallect_cli-0.3.0-py3-none-any.whl (116.1 kB view details)

Uploaded Python 3

File details

Details for the file parallect_cli-0.3.0.tar.gz.

File metadata

  • Download URL: parallect_cli-0.3.0.tar.gz
  • Upload date:
  • Size: 605.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for parallect_cli-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d6cfd87e38b5507a8e9d8fa1ec8bd00e3567dd6b0f7c93be17c9b33ee9ec65f1
MD5 569b12643e4439a854ed23bd6085ce15
BLAKE2b-256 42ba4e5919bd7c291e1267a9e25100246acff57ae687ca0bc4bdda94d4e935ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for parallect_cli-0.3.0.tar.gz:

Publisher: release.yml on parallect/parallect

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file parallect_cli-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: parallect_cli-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 116.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for parallect_cli-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1e1f4d7d22fde2c1320710c68fa0b67f375a0325d31923e31350172266d65e41
MD5 c10304b6fee2819601d82021971ca534
BLAKE2b-256 87212571f7e3bbc78f582e48077ed3cfe930b2976bdd0dfb26b9e12a87f50362

See more details on using hashes here.

Provenance

The following attestation bundles were made for parallect_cli-0.3.0-py3-none-any.whl:

Publisher: release.yml on parallect/parallect

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page