VixlVixl
Docs
Changelog
GitHub
Docs
Changelog
GitHub
  • Get Started

    • Overview
    • Philosophy
    • Installation
    • Set up providers and models
    • Add a project
    • Create a project group
    • Your first chat
  • Concepts

    • How Vixl works
    • Chat modes
    • Permissions and approvals
    • Projects and home chats
    • Models and roles
    • Context
    • Code graphs
    • The .vixl directory
  • Using Vixl

    • Manage chats
    • Queue and stop messages
    • Review and restore changes
    • Compact and hand off long chats
    • Export a transcript
    • Work with plans
    • Orchestrate sub-agents
    • Best practices
    • Use the workbench
    • Shortcuts and the command palette
  • Customize

    • Providers
    • Models
    • MCP servers
    • Skills
    • Custom agents
    • Rules and AGENTS.md
    • Language servers
    • Appearance
    • Permission settings
  • Reference

    • settings.json
    • mcp.json
    • Custom agent frontmatter
    • SKILL.md format
    • Keyboard shortcuts
    • Chat statuses
    • .vixl layout
    • Managed components
  • Resources

    • Troubleshooting
    • FAQ
    • Privacy
    • Comparison
    • Roadmap
    • Brand and press
    • Changelog

How Vixl works

Vixl is a local-first desktop app for chatting with LLMs and running coding agents. You bring your own keys and hosts. There is no Vixl account, no Vixl home server, and the app does not ship analytics.

The UI is Vue. The shell is Tauri. The backend is Rust. The agent harness runs on your machine. The Vue process talks to the local Tauri/Rust process, which owns the filesystem, PTY, git, MCP stdio, keychain, and SQLite.

Vixl chat beside an editor completion menu in keyboard.ts and the project file tree

Network

You configure most network calls: model providers, MCP servers, and web_fetch when you allow it. The app also fetches the public models.dev catalog, downloads language servers when auto-download is on (the default) and a portable Node runtime if needed, runs the code graph CLI via npx, and checks GitHub Releases for updates. Privacy lists those calls.

Where state lives

API keys and MCP secrets stay in the OS keychain, never in .vixl JSON. How that vault is named and where Linux falls back if Secret Service is missing is on Providers.

Chats, messages, usage, and workbench tabs live in SQLite under the personal .vixl directory. Each chat also has a directory of files. Deleting a chat drops both. Settings, MCP configs, plans, skills, agents, rules, and AGENTS.md live in two .vixl trees: personal ~/.vixl, and a project tree at <repo>/.vixl that you can commit. Home chats inject the personal skills, rules, and AGENTS.md. Project chats overlay project skills, agents, settings, and MCP on personal, and append project rules and AGENTS.md after the personal copies. The registered folder list and the active project id are personal. Code graph indexes are personal, not in the repo. A registered folder that is your user home directory stays on the personal tree only.

The exhaustive path list is on .vixl layout. Merge rules are on The .vixl directory.

Modes, permissions, and context

Chat modes decide which tools exist on a turn. Permissions and approvals decide which of those tools may run without asking you.

Each turn builds a small system prompt: a short workspace identity, the mode skill, then catalogs of names. Full MCP schemas and skill bodies load when the agent asks. That is progressive tool discovery, and it is why local prefills stay smaller than harnesses that dump every tool schema up front. Built-in prompts describe the workspace and tools. They do not give the model a persona.

If you have not added a provider yet, set up providers and models. Your first chat walks through sending a message.

Edit this page
Last Updated: 10/6/26, 8:58 PM
Next
Chat modes