Install
One binary. Every runtime.
CLI, TUI, HTTP server, web dashboard and MCP endpoint ship in a single binary. Install with one command, build from source with Cargo, or run it in Docker — pick your path.
One-line installer. Builds the release binary, installs it to /usr/local/bin (or $PREFIX/bin), creates the default config directory — and optionally installs the systemd service unit with INSTALL_SYSTEMD=1.
curl -sSf https://parallel.research/install.sh | sh
# also install + enable the systemd unit
curl -sSf https://parallel.research/install.sh | INSTALL_SYSTEMD=1 shBuild from source with the Rust toolchain. Release builds are compiled with LTO and stripped — a slim, self-contained binary.
cargo install --path .
# or build directly
cargo build --release
./target/release/parallel-research --helpMulti-stage image: rust:1.82-bookworm builder → debian:bookworm-slim runtime. Runs as a non-root user; output and databases live in /data.
docker build -t parallel-research .
docker run -it --rm \
-e PARALLEL_LLM_API_KEY="sk-..." \
-v research-data:/data \
parallel-research run "your query" --output /data/results/Publishes port 8080 with restart policy and named volumes: research-data for output, contacts and memory databases, research-config for config.toml.
docker compose up -d
# volumes:
# research-data → /data (results, contacts.db, memory.db, jobs)
# research-config → config.toml (LLM key, agent settings)Linux service
Run it under systemd
The unit starts parallel-research serve on port 8080 with Restart=on-failure and a hardening sandbox: NoNewPrivileges, PrivateTmp, ProtectSystem=full, ProtectHome=read-only — writes are restricted to /var/lib/parallel-research.
sudo cp parallel-research.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now parallel-research
# status and live logs
systemctl status parallel-research
journalctl -u parallel-research -fOptional dependencies
Nothing required, everything upgradeable
The binary works standalone. These tools unlock extra capabilities — each one is detected automatically at runtime, and every absence has a graceful fallback.
| Tool | What it enables |
|---|---|
| pandoc | PDF and DOCX report export (HTML / JSON export always works) |
| ripgrep | speeds up the grep tool; built-in fallback when absent |
| python3 / node | REPL and code-execution tools |
| Chrome + CDP | 5 browser tools; auto-detected via PARALLEL_CDP_ENDPOINT |
# macOS
brew install pandoc ripgrep
# Debian / Ubuntu
sudo apt install pandoc ripgrep
# Chrome with a CDP endpoint for the browser tools
google-chrome --remote-debugging-port=9222 --headlessRequirements
Small footprint, no surprises
Environment
Env vars reference
Environment variables override config-file values. API keys for external services are only ever read from the environment or your local config.
| Variable | Purpose |
|---|---|
| PARALLEL_RESEARCH_API_KEYS | Comma-separated keys protecting /api/v1/*. Required when serve binds to a non-loopback address. |
| PARALLEL_RESEARCH_RATE_LIMIT | Per-client HTTP API requests per minute (default: 120). |
| PARALLEL_CDP_ENDPOINT | Chrome DevTools Protocol endpoint for the browser tools (default: localhost:9222). |
| PARALLEL_VISION_API_KEY | API key for the vision model used on screenshots and images. |
| PARALLEL_VISION_MODEL | Vision model identifier. |
| PARALLEL_2GIS_API_KEY | 2GIS Catalog API key for business-directory search. |
| PARALLEL_GOOGLE_PLACES_API_KEY | Google Places API key for business-directory search. |
| PARALLEL_YANDEX_MAPS_API_KEY | Yandex Maps API key for business-directory search. |
| PARALLEL_TWITTER_BEARER_TOKEN | X (Twitter) bearer token for the social-search tool. |
| PR_CONFIG | Config file path override (default: ~/.parallel-research/config.toml). |
| PR_MEMORY_DB | Semantic memory SQLite database path override. |
| PR_JOBS_DB | Durable jobs SQLite database path override. |
| RUST_LOG | Log level filter (default: info). |
Verify
Check the installation
bench exercises the tool-execution layer with zero network and zero LLM calls — a safe smoke test on any machine. Then start the server or the TUI.
parallel-research bench # tool layer — no network, no LLM
parallel-research serve # HTTP API + dashboard on :8080
parallel-research tui # interactive terminal UI
curl http://localhost:8080/healthInstalled? Run your first research.
Configure the LLM key, pick a search backend and launch a session in under five minutes.