An AI-First Shell and Desktop Environment, AIUI if you will. The idea is that a local LLM could help make a shell environment more user friendly by allowing for natural language. The local LLM is the primary interface. Instead of a traditional desktop with icon like GNOME, you interact with your computer through natural language. THe idea, keyboard-driven, privacy-focused, and fully local — nothing sent to external servers.
Built on Arch Linux with Sway as the compositor, powered by Ollama running Llama 3.1 8B locally. Because it fits my setup.
This project is primarily built with Claude
> open firefox
> close spotify
> why is my PC slow right now?
> install discord
> find my story about Loki
> firefox (shows instance, open or install depending on context)
> what did I work on yesterday?
> play Levels
> I want to start a mobile app project
> (voice) open firefox
> generate a reference image of a frost giant warrior
> *copy URL - asks to open it in browser
The LLM understands your system, controls your apps, answers questions, and manages your files — all from a single natural language interface. A raw CLI is always one keystroke away.
- Keep LLM context as small as possible for the task but enought to make it possible to execute the tasks.
- Ambiguety, what word is an app, what is a song.
🚧 Early development — MVP in progress
| Component | Status |
|---|---|
| VM setup | ✅ Done |
| Arch base | ✅ Done |
| Sway compositor | ✅ Done |
| Ollama + model | ✅ Done |
| AI shell core | ✅ Written, needs more work |
| Intent classifier | ✅ Written, needs more testing |
| App control | ✅ Written, needs more work |
| File index | 📌 Planned |
- GPU: NVIDIA RTX 3070 (8GB VRAM)
- RAM: 16GB system RAM
- OS base: Arch Linux
┌─────────────────────────────────────┐
│ Natural language | Raw CLI │
├─────────────────────────────────────┤
│ AI Shell Core │
│ Intent classifier + Ollama │
├─────────────────────────────────────┤
│ Sway compositor + xdotool │
├─────────────────────────────────────┤
│ Arch Linux kernel │
└─────────────────────────────────────┘
Two-tier LLM system: a lightweight always-on classifier handles simple commands directly. Ollama loads on demand for complex queries and unloads when idle or when a VRAM-heavy app (e.g. a game) is running.
ash/
├── shell/ ← AI shell Python modules
│ ├── shell.py ← main entry point
│ ├── classifier.py ← intent routing
│ ├── ollama_client.py
│ ├── simple_actions.py
│ ├── executor.py
│ ├── confirmation.py
│ ├── logger.py
│ ├── context.py
│ └── requirements.txt
├── docs/ ← project design documents
│ ├── ASH_Overview.md
│ ├── ASH_Architecture.md
│ ├── ASH_Features.md
│ ├── ASH_MVP.md
│ └── ASH_SideProjects.md
└── README.md
Prerequisites:
- Arch Linux (or any Linux with Python 3.11+)
- Ollama installed — https://ollama.com
- Model pulled:
ollama pull llama3.1:8b(this pulls llama3.1:8b-q4_K_M)
Install dependencies:
cd shell
pip install -r requirements.txtRun:
ollama serve &
python shell.py| Command | Action |
|---|---|
raw |
Drop to bash |
restartml |
Restart Ollama if crashed |
help |
Show built-in commands |
exit |
Exit the shell |
Everything else routes through the AI.
36 post-MVP features planned including voice input, living file index, image generation, audio generation, PDF processing, session memory, git integration, and more. See docs/ASH_Features.md for the full list.
- Ollama VS Code Extension — Copilot-like, uses OS-level Ollama instance
- Ollama Godot Plugin — GDScript assistance, scene awareness, game asset generation
TBD