{"_id":"@axion-labs-ai/quark-cli","_rev":"2-1ebb75111c42903be577620fcfee0b8d","name":"@axion-labs-ai/quark-cli","dist-tags":{"latest":"2.0.1"},"versions":{"2.0.0":{"name":"@axion-labs-ai/quark-cli","version":"2.0.0","_id":"@axion-labs-ai/quark-cli@2.0.0","maintainers":[{"name":"ravikxx_","email":"fearlessaviatorclan@gmail.com"}],"bin":{"axion":"src/tui/launch.js","axion-serve":"src/web/server.js","axion-bridge":"src/bridge.js","axion-blender":"mcp-servers/blender/index.js","axion-collect":"src/collect-daemon.js","axion-discord":"src/discord-daemon.js"},"dist":{"shasum":"bb09259bf6d9ca13531a62adff7af003230f6aa5","tarball":"https://registry.npmjs.org/@axion-labs-ai/quark-cli/-/quark-cli-2.0.0.tgz","fileCount":106,"integrity":"sha512-1qfhuHeg2F2nCKnP/yP5NNz559HdsEU/lWNOhXayvlWURUbIQb4EX/n9UtzfnhMwDFxxg0jcOj1VhgC3PWPvEA==","signatures":[{"sig":"MEQCIGJCJEi7ludfiWFB+U3XDoGRZVK8iR1zPfmCAQvP7z7TAiAhoqyBkBPU1tLU49kNG9dkXDQoZAZ1QfoXubMxmBCbtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2245555},"type":"module","engines":{"node":">=18"},"gitHead":"419733623b3fa57e9c0ec3ca533da90ce1831e83","scripts":{"tui":"bun src/tui/main.jsx","web":"node build-web.js && node src/web/server.js","test":"node test/run.js","start":"node src/tui/launch.js","sft-gen":"node tools/sft-gen.js","build-web":"node build-web.js","sft-inspect":"node tools/sft-inspect.js"},"_npmUser":{"name":"ravikxx_","email":"fearlessaviatorclan@gmail.com"},"_npmVersion":"11.12.1","description":"Axion by Axion Labs — terminal AI coding agent","directories":{},"_nodeVersion":"24.15.0","dependencies":{"ws":"^8.18.0","bun":"^1.3.14","chalk":"^5.3.0","react":"^19.2.7","dotenv":"^16.4.5","openai":"^4.77.0","qrcode":"^1.5.4","minimist":"^1.2.8","react-dom":"^19.2.7","discord.js":"^14.26.4","node-fetch":"^3.3.2","@xterm/xterm":"^6.0.0","@opentui/core":"^0.4.2","@opentui/react":"^0.4.2","react-reconciler":"^0.33.0","@anthropic-ai/sdk":"^0.39.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.0","@babel/core":"^7.24.0","@babel/preset-react":"^7.23.3"},"_npmOperationalInternal":{"tmp":"tmp/quark-cli_2.0.0_1782880334584_0.34746738007487443","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@axion-labs-ai/quark-cli","version":"2.0.1","description":"Axion by Axion Labs — terminal AI coding agent","publishConfig":{"access":"public"},"type":"module","bin":{"axion":"src/tui/launch.js","axion-serve":"src/web/server.js","axion-blender":"mcp-servers/blender/index.js","axion-discord":"src/discord-daemon.js","axion-collect":"src/collect-daemon.js","axion-bridge":"src/bridge.js"},"scripts":{"build-web":"node build-web.js","start":"node src/tui/launch.js","tui":"bun src/tui/main.jsx","web":"node build-web.js && node src/web/server.js","test":"node test/run.js","sft-gen":"node tools/sft-gen.js","sft-inspect":"node tools/sft-inspect.js"},"dependencies":{"@anthropic-ai/sdk":"^0.39.0","@opentui/core":"^0.4.2","@opentui/react":"^0.4.2","@xterm/xterm":"^6.0.0","bun":"^1.3.14","chalk":"^5.3.0","discord.js":"^14.26.4","dotenv":"^16.4.5","minimist":"^1.2.8","node-fetch":"^3.3.2","openai":"^4.77.0","qrcode":"^1.5.4","react":"^19.2.7","react-dom":"^19.2.7","react-reconciler":"^0.33.0","ws":"^8.18.0"},"devDependencies":{"@babel/core":"^7.24.0","@babel/preset-react":"^7.23.3","esbuild":"^0.28.0"},"engines":{"node":">=18"},"gitHead":"4b8b58fdddc09319b28f99f8f224c66d503eb290","_id":"@axion-labs-ai/quark-cli@2.0.1","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-5L0nDTA9ZD2UM/81O+Oh9orNNJjqsvCaoU2AsIEMb8io0lznw1rzBXE9rZ14oP7sKb2CIRQMtkDYS8OTZ+ov7g==","shasum":"fed1478983c91cea8964f3b201239e65abd573b8","tarball":"https://registry.npmjs.org/@axion-labs-ai/quark-cli/-/quark-cli-2.0.1.tgz","fileCount":110,"unpackedSize":2279434,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCJM3zk0kYxqhQU6YKZa9wvYhBGJeFDEERO4xvajpv4cwIgMOuF73CFfcN9S6ocgJ+e4XC4ZJ2I3ewAbR9avvguj/8="}]},"_npmUser":{"name":"ravikxx_","email":"fearlessaviatorclan@gmail.com"},"directories":{},"maintainers":[{"name":"ravikxx_","email":"fearlessaviatorclan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/quark-cli_2.0.1_1782888350779_0.2261404442284083"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-01T04:32:14.460Z","modified":"2026-07-01T06:45:51.120Z","2.0.0":"2026-07-01T04:32:14.809Z","2.0.1":"2026-07-01T06:45:50.974Z"},"description":"Axion by Axion Labs — terminal AI coding agent","maintainers":[{"name":"ravikxx_","email":"fearlessaviatorclan@gmail.com"}],"readme":"<p align=\"center\">\r\n  <img src=\"docs/logo.svg\" width=\"96\" height=\"96\" alt=\"Axion logo\">\r\n</p>\r\n\r\n# ⚛ Axion\r\n\r\n**Axion** is an open-source AI coding agent ecosystem built by Axion Labs. It includes a terminal CLI, a Chrome extension, a web UI, and an IDE integration — all sharing the same models, tools, and memory.\r\n\r\n> **v2.0** — the terminal UI is a modern, cell-rendered TUI (powered by [OpenTUI](https://github.com/sst/opentui)) with **tabs**, mouse support, inline diff review, `@file` mentions, terminal charts, and crash-safe session restore. It runs from source (no build step).\r\n\r\n---\r\n\r\n## What's included\r\n\r\n| Component | Description |\r\n|---|---|\r\n| **CLI** | Modern terminal agent — tabs, mouse, inline diff review, `@file` mentions, charts; reads, writes, and runs code in any directory |\r\n| **Chrome Extension** | Browser sidebar — ask questions about pages, automate the web |\r\n| **Web UI** | Browser-based chat with the same agent (`/web`) |\r\n| **MCP Servers** | Connect Blender, GitHub, Notion, Slack, and more |\r\n| **OAuth** | Connect GitHub and Google Drive/Calendar with `/oauth` |\r\n| **Scheduled Tasks** | Run AI tasks on a schedule with `/schedule` |\r\n| **Discord Bot** | Chat with the agent via Discord DMs (`/discord start`) |\r\n| **Dataset Collection** | Contribute sessions to improve future models (`/contribute`) |\r\n| **Plugins** | Extend the agent with browser, Docker, GitHub, and database tools (`/plugin`) |\r\n| **Axion Vision** | Free image understanding & OCR endpoint — read text in screenshots, analyse images |\r\n\r\n---\r\n\r\n## Installation\r\n\r\n### Requirements\r\n- [Node.js](https://nodejs.org) v18+ (the [Bun](https://bun.sh) runtime the TUI needs is installed automatically as a dependency — no separate install)\r\n\r\n### Install (recommended)\r\n\r\n```bash\r\nnpm install -g axion-cli\r\naxion\r\n```\r\n\r\nThat's it. No cloning, no building — just install and run.\r\n\r\n### Install from source\r\n\r\n```bash\r\ngit clone https://github.com/AxionLabsAI/axion.git\r\ncd axion\r\nnpm install\r\nnpm link        # the CLI runs from source — no build step\r\n```\r\n\r\n### First run\r\n\r\nRun `axion`, then set your API key inside the chat:\r\n\r\n```\r\n/api claude YOUR_ANTHROPIC_KEY\r\n```\r\n\r\nOr use a free model with no key required:\r\n\r\n```\r\n/model groq        ← Llama 3.3 70B, free\r\n/model gemini      ← Gemini 2.0 Flash, generous free tier\r\n```\r\n\r\n### Linux computer-use dependencies (optional)\r\n\r\nComputer-use tools (screenshots, mouse, keyboard) require:\r\n\r\n```bash\r\n# Debian/Ubuntu\r\nsudo apt install xdotool scrot xclip\r\n\r\n# Arch\r\nsudo pacman -S xdotool scrot xclip\r\n```\r\n\r\n`xdotool` is the only hard requirement — `scrot` is for screenshots, `xclip` is a fallback for text input.\r\n\r\n### macOS computer-use dependencies (optional)\r\n\r\n```bash\r\nbrew install cliclick   # for scroll support\r\n```\r\n\r\nGrant **Accessibility** and **Screen Recording** permissions to Terminal (or iTerm) in System Settings → Privacy & Security.\r\n\r\n---\r\n\r\n## API Keys\r\n\r\nSet keys before running, or use `/api` inside the chat:\r\n\r\n```bash\r\n# Option 1 — environment variables\r\nexport ANTHROPIC_API_KEY=sk-ant-...\r\nexport OPENAI_API_KEY=sk-...\r\nexport GEMINI_API_KEY=...\r\nexport GROQ_API_KEY=gsk_...\r\nexport MISTRAL_API_KEY=...\r\n\r\n# Option 2 — .env file (place in ~/.axion/.env or your project root)\r\n# Copy .env.example to get started\r\ncp .env.example ~/.axion/.env\r\n```\r\n\r\nOr set them live inside the CLI:\r\n\r\n```\r\n/api claude sk-ant-...\r\n/api gpt sk-...\r\n/api gemini AI...\r\n```\r\n\r\n---\r\n\r\n## Models\r\n\r\n| Alias | Provider | Notes |\r\n|---|---|---|\r\n| `lumen` | Axion Labs | ⚠️ Temporarily suspended — safety retraining in progress. See [safety report](https://axionlabs.dev/lumen-suspension). |\r\n| `veil` | Axion Labs | No key required — free but slow (up to 100s) |\r\n| `openrouter` / `or` | OpenRouter | 200+ models via one key |\r\n| `fable` | Anthropic | claude-fable-5 |\r\n| `claude` | Anthropic | claude-sonnet-4-6 |\r\n| `claude-opus` | Anthropic | claude-opus-4-8 |\r\n| `claude-haiku` | Anthropic | claude-haiku-4-5 |\r\n| `gpt` | OpenAI | gpt-4o |\r\n| `gpt-mini` | OpenAI | gpt-4o-mini |\r\n| `gemini` | Google | gemini-2.0-flash |\r\n| `gemini-2.5-pro` | Google | gemini-2.5-pro |\r\n| `groq` | Groq | llama-3.3-70b |\r\n| `mistral` | Mistral | mistral-large |\r\n| `glm` / `glm-5.2` | Z.ai | GLM-5.2, 753B, beats GPT-5.5 on coding. Requires Z.ai key (`/api glm`) |\r\n| `ollama` | Local | Requires Ollama running |\r\n\r\nSwitch models anytime:\r\n\r\n```\r\n/model veil\r\n/model claude\r\n/model gpt\r\n/model gemini-2.5-pro\r\n/model ollama\r\n```\r\n\r\n### OpenAI-compatible endpoints (OpenRouter, LM Studio, etc.)\r\n\r\nAny OpenAI-compatible API works — including OpenRouter, LM Studio, Together AI, and self-hosted models:\r\n\r\n```\r\n/endpoint openrouter https://openrouter.ai/api/v1 meta-llama/llama-3.3-70b-instruct sk-or-...\r\n/endpoint lmstudio   http://localhost:1234/v1       lmstudio-community/meta-llama-3-8b\r\n/endpoint together   https://api.together.xyz/v1    mistralai/Mixtral-8x7B-Instruct-v0.1 sk-...\r\n```\r\n\r\nFormat: `/endpoint <alias> <base-url> <model-id> [api-key]`\r\n\r\nCustom endpoints are saved and show up in `/models`.\r\n\r\n---\r\n\r\n## Modes\r\n\r\n| Mode | Behavior |\r\n|---|---|\r\n| `ask` | Confirms every tool call before running |\r\n| `plan` | Shows a plan first, then confirms |\r\n| `auto` / `bypass` | Runs everything without asking |\r\n\r\nSwitch with `/mode auto` or press `Ctrl+P` to cycle.\r\n\r\n---\r\n\r\n## CLI Commands\r\n\r\n```\r\n/help                              show all commands\r\n/model <name|id>                   switch model (alias or raw ID)\r\n/mode  <name>                      switch mode: ask · plan · auto  (Ctrl+P to cycle)\r\n/models                            list all available models + custom endpoints\r\n/theme [name]                      accent color: ember · violet · ocean · jade · rose · gold\r\n/api <model> <key>                 set API key (saved)\r\n/endpoint <name> <url> [model] [key]  add a custom OpenAI-compatible endpoint\r\n/endpoint                          list saved endpoints\r\n/thinking [on|off|<tokens>]        toggle extended thinking\r\n/adviser [model|auto|off]          set a second model that helps when the agent gets stuck\r\n/cost                              show session token usage and estimated cost\r\n\r\n# Running things\r\n/run <cmd>                         run a shell command and feed output to the agent\r\n!<cmd>                             shorthand for /run  e.g. !git status\r\n/goal <description>                work autonomously until goal is met\r\n/goal                              show or cancel current goal\r\n/retry                             re-run the last message\r\n/btw <question>                    quick side question without affecting chat history\r\n/review                            code review of current git diff (structured feedback)\r\n/pr [context]                      draft a PR title+body from recent commits\r\n\r\n# Context & memory\r\n/remember <text>                   save a persistent note (injected into every session)\r\n/remember                          list saved notes\r\n/forget <index>                    remove a note by number\r\n/system [text]                     set/clear extra system prompt instructions for this session\r\n/include <file>                    pin a file into context for the session (tab-completes)\r\n/include                           list pinned files\r\n/include remove <file>             unpin a file\r\n/include clear                     unpin all files\r\n\r\n# Chat history\r\n/save <name>                       save current chat\r\n/resume [name]                     resume a saved chat (no name = list all)\r\n/remove-chat <name>                delete a saved chat\r\n/search-chats <query>             search across all saved chats\r\n/history <query>                   search message history\r\n/export <filename>                 save chat as markdown\r\n/compact                           summarize & compress history to free context\r\n/clear                             clear history\r\n\r\n# Comparing models\r\n/compare <prompt>                  run prompt through saved/default models side by side\r\n/compare <m1,m2,...> <prompt>      override models for this run\r\n/compare-models                    show saved compare model list\r\n/compare-models <m1,m2,...>        save default models for /compare\r\n/compare-models reset              restore built-in defaults (claude · gpt · gemini)\r\n\r\n# Undo & checkpoints\r\n/undo                              restore last overwritten/deleted file\r\n/rewind [list|<n>]                 undo the last n turns' file changes (checkpoints)\r\n\r\n# Computer use\r\n/computer [on|off]                 toggle computer use / screen control  (alias: /cu)\r\n/vision [model]                    set/show vision model for computer use\r\n/ss [question]                     screenshot + describe the screen (quick, no agent loop)\r\n/macro record <name>               start recording a macro (computer use actions)\r\n/macro stop                        save the recorded macro\r\n/macro play <name>                 replay a saved macro\r\n/macro list                        list all saved macros\r\n/macro delete <name>               delete a saved macro\r\n\r\n# Image generation\r\n/img-gen <prompt>                  generate an image (saved to ~/.axion/images/)\r\n/img-gen-model [model]             set/show image model (dall-e-3, dall-e-2, gpt-image-1)\r\n\r\n# Skills & automation\r\n/skills                            list skills (auto-activate when trigger words appear)\r\n/skill-generator <name> <txt>      AI-generates a skill .md in ~/.axion/skills/\r\n/skill-delete <name>               delete a skill\r\n/watch                             start watch-and-learn (saves preferences from your messages)\r\n/watch stop                        stop + save learned preferences to ~/.axion/learned.md\r\n/watch show                        view current learned preferences\r\n/watch clear                       delete all learned preferences\r\n/permissions [clear]               list/reset always-allowed tools (press \"a\" on confirms)\r\n\r\n# Dataset contribution\r\n/contribute                        share this session as training data (auto-prompted)\r\n/contribute skip                   dismiss for this session\r\n/contribute optout [off]           permanently opt out (or re-enable)\r\n\r\n# Web UI\r\n/web [port]                        open web UI in browser (default port 3000)\r\n/web stop                          stop web server\r\n\r\n# MCP servers\r\n/mcp                               show connected MCP servers + tool counts\r\n/mcp browse                        browse MCP marketplace (curated servers)\r\n/mcp search <query>                search marketplace by keyword\r\n/mcp install <id>                  install a server from the marketplace\r\n/mcp add <name> <cmd> [args]       connect a custom MCP server (saved)\r\n/mcp enable <name>                 enable a disabled server\r\n/mcp disable <name>                pause a server (keeps config)\r\n/mcp remove <name>                 disconnect + delete config\r\n/mcp tools [name]                  list tools from connected servers\r\n/mcp reload                        restart all servers\r\n\r\n# Blender\r\n/blender setup                     show Blender add-on install instructions\r\n/blender connect                   connect Blender MCP server to Axion\r\n\r\n# OAuth\r\n/oauth connect <service>           connect GitHub · Google · Notion · Slack\r\n/oauth list                        show connected services\r\n/oauth revoke <service>            disconnect\r\n\r\n# Scheduled tasks\r\n/schedule                          list scheduled tasks\r\n/schedule add <name> \"<expr>\" <p>  add a scheduled task\r\n/schedule run <name>               run a task now\r\n/schedule remove <name>            delete a task\r\n/schedule enable/disable <name>    toggle a task\r\n/schedule results [name]           show result files\r\n\r\n# Plugins\r\n/plugin                            list available plugins + status\r\n/plugin enable <name>              enable a plugin\r\n/plugin disable <name>             disable a plugin\r\n/plugin tools <name>               show tools a plugin provides\r\n/plugin install <name>             install a plugin\r\n\r\n# Discord\r\n/discord token <TOKEN>             save bot token\r\n/discord start                     connect bot (auto-reconnects on next launch)\r\n/discord stop                      disconnect\r\n/discord status                    show connection info\r\n\r\n/exit                              quit\r\n```\r\n\r\n**Keyboard & mouse:** `Ctrl+T` new tab · `Ctrl+W` close tab · `Shift+Tab` switch tab · `Ctrl+1-9` jump to tab · `Ctrl+R` expand/collapse the last tool or thinking block · `Esc` interrupt · `Ctrl+C` twice to quit. Type `@` to mention a file; click tabs, the `+`/`✕` buttons, suggestions, and the copy/edit/retry actions that appear when you hover a message.\r\n\r\n---\r\n\r\n## Project memory & customization\r\n\r\n- **AXION.md** — put persistent project instructions in `./AXION.md`, `./.axion/AXION.md`, or `~/.axion/AXION.md`; they're loaded into every session's system prompt.\r\n- **@file mentions** — type `@src/file.js` in any message to pin that file into context (tab-completes paths).\r\n- **Custom slash commands** — drop `.md` files in `~/.axion/commands/` or `./.axion/commands/`; `review-pr.md` becomes `/review-pr`, and `$ARGUMENTS` in the body is replaced with whatever follows the command.\r\n- **Skills** — `/skill-generator minecraft remember X, Y, Z whenever minecraft comes up` has the AI write `~/.axion/skills/minecraft.md` (frontmatter: name, description, triggers). The skill auto-injects into the system prompt whenever a trigger word appears in your message. `/skills` lists them, `/skill-delete <name>` removes one, or edit the `.md` directly.\r\n- **Per-project settings** — drop a `.axion-settings.json` in your project root to override global defaults for that project: `{ \"model\": \"claude\", \"mode\": \"auto\", \"theme\": \"ocean\", \"systemPrompt\": \"...\", \"thinking\": true }`. Takes priority over `.axionrc`.\r\n- **Message queueing** — type while the agent is working; messages queue and send when the turn finishes.\r\n- **Background tasks** — the agent can start dev servers/watchers with `run_command background=true` and poll them with `check_task`.\r\n\r\n---\r\n\r\n## Schedule formats\r\n\r\n```\r\n/schedule add morning-report \"daily 09:00\" Summarize my GitHub notifications\r\n/schedule add weekly-review  \"weekly mon 09:00\" Review what I worked on this week\r\n/schedule add price-check    \"every 30m\" Check Bitcoin price and alert if > 100k\r\n```\r\n\r\nResults are saved as markdown files in `~/.axion/schedule-results/`.\r\n\r\n---\r\n\r\n## OAuth integrations\r\n\r\nConnect services to give the agent access to them:\r\n\r\n```\r\n/oauth connect github     → device flow, auto-adds GitHub MCP server\r\n/oauth connect google     → opens browser, connects Drive + Calendar\r\n/oauth connect notion     → paste integration token\r\n/oauth connect slack      → paste bot token\r\n```\r\n\r\nTo enable OAuth, register your own apps and add credentials to `~/.axion/.env`:\r\n\r\n```\r\nAXION_GITHUB_CLIENT_ID=...\r\nAXION_GITHUB_CLIENT_SECRET=...\r\nAXION_GOOGLE_CLIENT_ID=...\r\nAXION_GOOGLE_CLIENT_SECRET=...\r\n```\r\n\r\n---\r\n\r\n## Dataset Contribution\r\n\r\nHelp improve future Axion models by sharing interesting sessions. Axion automatically suggests contributing after complex or frustrating conversations.\r\n\r\n```\r\n/contribute           # share this session\r\n/contribute skip      # not now\r\n/contribute optout    # never ask again (run with \"off\" to re-enable)\r\n```\r\n\r\nSessions are sent to the Axion Labs collector automatically — no setup needed. If you're offline, they're saved locally in `~/.axion/donations/` and uploaded the next time Axion starts with a connection.\r\n\r\n### axion-collect (local daemon)\r\n\r\nRun a persistent local collector to capture sessions before they're uploaded:\r\n\r\n```bash\r\naxion-collect               # saves to ~/.axion/dataset/ on port 47832\r\naxion-collect --port 12345  # custom port\r\naxion-collect --out ~/data  # custom output directory\r\n```\r\n\r\nAxion checks for the daemon on startup and routes sessions to it first when running.\r\n\r\n---\r\n\r\n## Discord Bot\r\n\r\nChat with the Axion agent directly from Discord DMs.\r\n\r\n### Setup\r\n1. Create a bot at [discord.com/developers](https://discord.com/developers/applications)\r\n2. Enable **Message Content Intent** under Bot → Privileged Gateway Intents\r\n3. Invite the bot to your server (or DM it directly)\r\n4. Save the token: `/discord token <BOT_TOKEN>`\r\n5. Connect: `/discord start`\r\n\r\n### How it works\r\n- DMs sent to the bot appear in the CLI labeled `[Discord: username]`\r\n- The full agent responds — file access, tools, confirmations, MCP servers\r\n- The response is sent back to Discord automatically (long replies are split)\r\n- If the agent needs permission to run a tool, it DMs you a y/n prompt\r\n- The bot shows a typing indicator while processing\r\n\r\n### Commands\r\n| Command | Description |\r\n|---|---|\r\n| `/discord token <TOKEN>` | Save bot token |\r\n| `/discord start` | Connect (auto-reconnects on next launch) |\r\n| `/discord stop` | Disconnect (disables auto-reconnect) |\r\n| `/discord status` | Show connection info |\r\n\r\n### Standalone daemon\r\n`axion-discord` runs a persistent bot without the TUI — useful for a server:\r\n\r\n```bash\r\naxion-discord\r\naxion-discord --model claude\r\n```\r\n\r\n---\r\n\r\n## Chrome Extension\r\n\r\n1. Open `chrome://extensions`\r\n2. Enable **Developer mode**\r\n3. Click **Load unpacked**\r\n4. Select the `extension/` folder from this repo\r\n5. Click the Axion icon or press `Alt+Shift+A`\r\n\r\nThe extension sidebar lets you ask about the current page, run browser automation, take screenshots, and chat using any supported model — no API key required if using Veil. Links in AI responses are clickable and open in a new tab.\r\n\r\n---\r\n\r\n## Web UI\r\n\r\n```\r\n/web          # opens http://localhost:3000\r\n/web 8080     # custom port\r\n/web stop     # stop the server\r\n```\r\n\r\nThe web UI shares the same agent session as the CLI.\r\n\r\n---\r\n\r\n## MCP Servers\r\n\r\nAxion includes a built-in MCP marketplace with 13 curated servers:\r\n\r\n```\r\n/mcp browse               # see all available servers\r\n/mcp search database      # filter by keyword\r\n/mcp install github       # install by ID\r\n/mcp install puppeteer\r\n/mcp install postgres postgresql://user:pass@localhost/db\r\n```\r\n\r\nOr connect any MCP server manually:\r\n\r\n```\r\n/mcp add github npx -y @modelcontextprotocol/server-github\r\n/mcp add notion npx -y @modelcontextprotocol/server-notion\r\n/mcp add blender /blender connect\r\n```\r\n\r\nConfig is saved to `~/.axion/mcp.json`.\r\n\r\nAvailable marketplace IDs: `github`, `filesystem`, `fetch`, `postgres`, `sqlite`, `notion`, `slack`, `puppeteer`, `memory`, `brave-search`, `google-maps`, `sequential-thinking`, `everything`\r\n\r\n---\r\n\r\n## Axion Vision\r\n\r\nA free image understanding & OCR endpoint, hosted separately from Lumen.\r\n\r\n- Powered by **GLM-OCR** (Z.ai open-weights model, purpose-built for OCR)\r\n- Reads text in screenshots, error messages, UI mockups, diagrams\r\n- OpenAI-compatible `/v1/chat/completions` — send images as base64 `image_url` content blocks\r\n- No API key required\r\n\r\nDeploy from `axion-vision-space/app.py` to a HuggingFace Space.\r\n\r\n---\r\n\r\n## Rebuilding after edits\r\n\r\nThe CLI runs from source (no build step) — just relink:\r\n\r\n```bash\r\nnpm link            # (or: npm install -g .) — update the global `axion`\r\nnode build-web.js   # rebuild the web UI only if you changed it\r\n```\r\n\r\n---\r\n\r\n## Project structure\r\n\r\n```\r\naxion/\r\n├── src/\r\n│   ├── agent/          # Agent loop, tools, models, MCP, OAuth APIs\r\n│   ├── tui/            # Terminal UI (OpenTUI + React, runs under Bun)\r\n│   │   ├── launch.js   # `axion` entry — re-execs the TUI under Bun, or falls back\r\n│   │   ├── main.jsx    # OpenTUI entry / arg parsing\r\n│   │   └── fallback.js # plain-Node readline UI (no Bun / piped input)\r\n│   ├── ui/             # Framework-free shared logic (markdown, charts, commands…)\r\n│   ├── web/            # Web server + React web client\r\n│   ├── oauth/          # OAuth providers + flow\r\n│   ├── config.js       # Models, providers, API keys\r\n│   ├── persist.js      # Local storage (~/.axion/)\r\n│   ├── scheduler.js    # Scheduled tasks\r\n│   ├── discord-daemon.js  # axion-discord standalone bot\r\n│   └── collect-daemon.js  # axion-collect local dataset daemon\r\n├── collect-worker/     # Cloudflare Worker for remote session collection\r\n├── extension/          # Chrome extension\r\n├── mcp-servers/        # Bundled MCP servers (Blender)\r\n└── build-web.js        # Web UI bundler (the CLI itself needs no build)\r\n```\r\n\r\n---\r\n\r\n## Command reference\r\n\r\nType any command in the CLI. All commands start with `/`. Tab completes the command name; the suggestion box shows up to 6 matches as you type.\r\n\r\n### Models & keys\r\n\r\n| Command | Description |\r\n|---|---|\r\n| `/model <name>` | Switch model (e.g. `claude`, `gpt`, `lumen`, `gemini`, `groq`) |\r\n| `/models` | List all available models and custom endpoints |\r\n| `/api <provider> <key>` | Set an API key (`claude`, `gpt`, `groq`, `mistral`, `gemini`, `glm`, `openrouter`) |\r\n| `/axion-key <key>` | Save your Axion API key for Lumen access |\r\n| `/axion-key remove` | Clear your Axion API key |\r\n| `/endpoint <name> <url> [model] [key]` | Add a custom OpenAI-compatible endpoint |\r\n| `/thinking [on\\|off\\|<tokens>]` | Toggle extended thinking (Claude only) |\r\n\r\n### Chat\r\n\r\n| Command | Description |\r\n|---|---|\r\n| `/mode <name>` | Switch agent mode: `ask`, `plan`, `bypass` |\r\n| `/adviser [model\\|auto\\|off]` | Set or disable the adviser model |\r\n| `/system [text\\|clear]` | Set extra system-level instructions |\r\n| `/include <file>` | Pin a file into context (no args = list pinned) |\r\n| `/btw <question>` | Quick one-off question without breaking flow |\r\n| `/retry` | Re-run the last message |\r\n| `/compare [m1,m2,...] <prompt>` | Compare two or more models side by side |\r\n| `/compare-models [m1,m2,...]` | Get or set the default models for `/compare` |\r\n| `/review` | Code review of the current git diff |\r\n| `/goal <description>` | Loop until the agent meets a condition |\r\n| `/compact` | Summarise and compress history to save tokens |\r\n| `/cost` | Show session token usage and estimated cost |\r\n\r\n### Files & history\r\n\r\n| Command | Description |\r\n|---|---|\r\n| `/run <cmd>` | Run a shell command and feed output to the agent |\r\n| `/include <file>` | Pin a file into every message |\r\n| `/undo` | Restore the last overwritten or deleted file |\r\n| `/rewind [list\\|<n>]` | Undo the last n turns of file changes |\r\n| `/export <filename>` | Save the current chat as a markdown file |\r\n| `/save <name>` | Save the current chat session |\r\n| `/resume <name>` | Resume a saved chat (no args = list all) |\r\n| `/search-chats <query>` | Search across all saved chats |\r\n| `/remove-chat <name>` | Delete a saved chat |\r\n| `/history <query>` | Search message history |\r\n| `/copy` | Copy the last AI response to the clipboard |\r\n| `/copy-block <n>` | Copy the Nth code block from the last response |\r\n\r\n### Skills & automation\r\n\r\n| Command | Description |\r\n|---|---|\r\n| `/skills` | List all skills (auto-activate on their trigger phrases) |\r\n| `/skill <name> <instructions>` | Create a skill from a description |\r\n| `/skill-generator <name> <instructions>` | AI-generate a skill `.md` file |\r\n| `/skill-delete <name>` | Delete a skill |\r\n| `/macro record\\|stop\\|play\\|list\\|delete` | Record and replay sequences of messages |\r\n| `/watch start\\|stop\\|show\\|clear` | Watch-and-learn — build preferences from observed behaviour |\r\n| `/schedule list\\|add\\|run\\|remove\\|enable\\|disable\\|results` | Manage scheduled AI tasks |\r\n\r\n### Memory\r\n\r\n| Command | Description |\r\n|---|---|\r\n| `/remember [text]` | Save a persistent note (no args = list all) |\r\n| `/forget <number>` | Remove a saved note by index |\r\n\r\n### Computer use & vision\r\n\r\n| Command | Description |\r\n|---|---|\r\n| `/computer [on\\|off]` | Toggle screen control (alias: `/cu`) |\r\n| `/cu [on\\|off]` | Shortcut for `/computer` |\r\n| `/ss [question]` | Take a screenshot and describe the screen |\r\n| `/vision <model>` | Set the vision model for computer use |\r\n| `/img-gen <prompt>` | Generate an image via OpenAI |\r\n| `/img-gen-model [model]` | Set or show the image generation model |\r\n| `/voice` | Record voice input — transcribed by Whisper |\r\n\r\n### Integrations\r\n\r\n| Command | Description |\r\n|---|---|\r\n| `/oauth connect\\|list\\|revoke` | Link GitHub, Google, Notion, or Slack |\r\n| `/discord token\\|start\\|stop\\|status` | Discord bot — run the agent via DM |\r\n| `/web [port\\|stop]` | Open or stop the web UI |\r\n| `/blender setup\\|connect` | Set up the Blender MCP integration |\r\n| `/mcp browse\\|search\\|install\\|toggle\\|enable\\|disable\\|remove\\|tools\\|reload` | MCP marketplace |\r\n| `/plugin ...` | Browser, Docker, GitHub, and database plugins |\r\n\r\n### Misc\r\n\r\n| Command | Description |\r\n|---|---|\r\n| `/pr [context]` | Draft a PR title and body from recent commits |\r\n| `/contribute [skip\\|optout]` | Share session as training data |\r\n| `/permissions [clear]` | List or reset always-allowed tools |\r\n| `/theme [name]` | Switch accent colour (no args = list) |\r\n| `/help` | Show all commands |\r\n| `/clear` | Clear history |\r\n| `/exit` | Quit |\r\n\r\n---\r\n\r\n## License\r\n\r\nMIT — made by [Axion Labs](https://github.com/AxionLabsAI)\r\n","readmeFilename":"README.md"}