Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

OmniScientist V2 CLI (omni)

A local-first, CLI-first personal research agent. omni plans work, calls skills (Claude Code / Codex / OpenClaw SKILL.md compatible), runs a bounded ReAct loop, remembers across sessions (SQLite + filesystem only), and ships with WeChat / Feishu / DingTalk channels.

This CLI is the official next-generation implementation of the OmniScientist framework described in Shao et al., OmniScientist: Toward a Co-evolving Ecosystem of Human and AI Scientists. The current checkout reports package version 2.0.0rc2 (planned Git tag v2.0.0rc2).

This folder (cli/) is the Python application. The research skills are a separate, independent top-level collection in the repository's skills/ directory. The CLI runs skills; the skill packages do not depend on CLI internals.

New users should start with the repository-level installation and initialization guide. This file is the package/developer quick reference.

Install

omni runs on macOS, Linux, and Windows. It requires Python ≥ 3.11 and Node.js ≥ 20.9 with npm for the bundled research-pptx renderer. PyPI is the stable package authority; install into one isolated tool environment:

uv tool install OmniScientist-V2
# or
pip install OmniScientist-V2
# or
pipx install OmniScientist-V2

omni

The first bare omni opens setup, prepares the lockfile-pinned Node runtime, and starts or repairs the single Home Service. Normal updates use one product command:

omni update

omni update delegates package replacement to the manager that owns the running CLI (uv tool, pipx, or an explicit dedicated Python environment), then performs runtime preparation, legacy daemon cleanup, Home Service launcher refresh/restoration, and readiness verification as one serialized lifecycle transaction. The public command is intentionally parameterless; omni update status is read-only diagnostics.

Direct manager updates are supported too:

uv tool upgrade OmniScientist-V2
pipx upgrade OmniScientist-V2

Those commands replace Python packages only. The next bare omni detects the changed package fingerprint and automatically completes the missing local runtime/service convergence before entering the REPL; there is no second update command to remember.

From a downloaded source checkout, use the repository installer. It defaults to an isolated uv tool and deploys the current local snapshot; it never silently selects an active Conda/venv:

./cli/scripts/install.sh
./cli/scripts/install.sh --editable --local  # contributor install
powershell -ExecutionPolicy Bypass -File cli\scripts\install.ps1

Rerun the repository installer to redeploy the current tree. omni update on a linked clean checkout safely fast-forwards its configured upstream and reinstalls. A standalone copy of the installer uses PyPI; the moving master channel is available only as an explicit development choice. Installing into an active environment requires the explicit advanced --method env (-Method env) option.

Then, identically on every OS:

omni --version
omni init                           # model, retrieval mode, workspace, optional exports/MCP
omni doctor                         # environment and configuration checks
omni                                # interactive REPL
omni "Explain diffusion models in one sentence"  # one-shot
omni update                         # owner-aware package + lifecycle update

Like Codex, interactive startup reads a local update cache and offers a one-key update when a newer PyPI release is known. Network refresh happens in the background (TTL 24h), stays silent offline, and can be disabled with omni config set update.check false or OMNI_UPDATE_CHECK=0.

Full per-OS install/update/serve walkthrough: getting-started.md; platform table: commands.md.

First-run model setup

omni init walks you through it (provider menu, default openai). omni otherwise defaults to an offline mock model so it runs with zero config. Point it at a real provider in one line (works on the shell and inside the REPL, where model changes take effect immediately):

omni config model -p deepseek -u https://api.deepseek.com/v1 \
  -m deepseek-chat -k "$DEEPSEEK_API_KEY" --test
omni config list                              # provider / model / endpoint / key status

-p accepts openai / deepseek / ollama (all OpenAI-compatible; base_url picks the real service) or mock. Prefer files? Edit ~/.omni/config.toml ([model]) and ~/.omni/secrets.toml ([model] api_key). The key is stored in secrets.toml and masked everywhere.

Shell and REPL commands

Use omni <command> ... in a terminal or start omni and use /<command> ... in the REPL. Both forms dispatch to the same command implementation and configuration:

Shell                         REPL
omni config list              /config list
omni task list               /task list
omni channel list             /channel list
omni serve status             /serve status
omni autosota status          /autosota status

In a capable TTY the REPL commits its transcript to the terminal's native scrollback above a bottom dock containing the composer and permanent status line. It stays in the normal buffer with no mouse capture, so use the terminal's own selection (click-drag, or Shift-drag/copy-mode in a multiplexer) to copy history and its usual wheel/keys to scroll. Blank Enter is ignored. auto falls back to the classic prompt for pipes, redirection, CI, TERM=dumb, and unsupported terminals. Enter sends; Ctrl+O and Alt/Option+Enter insert a newline, as does Shift+Enter when the terminal reports the modifier. Use trailing \ + Enter as a portable continuation, or Ctrl+X Ctrl+E to edit the draft with $VISUAL/$EDITOR. Multiline paste remains one request. Override the UI mode with omni --ui tui|classic, OMNI_UI=tui|classic, or omni config set display.ui_mode auto|tui|classic (tui selects the inline dock). Committed transcript text stays in shell scrollback after exit, and Omni's conversations and tasks remain persisted.

Natural language has no slash inside the REPL. Channel messages are processed by the persistent omni serve owner, not by an open REPL window. See the complete channel lifecycle and login guide. Slash commands do not invoke a shell, so $ENV, pipes, and redirections are not expanded; omit secret options to use a hidden prompt.

Skills

Every skills operation has both a terminal form and a slash form after starting omni:

Action Shell Inside omni
List managed skills omni skills list /skills list
Include external libraries omni skills list --all /skills list --all
Inspect one skill omni skills info <name> /skills info <name>
Import into quarantine omni skills add <local-path|tool:name|git-url> /skills add <local-path|tool:name|git-url>
Trust after review omni skills trust <name> --yes /skills trust <name> --yes
Show disabled skills omni skills list --disabled /skills list --disabled
Restore a disabled skill omni skills restore <name> /skills restore <name>
Export all built-ins omni skills export /skills export
Export only to Codex omni skills export codex /skills export codex

Local paths may be a skill directory, SKILL.md, or another .md file; tool:name supports claude:, codex:, agents:, and openclaw:. Direct Git imports use the default branch. See skills.md for the complete source matrix and limits, installation, trust, natural-language and explicit invocation, loading, and cross-agent comparison. See skills/README.md for the built-in catalogue and skills/docs/authoring.md for authoring.

Research commands

omni is a research agent, not a coding one: it grounds answers in a local literature corpus (omni lit, cited [S#]), records an auditable hypothesis→claim→evidence trail (omni hypo/claim/evidence), keeps a reproducible run ledger (omni run), and audits its own claims (omni verify) / retrieval (omni bench). All are also REPL slash commands. See commands.md and research-agent-design.md.

Docs

Develop

cd cli
uv run --extra dev --extra mcp --extra vec --extra channels pytest -q
uv run --extra dev ruff check src
uv run --extra dev omni eval --coverage
uv run --extra dev omni eval --research-quality

Apache-2.0. See LICENSE, SECURITY.md, and PRIVACY.md.

Download files

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

Source Distribution

omniscientist_v2-2.0.0rc2.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

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

omniscientist_v2-2.0.0rc2-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file omniscientist_v2-2.0.0rc2.tar.gz.

File metadata

  • Download URL: omniscientist_v2-2.0.0rc2.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for omniscientist_v2-2.0.0rc2.tar.gz
Algorithm Hash digest
SHA256 686d0a61c2f8dc85521fa1739149c0780feba1acb3e398007e378bcb2d478974
MD5 f00eb342c18abc224f16e0cf643ea930
BLAKE2b-256 e31b8261c17177610113fa41aaec64043f752b32793b7e1257f17d5840f65a98

See more details on using hashes here.

Provenance

The following attestation bundles were made for omniscientist_v2-2.0.0rc2.tar.gz:

Publisher: release.yml on tsinghua-fib-lab/OmniScientist-V2

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

File details

Details for the file omniscientist_v2-2.0.0rc2-py3-none-any.whl.

File metadata

File hashes

Hashes for omniscientist_v2-2.0.0rc2-py3-none-any.whl
Algorithm Hash digest
SHA256 bc4b5ef2f06a516f3b8efec593d57ec5665814426477f3f816bf2be61074f066
MD5 638f154747217574c165a34e6574ecc9
BLAKE2b-256 70377f119440aa40552163a2c3f461700b87ace713d5a2d32bd0fce20be87f24

See more details on using hashes here.

Provenance

The following attestation bundles were made for omniscientist_v2-2.0.0rc2-py3-none-any.whl:

Publisher: release.yml on tsinghua-fib-lab/OmniScientist-V2

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