Skip to main content

Onyx CLI

Release CLI PyPI

A CLI for querying enterprise knowledge from Onyx. Includes an interactive chat TUI for humans and non-interactive commands for AI agents and scripts.

Installation

pip install onyx-cli

Or with uv:

uv pip install onyx-cli

Setup

Run the interactive chat TUI — on first launch it will guide you through setup:

onyx-cli chat

This prompts for your Onyx server URL and personal access token (PAT), tests the connection, and saves config to ~/.config/onyx-cli/config.json (or $XDG_CONFIG_HOME/onyx-cli/config.json if set). To reconfigure later, use the /configure command inside the TUI.

Environment variables override config file values:

Variable Required Description
ONYX_SERVER_URL No Server URL (default: https://cloud.onyx.app)
ONYX_PAT No Personal access token for authentication (required if no config file)
ONYX_PERSONA_ID No Default agent/persona ID
ONYX_STREAM_MARKDOWN No Enable/disable progressive markdown rendering (true/false)
ONYX_SSH_HOST_KEY No Path to SSH host key for serve command

Usage

Interactive chat

onyx-cli chat
onyx-cli chat --no-stream-markdown
Flag Description
--no-stream-markdown Disable progressive markdown rendering during streaming

One-shot question

onyx-cli ask "What is our company's PTO policy?"
onyx-cli ask --agent-id 5 "Summarize this topic"
onyx-cli ask --json "Hello"
Flag Description
--agent-id <int> Agent ID to use (overrides default)
--json Output NDJSON stream events instead of plain text
--prompt <string> Question text (use with piped stdin context)
--quiet Buffer output and print once at end
--max-output <int> Max bytes before truncating (0 to disable)

List agents

onyx-cli agents
onyx-cli agents --json

Serve over SSH

# Start a public SSH endpoint for the CLI TUI
onyx-cli serve --host 0.0.0.0 --port 2222

# Connect as a client
ssh your-host -p 2222

Clients can either:

  • paste a personal access token (PAT) at the login prompt, or
  • skip the prompt by sending ONYX_PAT over SSH:
export ONYX_PAT=your-pat
ssh -o SendEnv=ONYX_PAT your-host -p 2222

Useful hardening flags:

  • --host-key (default ~/.config/onyx-cli/host_ed25519)
  • --idle-timeout (default 15m)
  • --max-session-timeout (default 8h)
  • --rate-limit-per-minute (default 20)
  • --rate-limit-burst (default 40)
  • --rate-limit-cache (default 4096)

Commands

Command Mode Description
chat Interactive Launch the interactive chat TUI (requires terminal)
ask Agent / Script Ask a question and print the answer to stdout
agents Agent / Script List available agents (ID, name, description)
validate-config Agent / Script Check CLI configuration and server connectivity
install-skill Agent / Script Install the Onyx CLI agent skill file
experiments Agent / Script List experimental features and their status
serve Interactive Serve the Onyx TUI over SSH

Global Flags

Flag Description
--version, -v Print client and server version information
--debug Run in debug mode (verbose logging)

Agent / Non-Interactive Use

When called without a TTY (e.g., by an AI agent or piped into another command), onyx-cli adjusts its behavior:

  • No subcommand: prints help and exits 0 (instead of launching the TUI)
  • Results to stdout, progress/errors to stderr
  • No ANSI codes or interactive prompts
  • ask output truncated to 50000 bytes by default; full response saved to a temp file. Use --max-output 0 to disable.

Configuration

If a human has already run onyx-cli chat (which includes first-time setup), the CLI works out of the box — no additional setup needed. Environment variables can override the config file or serve as an alternative when no config file exists:

export ONYX_SERVER_URL="https://your-onyx-server.com"
export ONYX_PAT="your-pat"

Exit Codes

Code Name When
0 Success Command completed
1 General Unknown error
2 BadRequest Invalid arguments
3 NotConfigured Missing config/PAT
4 AuthFailure Invalid PAT (401/403)
5 Unreachable Server unreachable
6 RateLimited Server returned 429
7 Timeout Request timed out
8 ServerError Server returned 5xx
9 NotAvailable Feature/endpoint doesn't exist

Skill File

Install the bundled SKILL.md so AI coding agents can discover the CLI:

onyx-cli install-skill
onyx-cli install-skill --global
onyx-cli install-skill --copy
onyx-cli install-skill --agent claude-code
Flag Description
--global, -g Install to home directory instead of project
--copy Copy files instead of symlinking
--agent, -a Target specific agents (e.g. claude-code; can be repeated)

Slash Commands (in TUI)

Command Description
/help Show help message
/clear Clear chat and start a new session
/agent List and switch agents
/attach <path> Attach a file to next message
/sessions List recent chat sessions
/configure Re-run connection setup
/connectors Open connectors in browser
/settings Open settings in browser
/quit Exit Onyx CLI

Keyboard Shortcuts

Key Action
Enter Send message
Escape Cancel current generation
Ctrl+O Toggle source citations
Ctrl+D Quit (press twice)
Scroll / Shift+Up/Down Scroll chat history
Page Up / Page Down Scroll half page

Building from Source

Requires Go 1.24+.

cd cli
go build -o onyx-cli .

Development

# Run tests
go test ./...

# Build
go build -o onyx-cli .

# Lint
golangci-lint run ./...

Publishing to PyPI

The CLI is distributed as a Python package via PyPI. The build system uses hatchling with manygo to cross-compile Go binaries into platform-specific wheels.

CI release (recommended)

Tag a release and push — the release-cli.yml workflow builds wheels for all platforms and publishes to PyPI automatically:

tag --prefix cli

To do this manually:

git tag cli/v0.1.0
git push origin cli/v0.1.0

The workflow builds wheels for:

  • linux/amd64 manylinux
  • linux/amd64 musllinux
  • linux/arm64 manylinux
  • linux/arm64 musllinux
  • darwin/amd64
  • darwin/arm64
  • windows/amd64
  • windows/arm64

Manual release

Build a wheel locally with uv. Set GOOS and GOARCH to cross-compile for other platforms (Go handles this natively — no cross-compiler needed):

# Build for current platform
uv build --wheel

# Cross-compile for a different platform
GOOS=linux GOARCH=amd64 uv build --wheel

# Build a musllinux-tagged Linux wheel for Alpine/musl environments
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 \
  ONYX_CLI_WHEEL_PLATFORM_TAG=musllinux_1_2_x86_64 \
  uv build --wheel

# Upload to PyPI
uv publish

Versioning

Versions are derived from git tags with the cli/ prefix (e.g. cli/v0.1.0). The tag is parsed by internal/_version.py and injected into the Go binary via -ldflags at build time.

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

onyx_cli-1.2.0-py3-none-win_arm64.whl (6.1 MB view details)

Uploaded Python 3Windows ARM64

onyx_cli-1.2.0-py3-none-win_amd64.whl (6.8 MB view details)

Uploaded Python 3Windows x86-64

onyx_cli-1.2.0-py3-none-musllinux_1_2_x86_64.whl (6.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

onyx_cli-1.2.0-py3-none-musllinux_1_2_aarch64.whl (6.0 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

onyx_cli-1.2.0-py3-none-manylinux_2_17_x86_64.whl (6.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

onyx_cli-1.2.0-py3-none-manylinux_2_17_aarch64.whl (6.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

onyx_cli-1.2.0-py3-none-macosx_11_0_arm64.whl (6.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

onyx_cli-1.2.0-py3-none-macosx_10_12_x86_64.whl (6.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file onyx_cli-1.2.0-py3-none-win_arm64.whl.

File metadata

  • Download URL: onyx_cli-1.2.0-py3-none-win_arm64.whl
  • Upload date:
  • Size: 6.1 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for onyx_cli-1.2.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 ddc7f8567a9b7a0302219aa4e3d1d89b0803c0b50752de5cc329bf5aa5143d04
MD5 820f8313944ec57ab55e3a5d2296120b
BLAKE2b-256 72e1173fe34913190ebbeca3c35cc1c9583c607a137db1bbb83d16f66dc8ba63

See more details on using hashes here.

File details

Details for the file onyx_cli-1.2.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: onyx_cli-1.2.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for onyx_cli-1.2.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 14edcb274388dfbc49b17c5f859d8b0cb79341b9a7db63cd15005248ce7a8e8d
MD5 5534393057a2bb1cfce8dfb2451563ed
BLAKE2b-256 33b803b485ed97d7e2e2cbafd21c2095fe09f2eb4b7d9eee53faeb1623a2cd02

See more details on using hashes here.

File details

Details for the file onyx_cli-1.2.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: onyx_cli-1.2.0-py3-none-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 6.7 MB
  • Tags: Python 3, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for onyx_cli-1.2.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 72eed72208ad6936273ffcd0170ddc7f5b9d05c05e412f03ed73e0fdaae1f1fb
MD5 9afca60344fc82557302303354a0f3c9
BLAKE2b-256 d32e1cb6296a32d8bc8b4d88d5df80c5da3ca575df8395bd78857f2c2efcc5ec

See more details on using hashes here.

File details

Details for the file onyx_cli-1.2.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: onyx_cli-1.2.0-py3-none-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: Python 3, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for onyx_cli-1.2.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4a4a56c8f254ab6f368ddbf4f8320b55faf5a6876333e410525912c09e81e5e5
MD5 5a9d458a6b7e4d457edf653a581b7c24
BLAKE2b-256 8d8a18b4693c851a8c4769c5886823b6b06d3958e4bc59daede90e817651897e

See more details on using hashes here.

File details

Details for the file onyx_cli-1.2.0-py3-none-manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: onyx_cli-1.2.0-py3-none-manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 6.7 MB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for onyx_cli-1.2.0-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 52e3aab8fa768c62ae06e58cdb74dd69d01620b159ef271e5640dc5c27710de4
MD5 b10aeb0d25d0c67d9fce56d58d07915f
BLAKE2b-256 ae702ccb1a4039c6f95b0c4064aca038ce3d08f2e342b94d4297d71b30caaa62

See more details on using hashes here.

File details

Details for the file onyx_cli-1.2.0-py3-none-manylinux_2_17_aarch64.whl.

File metadata

  • Download URL: onyx_cli-1.2.0-py3-none-manylinux_2_17_aarch64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: Python 3, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for onyx_cli-1.2.0-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 b5e428ae06700ab7a23852debca7d329a6e4ce5f31bd3b0dad0ce69701e4c0bb
MD5 b0385ddf214c045f3f39206fe4d1ee14
BLAKE2b-256 3bbeacaa91105605675e4ac0892e3269c34927eff44c9b7f673c227f280ce8c9

See more details on using hashes here.

File details

Details for the file onyx_cli-1.2.0-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: onyx_cli-1.2.0-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 6.3 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for onyx_cli-1.2.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f425ed999d9511aaa4862c0effccbc32064216a157479da94263ee7af91f503
MD5 049ff8cd6f1d0e9ce29f58d3a6479c01
BLAKE2b-256 ede8ea49fd36064a099129ebb138c683b0d01760dbd09d32906659ecda37d4b6

See more details on using hashes here.

File details

Details for the file onyx_cli-1.2.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: onyx_cli-1.2.0-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 6.7 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for onyx_cli-1.2.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 147edad2dcaf28b7551114438a93a8bfbc8e3fac74ae5852363d224b333f7949
MD5 429730e615ddf6d6f866c42d355036c9
BLAKE2b-256 2838f4534e82d6b186bfe0cbfd964cc33d028573c981ebc8e78504a3f6389883

See more details on using hashes here.

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