Skip to main content

The AI-native Linux desktop

Project description

Aulinx

The AI-native Linux desktop.

Cursor for your entire operating system.

CI PyPI License Python

What is it? | How it works | Getting started | Tools | Roadmap


What is Aulinx?

Aulinx is an AI agent that controls your entire Linux desktop through natural language. It sees every app via AT-SPI, reads UI elements, clicks buttons, types text, manages files, and controls system settings — with 92 tools and a local LLM.

aulinx > why is my computer slow right now?

  > process_list(sort_by=cpu)

  ┌─ Result (9ms) ────────────────────────────────────┐
  │ firefox (42% CPU), code (18% CPU), slack (8% CPU)  │
  └────────────────────────────────────────────────────┘

  Firefox is consuming 42% of your CPU with 47 tabs open.
  Want me to kill background processes?

aulinx > type "Hello from Aulinx!" in gedit

  > atspi_set_text(app_name=gedit, element_name=Search, text=Hello from Aulinx!)

  ┌─ Result (40ms) ──────────────────────────────────┐
  │ "Set text on 'Search': 'Hello from Aulinx!'"      │
  └────────────────────────────────────────────────────┘

Unlike other AI desktop agents that use screenshots, Aulinx reads the actual UI structure via AT-SPI — 3x faster, works semantically, no OCR needed.

How It Works

┌──────────────────────────────────────────────────┐
│  Command Palette UI (React + WebSocket)           │
│  Or CLI (interactive REPL / one-shot)             │
├──────────────────────────────────────────────────┤
│  Agent (Ollama native tool calling + audit)        │
├──────────────────────────────────────────────────┤
│  92 Tools across 23 modules                       │
│  AT-SPI, files, git, process, network, audio...   │
├──────────────────────────────────────────────────┤
│  Linux desktop (GNOME, KDE, Sway, Xfce)           │
│  UNTOUCHED — Aulinx runs on top                   │
└──────────────────────────────────────────────────┘
  1. AT-SPI (Linux accessibility API) reads and controls any app's UI — buttons, text, menus — semantically
  2. Ollama native tool calling with qwen2.5:14b or any compatible model
  3. 92 desktop tools covering every aspect of a Linux desktop
  4. 5-tier permission system — read-only auto-allowed, destructive always confirms

Getting Started

Works on any existing Linux desktop (GNOME, KDE, Sway, Xfce). No custom compositor needed.

Prerequisites

  • Linux with a running desktop (Wayland or X11)
  • Python 3.10+
  • Ollama with a model that supports tool calling
  • NVIDIA GPU recommended (RTX 3060+ for good performance)
  • python3-pyatspi for GUI control (apt install python3-pyatspi)

Install

git clone https://github.com/aulinx/aulinx.git
cd aulinx
pip install -e .
ollama pull qwen2.5:14b

Run

# Interactive mode
aulinx

# One-shot command
aulinx -c "what windows do I have open?"

# Use a specific model
aulinx -m qwen2.5:14b

# Start the web UI
aulinx --serve
cd ui && npm install && npm run dev
# Open http://localhost:5173

# Resume last conversation
aulinx --resume

# Check system dependencies
aulinx --doctor

Docker (test with a full desktop)

docker compose -f docker/docker-compose.yml up
# Open http://localhost:6080/vnc.html (password: aulinx)
# Inside container: aulinx -m qwen2.5:14b --base-url http://host.docker.internal:11434

Slash Commands

/tools    — List all 92 available tools
/context  — Show current desktop context
/history  — Browse past conversation sessions
/audit    — Show recent tool calls with timing
/doctor   — Check system dependencies
/clear    — Clear conversation history
/help     — Show help

Configuration

Config at ~/.config/aulinx/config.toml (auto-created on first run):

[llm]
model = "qwen2.5:14b"
base_url = "http://localhost:11434"
temperature = 0.3

[permissions]
# Override tool permission tiers
# shell_exec = "mutate"  # uncomment to lower confirmation requirement

Tools

92 tools across 23 modules:

Category Tools Count
Window list, get_focused 2
AT-SPI get_tree, find_elements, do_action, read_text, set_text, screenshot 6
Files read, write, edit, move, trash, list, search 7
Text count, grep, replace, head, tail 5
Git status, log, diff, commit, branch, stash 6
Apps launch, list_running 2
Process list, kill 2
Services list, status, start, stop, restart 5
Network status, wifi_list, wifi_connect, wifi_disconnect 4
Audio get_volume, set_volume, mute 3
Display list, brightness 2
Power status, profile, suspend, shutdown 4
Theme get, set_dark, wallpaper_set 3
Bluetooth status, scan, connect, disconnect, toggle 5
Input key_combo, type_text 2
Session who_am_i, uptime, disk_usage, env_get 4
Packages search, install, list_installed 3
XDG open, default_app_get, default_app_set, mime_type_of 4
Timer set_timer, cancel_timer, list_timers 3
Clipboard get, set 2
Notifications send 1
Memory store, get, delete, list_namespaces 4
D-Bus list_services, introspect, call 3
OCR screenshot_ocr, image_ocr 2
DateTime now, convert, calendar_show 3
System info, shell_exec 2
Workflow context_get, wait, audit_recent 3

Permission Tiers

Tier Behavior
Read Always auto-allowed
Low-risk Auto-allowed, logged
Mutate Confirms first time per session, then auto
Destructive Always confirms
Irreversible Always confirms with extra warning

Roadmap

  • Research & architecture design
  • Phase 0: 92 tools + CLI + tests + CI + audit + memory
  • Phase 1: Web command palette UI + WebSocket server
  • Tested: AT-SPI GUI control on real Linux (Docker + VNC)
  • Phase 2: Custom Wayland compositor with AI IPC
  • Phase 3: Full AI desktop environment (daily-drivable)
  • Phase 4: Distributable Linux distro image

Name

Au (gold, element 79) + linx (Linux / lynx). The gold standard of AI-powered Linux.

Contributing

See CONTRIBUTING.md for development setup, code style, and how to add new tools.

pip install -e ".[dev]"
make test   # run tests
make lint   # check code style

License

MIT

Project details


Download files

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

Source Distribution

aulinx-0.2.0.tar.gz (154.5 kB view details)

Uploaded Source

Built Distribution

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

aulinx-0.2.0-py3-none-any.whl (65.3 kB view details)

Uploaded Python 3

File details

Details for the file aulinx-0.2.0.tar.gz.

File metadata

  • Download URL: aulinx-0.2.0.tar.gz
  • Upload date:
  • Size: 154.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.9

File hashes

Hashes for aulinx-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c64701ef6e38bf67db8a7e5e37ff65e629cb95ac8fd2d1ad94a350fddbb1d681
MD5 6107136dc9e3ee37a79d422802ea0d84
BLAKE2b-256 93bbb91b134a954fd0de092799843432397e8b13ef08496a08942e16e2ea7bee

See more details on using hashes here.

File details

Details for the file aulinx-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: aulinx-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 65.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.9

File hashes

Hashes for aulinx-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2f048b6afa5fbc7f2a04bc55a67cedccebbfa771738f5757df3e9fa6091c7dea
MD5 2e6483bb875c663a95f1dc87637e89c0
BLAKE2b-256 4b05aba5012a09055e958347e9051e6690c1381cdba93c2c8a8228a9d1765088

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