The one-stop AI research workspace, built for scientists.
Literature review, hypothesis, code, experiments and tuning — in one environment, with every step on the record.
Download · Quick start · Documentation · Contributing · 中文
ScienceDiscovery is a locally run research workspace, built on JiuwenSwarm: an agent reads the literature, writes and runs code inside a sandbox, and records the origin of every result. Everything executes on your own machine, against your own files, with your own model keys.
The prepackaged binary is the shortest path to a first run. On the
Releases page, download
the ScienceDiscovery-<version>-linux-x86_64 asset for x86_64 or the
ScienceDiscovery-<version>-linux-aarch64 asset for arm64. Rename the downloaded
file to ScienceDiscovery, then run:
chmod +x ./ScienceDiscovery
./ScienceDiscovery serveOpen http://127.0.0.1:4310. When the browser has not connected yet, use the Connection page to paste the local service access token from .sciencediscovery-data/secrets/auth-token; this works even when the service runs in the background and its startup output is unavailable. The printed Open to sign in URL remains a convenient automatic sign-in shortcut. That token is distinct from a model API key and grants access to this machine's workspace — keep it private.
For the prepackaged binary, Bubblewrap is the only system dependency. The deployment guide covers building a portable binary from source, local source mode for development, and Docker for advanced container operations. It also has first-run help for the binary and local modes. Every deployment path uses JiuwenSwarm by default; the deployment guide covers the deployment-specific operations.
ScienceDiscovery does not bundle a model; you connect your own API. Open System configuration at the bottom of the left sidebar, then open Model registry. Select a preset provider or add one manually, enter its details and API key, then select Save & connect. This registers the provider's models and tests the first one. When it is the first model in the system, it also becomes the default task model. If you already have models, select one from Global default task model at the top of Model registry.
Field definitions, and which of them an environment variable can set instead, are in the configuration reference.
Create a Project and a Session, drop a CSV or a PDF into the workspace, and describe the analysis you want. A permission card appears before the first code execution; once approved, inspect tool calls and their results in the timeline. Generated files that the task declares as Artifacts appear in the workspace. For a step-by-step walkthrough, see the Quick Start.
| Capability | Description | Reference |
|---|---|---|
| Literature and data access | Built-in connectors reach paper and data repositories; PDFs are parsed into citable evidence | Literature research · Custom MCP servers |
| Sandboxed code execution | The agent writes, debugs and runs Python, R and shell inside a fail-closed sandbox | Sandbox execution |
| Task decomposition | Planning and multi-agent orchestration distribute a task across sub-agents and a cross-domain skill library | Subagent orchestration · Skills |
| End-to-end provenance | Code, environment, logs and cited evidence are recorded per deliverable; the optional memory graph makes the chain navigable | Review and provenance · ScienceMemory |
| Scripted and batch runs | ScienceDiscovery run sends a task to a running serve from a terminal or a job script and streams the result as text or JSONL |
Command line · CLI reference |
Besides the browser, a running serve accepts tasks from the terminal. Run run from the directory where serve runs, so it reads the same data directory and access token; if serve uses --data-dir or --port, pass the same options to run.
# In a terminal: the answer streams to stdout, and permission requests are asked here
./ScienceDiscovery run "Explain the difference between a paired and an unpaired t-test in three sentences"
# In a pipe: one JSON event per line; keep only the final answer
./ScienceDiscovery run --auto-approve "Name three common normalization methods for RNA-seq read counts, one line each" \
| jq -r 'select(.type == "result") | .content'
# Only the answer, written to a file
./ScienceDiscovery run --auto-approve --output text "Explain what a p-value does and does not tell you, in one paragraph" > answer.mdOn a terminal, run writes the answer to stdout, progress to stderr, and asks you to approve each permission request. When stdout is piped or redirected, it defaults to JSONL, errors included, and it cannot ask for approval, so it refuses to start unless you pass --auto-approve. That option approves the session's tool actions without asking, except direct host execution after a sandbox failure, which always needs explicit consent; use it only for tasks and data you would approve anyway. The CLI reference describes every command, and ./ScienceDiscovery help prints every option.
| Path | System requirements |
|---|---|
| Prepackaged binary | Linux x86_64/aarch64 (Windows x64 via WSL 2), Bubblewrap |
| Local source mode | Linux (including WSL 2) or macOS; Node.js 22.19+, pnpm 11.1.2, Python 3, uv 0.9+, Git, curl; Bubblewrap on Linux |
| Docker | Linux containers on Linux, macOS, or Windows; Bubblewrap and unprivileged user namespaces |
Managed scientific environments run on a pinned micromamba, so no system Python, R or conda is required.
Warning
ScienceDiscovery is not a multi-user production service. The adapter and the API listen on loopback by default; access uses one bearer token and there is no TLS termination. Exposing either interface elsewhere must be an explicit deployment choice on a trusted, secured network. Python, R, and shell commands run in a fail-closed platform sandbox (Bubblewrap on Linux and Seatbelt in macOS source mode); the control API, the adapter, JiuwenSwarm, the PDF worker, STDIO MCP servers you configure, and outbound model/provider calls run outside that sandbox as trusted control-plane operations. When the sandbox is unavailable, running a command directly on the host is a recovery step that needs its own explicit approval and has none of the sandbox's isolation. See Sandbox execution for the boundary.
| Section | Guides |
|---|---|
| Getting started | Quick start · Deployment |
| Advanced setup | Custom MCP · Network proxy · ScienceMemory |
| Reference | CLI · Configuration · REST API · Built-in tools · Runtime behavior |
| Developer documentation | Architecture and the developer index |
The complete English and Chinese indexes are in the documentation site; development setup and test commands are in CONTRIBUTING.md.
Join the ScienceDiscovery community on Slack or Feishu to discuss your work and share feedback.
| Slack | Feishu |
|---|---|
![]() |
![]() |
This product serves solely as a workflow orchestration tool and does not embed any AI model capabilities. When users integrate AI models for specific business scenarios, they shall bear full responsibility for compliance obligations under the EU AI Act and other relevant regulatory frameworks.

