Skip to main content

Nixi

A desktop voice assistant for Linux. Trigger Nixi, ask a question or give a command, and it handles it — change the volume, set a wallpaper, take a screenshot, control media, or answer general queries using Gemini.

What It Does

  • System control — volume, brightness, mute, media playback, screenshots, wallpaper changes, app launcher.
  • General queries — ask anything. Nixi uses Gemini and can search the web for live information like weather, news, and prices.
  • Vision — say "open your eyes", "where should I click", or "why is this red" and Nixi asks permission to screenshot your screen, then describes what it sees. Approval is via desktop notification with a configurable timeout.
  • Voice interaction — manual trigger-to-record mechanism, speech-to-text, and text-to-speech. No constant background listening/wake-word overhead.

Installation & Setup

Install Nixi globally on your system using pipx:

pipx install nixii

This will automatically expose the commands globally. Run any command once to automatically initialize your configuration directory:

nixi-server

Now, configure your API keys by editing ~/.config/nixi/.env:

GOOGLE_CLOUD_API_KEY=your-vertex-express-mode-key
SARVAM_API_KEY=your-sarvam-key

Option 2: Local Development Setup

If you'd like to run or develop Nixi locally, install uv and sync dependencies:

uv sync

Run any command once (e.g. uv run nixi-server) to auto-generate your config, then add your API keys to ~/.config/nixi/.env.

Run

Note: If you are using the local development setup, prefix all of the following commands with uv run (e.g., uv run nixi-server).

First, discover your desktop environment (keybinds, scripts, wallpapers):

nixi-server --discover

Then start the server:

nixi-server

Next, start the voice daemon (which runs as a background process listening for manual trigger events):

nixi-voice

To interact with Nixi, trigger the recording. You can bind keys or desktop shortcuts to run these commands:

  • Trigger Recording (Toggle): Start or stop recording your query.
    nixi-voice trigger
    
  • New Session: Start a fresh conversation session and trigger recording.
    nixi-voice new
    

Run the command once to start recording, speak your request, and run it again to stop and process the audio!

Configuration

Nixi resolves its config in this order:

  1. --config <path> CLI flag
  2. $NIXI_CONFIG environment variable
  3. ~/.config/nixi/nixi.toml (user config)
  4. example_config/nixi.toml (repo default)
  5. Code defaults (no file needed)

The system prompt lives in code. Set agent_name in your TOML to change the persona — the prompt template uses it automatically.

Edit your TOML to configure audio thresholds, STT, TTS, model settings, vision, and local actions.

Metadata

Release files for nixii 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nixii 0.1.0
File Size Uploaded
nixii-0.1.0.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for nixii 0.1.0
File Interpreter ABI Platform
nixii-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.7 MB

Release files / nixii-0.1.0.tar.gz

Download URL nixii-0.1.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
c1075d8bdbd90fa67593e473eb736114bcc4d99d8067386517326c2cf4034c20
BLAKE2b-256 checksum
How to use checksums
a1fbff612558e6ff7a59b5a3c04464102374c361d8c10af448660f6897354f67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / nixii-0.1.0-py3-none-any.whl

Download URL nixii-0.1.0-py3-none-any.whl
Size 1.4 MB
Tags Python 3
SHA-256 checksum
How to use checksums
34eb24f0778280c549d1162c8f3eb7e5e8ec66f57e5ed200ec20715c9a5afeca
BLAKE2b-256 checksum
How to use checksums
3f60d14d58fd8840896ab6e272cdbe2dfe3396b287f74994db87d8931b97651b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page