VinaX Code v1.9.0
Welcome back!
VinaX CLI by SIRIMILLA VINAY
kimi-k2.6 · NVIDIA NIM
~/projects/shop-api
Tips for getting started
Run /init to create a VINAX.md file with instructions for VinaX
Use /model to switch models, /provider to switch providers

Recent activity
2h ago   add input validation
> add input validation to the signup form and run the tests            

● Update(src/routes/signup.ts)
  ⎿  Updated src/routes/signup.ts with 12 additions and 2 removals

✻ Simmering… (14s · ↓ 1.2k tokens · esc to interrupt)

────────────────────────────────────────────────────────────────────────
> Try "write a test for <filepath>"
────────────────────────────────────────────────────────────────────────
  ? for shortcuts

VinaX Code reads your codebase, edits files, runs commands and works through multi-step tasks, all from your terminal. It talks to the model of your choice: free tiers on Groq, NVIDIA NIM, OpenRouter and Gemini, paid models from Gemini, Claude and ChatGPT, or a VinaX proxy.

Get started in 30 seconds

npm install -g vinax-code
cd your-project
vinax

The first run asks you to trust the folder, pick a provider and paste an API key. That's it. See the Quickstart for a full walkthrough.

What VinaX Code does for you

  • Builds features from descriptions. Tell it what you want in plain English. It makes a plan, writes the code, and checks that it works.
  • Debugs and fixes issues. Paste an error or describe a bug. It reads the code, finds the cause and applies a fix.
  • Navigates any codebase. Ask about architecture, data flow or "where is X handled?". It searches and reads files to answer.
  • Automates tedious tasks. Fix lint errors, resolve merge conflicts, write release notes, all from one prompt or in CI with vinax -p.

Why developers like it

  • Works in your terminal. No new IDE or chat window. It uses the tools you already have.
  • Takes action, safely. Edits files and runs commands, but asks first. You approve diffs and commands, or switch modes to move faster.
  • Free to start. Generous free tiers from Groq, NVIDIA, OpenRouter and Gemini work out of the box.
  • Familiar and extensible. Claude Code-style commands, permission rules, hooks, MCP servers, sub-agents and skills. Existing .claude/ configs are read too.

Next steps

This guide takes you from nothing to a working change in your codebase.

Before you begin: you need a terminal, Node.js 20 or newer and a code project to work with.

Install VinaX Code

npm install -g vinax-code
git clone https://github.com/Vinay1812007/VinaX-CLI-2.0
cd VinaX-CLI-2.0
npm link

This installs two equivalent commands: vinax and vinax-code.

Get a free API key

Any one is enough: Groq, NVIDIA OpenRouter or Gemini. You can also use a Claude or ChatGPT key, or a VinaX proxy token.

Start your first session

cd /path/to/your/project
vinax

On first launch VinaX asks "Do you trust the files in this folder?", then shows a provider picker. Choose Open … to create a key to open the provider's key page, then paste the key; VinaX checks it before saving. The key is saved to ~/.vinax/config.json (file mode 600).

Ask your first question

> what does this project do?
> where is the main entry point?
> explain the folder structure

VinaX reads the files it needs on its own. You don't have to attach context manually, but you can with @path.

Make your first code change

> add a hello world function to the main file

VinaX finds the right file, shows you the proposed diff and asks "Do you want to make this edit?". Press 1 to accept or Esc to reject and say what to do differently.

Use Git with VinaX

> what files have I changed?
> commit my changes with a descriptive message
> create a new branch called feature/quickstart

Other ways to start

vinax "fix the failing test"              # interactive, with a first prompt
vinax -p "summarize this error" < err.log  # print mode: answer once and exit
vinax -c                                  # continue the last conversation here
vinax -r                                  # pick a past conversation to resume
vinax --permission-mode plan              # start in plan mode
vinax doctor                              # check your setup
vinax update                              # update to the latest version

Pro tips for beginners

  • Be specific. "Add email validation to the signup form" beats "fix the form".
  • Break big tasks into steps, or press Shift+Tab twice for plan mode and let VinaX plan first.
  • Run /init once per project so VinaX remembers your build and test commands.
  • Press ? in an empty prompt to see every shortcut.

VinaX Code needs Node.js 20 or newer. Everything else is optional: git, ripgrep (faster search), and ffmpeg (video attachments). After installing, run vinax doctor to check your setup.

macOS

brew install node git ripgrep ffmpeg   # or download Node from nodejs.org
npm install -g vinax-code
vinax
  • Works in Terminal.app, iTerm2, Ghostty, WezTerm, Warp and editor terminals.
  • Your terminal's own text selection: hold Fn (Terminal.app) or Option (iTerm2) while dragging. Plain drags use VinaX's select-to-copy.
  • Option+Enter for a newline in Terminal.app needs Settings → Profiles → Keyboard → Use Option as Meta key; \ Enter always works.
  • iTerm2, Ghostty and WezTerm also show a progress indicator in the tab while VinaX works.

Windows (PowerShell, Windows Terminal, cmd)

winget install OpenJS.NodeJS.LTS Git.Git
npm install -g vinax-code
vinax
  • Windows Terminal is recommended (full screen, mouse, colors, progress in the tab). PowerShell and cmd windows work too.
  • Install Git for Windows: VinaX runs commands in Git Bash, like Claude Code, because models write bash. Without it, VinaX falls back to PowerShell and tells the model so.
  • Copy uses the Windows clipboard, and Ctrl+V pastes screenshots as [Image #1].

If PowerShell says "running scripts is disabled on this system", run Set-ExecutionPolicy -Scope CurrentUser RemoteSigned once, or start VinaX with vinax.cmd.

WSL

Inside WSL, follow the Linux steps. VinaX detects WSL: copying goes to the Windows clipboard and links open in your Windows browser.

Linux (Ubuntu, Debian, Fedora, Arch)

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs git ripgrep ffmpeg wl-clipboard xclip
npm config set prefix ~/.npm-global && export PATH="$HOME/.npm-global/bin:$PATH"
npm install -g vinax-code
sudo dnf install -y nodejs git ripgrep ffmpeg wl-clipboard xclip
npm install -g vinax-code
sudo pacman -S nodejs npm git ripgrep ffmpeg wl-clipboard xclip
npm install -g vinax-code
  • Set an npm prefix in your home folder (as above) so installs and auto-updates never need sudo.
  • Copying uses wl-copy (Wayland) or xclip/xsel (X11); over SSH it goes through your terminal (OSC 52).

Kali Linux

sudo apt update && sudo apt install -y nodejs npm git ripgrep ffmpeg xclip
npm config set prefix ~/.npm-global && export PATH="$HOME/.npm-global/bin:$PATH"
npm install -g vinax-code
vinax
  • Run VinaX as your normal user, not root. Commands that need sudo always stop for your approval, even in auto mode.
  • If the packaged Node is older than 20, install Node 22 from NodeSource as shown for Debian.

Termux (Android)

pkg update && pkg install -y nodejs-lts git ripgrep ffmpeg termux-api
npm install -g vinax-code
vinax
  • Install the Termux:API app as well: VinaX uses it to copy to the Android clipboard and open links (to create API keys).
  • Use Termux's extra-keys row for Esc, Tab, Ctrl and the arrows. Full screen works; if you prefer Termux's own touch scrolling and selection, start with VINAX_FULLSCREEN=0 vinax.
  • VinaX finds Termux's bash automatically (Android has no /bin/bash).

VS Code, Cursor and other editors

Run vinax in the integrated terminal. For a bigger view, open the terminal in an editor tab: Terminal: Create New Terminal in Editor Area.

  • Mouse, full screen and select-to-copy work in the VS Code terminal. Hold Alt (Option on macOS, with terminal.integrated.macOptionClickForcesSelection on) for VS Code's own selection.
  • For Shift+Enter newlines, add this to keybindings.json:
{ "key": "shift+enter", "command": "workbench.action.terminal.sendSequence", "args": { "text": "\u001b\r" }, "when": "terminalFocus" }

The same works in Cursor, Windsurf and VSCodium. In JetBrains IDEs, use the built-in Terminal tool window.

tmux, SSH and containers

set -g mouse on              # wheel scrolling and select-to-copy in VinaX
set -g set-clipboard on      # let copies reach your local clipboard (OSC 52)
set -g allow-passthrough on  # tab progress indicator
  • Over SSH, copying travels through your terminal (OSC 52), so it lands on your own machine's clipboard.
  • In Docker or Codespaces: docker run -it --rm -v "$PWD":/work -w /work node:22 npx vinax-code.

What works where

TerminalFull screen & mouseSelect to copyTab progressCtrl+V images
macOS Terminal.app✔✔—✔
iTerm2 · Ghostty · WezTerm✔✔✔✔
Windows Terminal✔✔✔✔
PowerShell / cmd window✔✔—✔
VS Code · Cursor terminal✔✔—✔
Linux (GNOME, Konsole, Kitty…)✔✔Kitty/WezTerm✔ (wl-paste / xclip)
Termux✔✔ (Termux:API)——
tmux · SSH✔ (mouse on)✔ (OSC 52)passthroughlocal only

Something not working on your setup? Run vinax doctor: it shows the platform, terminal, shell, clipboard tool and ffmpeg it found.

Providerid (aliases)KeyDefault model
Groq · free tiergroqGROQ_API_KEYopenai/gpt-oss-120b
NVIDIA NIM · free tiernvidia (nim)NVIDIA_API_KEYmoonshotai/kimi-k2.6
OpenRouter · free modelsopenrouter (or)OPENROUTER_API_KEYnvidia/nemotron-3-super-120b-a12b:free
Gemini · free tier, paid once billing is ongemini (google)GEMINI_API_KEY (or GOOGLE_API_KEY)gemini-3.6-flash
Claudeanthropic (claude)ANTHROPIC_API_KEYclaude-opus-5-5
ChatGPTopenai (chatgpt)OPENAI_API_KEYgpt-5
VinaX proxyproxy (render)VINAX_RENDER_TOKEN + VINAX_RENDER_URLgroq/openai/gpt-oss-120b

Connecting a provider

Pick a provider in /provider (or Connect… in /model). If it has no key yet, VinaX asks how you want to get one:

╭──────────────────────────────────────────────────────────────╮
│ Connect NVIDIA NIM                                           │
│ Free tier available, no credit card needed.                  │
│                                                              │
│ ❯ 1. Open build.nvidia.com to create a key                   │
│      Opens https://build.nvidia.com in your browser          │
│   2. Paste an API key                                        │
│      Or set NVIDIA_API_KEY in your environment               │
╰──────────────────────────────────────────────────────────────╯

Option 1 opens the provider's key page in your browser; create a key there and paste it. VinaX checks the key before saving it, and asks again if the provider rejects it.

Choosing a model

/model shows models from every connected provider in one list, grouped by provider. Type to search, and pick any model: VinaX switches the provider and model together. For Groq, NVIDIA and OpenRouter only free models are shown: chat models that support tool calling, without embedding, speech, safety or batch models. Gemini shows every chat model and marks each one free tier or paid; one AI Studio key works on the free tier until billing is enabled on the project, and /cost estimates Gemini usage at paid-tier rates.

Select model
⌕ Type to search…
  Groq  free models
❯  1. openai/gpt-oss-120b ✔  recommended
   2. openai/gpt-oss-120b
  OpenRouter  free models
   3. nvidia/nemotron-3-super-120b-a12b:free  recommended
   4. google/gemma-4-31b-it:free
  Claude (Anthropic)
   5. claude-opus-5-5
  Not connected
   6. Connect NVIDIA NIM…
/model                       # all connected providers, free models for Groq · NVIDIA · OpenRouter
/model meta/llama-3.3-70b-instruct
/provider                    # switch provider, or connect a new one
/effort                      # off · low · medium · high · xhigh · max
/login groq gsk_...          # save a key without the dialog

Keys can also come from environment variables or a .env file (in the project or in ~/.vinax/.env).

Free models vary in how reliably they call tools. Good picks: Groq openai/gpt-oss-120b, NVIDIA moonshotai/kimi-k2.6, OpenRouter nvidia/nemotron-3-super-120b-a12b:free. On 429 and 5xx responses VinaX retries with backoff, honoring retry-after.

Automatic fallback

Free models have rate limits. When the model you're using hits its limit (or is retired), VinaX switches to another connected model and keeps working instead of making you wait:

> add a wind meter to the game                              
  ⎿  Rate limit reached on openai/gpt-oss-120b (Groq) · continuing with moonshotai/kimi-k2.6 (NVIDIA NIM)

Fallbacks use your other free providers (Groq, NVIDIA, OpenRouter, VinaX proxy). To also allow paid ones, or to set the order, list them in ~/.vinax/config.json:

{
  "fallbackModels": ["nvidia:moonshotai/kimi-k2.6", "openrouter:nvidia/nemotron-3-super-120b-a12b:free", "anthropic:claude-sonnet-5-5"],
  "autoFallback": true
}

Effort

/effort opens a Faster ↔ Smarter slider, like Claude Code. Use ←/→ (or click a level), Enter to save, or s to use it for this session only.

  Effort

        Faster                                   Smarter
        ────────────────────────▲────────────────────────     Ultracode  off
        low       medium       high       xhigh       max     Tab to toggle

                ~1.5x the estimated cost of medium (the default)

  ←/→ to adjust · Enter to confirm · s for this session only · Esc to cancel

Ultracode (Tab) makes VinaX split big tasks across parallel sub-agents and have a separate agent verify the result before it finishes. It uses more tokens.

Claude extras

With Claude you get adaptive thinking streamed live, the /effort levels, prompt caching, and thinking blocks preserved across tool calls. Claude Opus 5.5, Sonnet 5.5 and Fable 5.1 also get server-side refusal fallbacks; turn them off with /config set fallbacks false.

Custom endpoints

Override any provider's base URL with VINAX_<PROVIDER>_BASE_URL. For example, to use a self-hosted NIM container:

VINAX_NVIDIA_BASE_URL=http://localhost:8000/v1 vinax

Check your version

vinax --version        # 1.9.0 (VinaX Code)
vinax versions         # every published version, with the installed one marked

Inside a session, /status shows the installed version and whether a newer one exists.

Update to the latest version

vinax update
Current version: 1.1.0
Checking for updates…
New version available: 1.2.0 (current: 1.1.0)
Installing update via npm (global)…
✔ Successfully updated from 1.1.0 to 1.2.0

From inside a session, run /update. It shows what's available and asks before installing. Restart VinaX afterwards; continue your conversation with vinax -c.

Install a specific version

Pin a version, or roll back if a release causes problems:

vinax install 1.0.0    # install exactly this version
vinax install latest   # back to the newest release

Staying on an older version on purpose? Turn off Check for updates in /config so the update notice doesn't appear.

Auto-updates

Like Claude Code, VinaX keeps itself up to date. When it was installed with npm install -g, it checks npm at startup and every 30 minutes, and installs a new version in the background while you work. When it's done, the footer under the input box says:

────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────
  ? for shortcuts                  ✓ Update installed · Restart to apply

Your current session keeps running the old version; the next vinax starts the new one. After an update, the first launch shows ✻ Updated to v1.2.0. Run /release-notes to see what changed.

If VinaX can't install the update itself (for example, it runs from a git checkout or npm needs sudo), it shows Update available instead, and you can run /update.

Turning it off

ToUse
Get notified but install manually/config → Auto-updates off, or DISABLE_AUTOUPDATER=1
Stop checking for updates entirely/config → Check for updates off, or VINAX_DISABLE_UPDATE_CHECK=1

Checks are skipped automatically in print mode and when CI is set.

How VinaX updates itself

Installed withWhat vinax update does
npm install -g vinax-codeRuns npm install -g vinax-code@latest. Auto-updates do this in the background.
A git checkout (npm link)Runs git pull --ff-only in the checkout (it stops if you have local changes). Auto-updates only notify.
npx vinax-codeNothing to update: npx fetches the version you ask for, e.g. npx vinax-code@latest

If npm reports EACCES, it can't write to its global folder. Re-run with sudo, or switch npm to a user-owned prefix.

The input box

You type into a box between two rules at the bottom of the screen. Output scrolls above it, and the box stays put while VinaX works, so you can keep typing. Messages sent while VinaX is busy are queued and shown in gray until it's ready.

────────────────────────────────────────────────────────────
> /mo
────────────────────────────────────────────────────────────
  /model   Set the AI model for VinaX Code
  /memory  Edit VinaX memory files
  • / opens the command menu. Type to fuzzy-filter, ↑↓ to move, Tab to complete, Enter to run.
  • @ opens fuzzy file search across the project (git-aware). Pick a file, folder or image to attach it.
  • ! at the start switches to bash mode: the command runs in your shell and its output is shared with VinaX.
  • # at the start switches to memory mode: the note is saved to the memory file you pick.
  • ? in an empty box shows all shortcuts.

Full screen, scrolling and copying

Like Claude Code, VinaX runs full screen. The conversation, the spinner and the input box are drawn by VinaX, and when you exit your terminal is back exactly as it was, with only the command to resume:

~/my-project % vinax
~/my-project %
Resume this session with:
vinax --resume 74fa9cd2-8456-42a7-82a7-9a1fba6163e4
~/my-project % 
  • Scroll the conversation with the mouse wheel or PageUp / PageDown. The input box stays at the bottom, and new output doesn't move the view while you're reading further up. Sending a message jumps back to the bottom.
  • While scrolled up, the message you're reading about stays pinned at the top (click it to jump there), and a Jump to bottom (click) ↓ button appears; it turns into 1 new message (click) ↓ when new output arrives.
  • Select to copy: drag over text with the mouse. It's highlighted and copied to your clipboard straight away (Copied 120 characters to clipboard).
  • For your terminal's own selection instead, hold Option (iTerm2) or Fn (Terminal.app) while dragging.
  • Prefer output in your normal scrollback? Turn off Full screen in /config (applies next start) or set VINAX_FULLSCREEN=0.

Attachments: drag and drop

Drag files from Finder (or any file manager) into the terminal, or press Ctrl+V to paste a screenshot. Each file becomes a chip in the input box:

────────────────────────────────────────────────────────────
> [Image #1] [Video #2] [PDF #3] what's wrong with this screen?
────────────────────────────────────────────────────────────

> [Image #1] [Video #2] [PDF #3] what's wrong with this screen? 
  ⎿  [Image #1] bug.png
  ⎿  [Video #2] repro.mov · 0:42 · 8 frames · transcript 96 words
  ⎿  [PDF #3] spec.pdf · 2.1 MB
FileHow VinaX reads it
Images (png, jpg, gif, webp)Sent to the model as images (use a vision-capable model)
Video (mp4, mov, mkv, webm…)Up to 8 frames sampled evenly plus a transcript of the audio. Needs ffmpeg (brew install ffmpeg)
Audio (mp3, wav, m4a, ogg, flac…)Transcribed with Whisper: free on Groq, or OpenAI
PDFRead natively by Claude, ChatGPT and OpenRouter; for other models VinaX extracts the text
Other filesInserted as @path mentions

Mouse

  • Click an option in any picker or dialog to choose it, click a command in the / menu to run it, and click a level on the /effort slider.
  • Drag to select and copy text; double-click copies a word, triple-click a whole line.
  • Scroll the conversation with the mouse wheel.

Pasting text

Big pastes stay compact in the input box, like Claude Code: [Pasted text #1 +40 lines]. Press Ctrl+E or double-click the chip to expand it and read or edit the full text. The full text is always what gets sent.

Prompt suggestions

After a reply, VinaX suggests a likely next step in grey inside the input box: yes, go ahead when it asked a question, continue with: … while todos remain, /smoke after code changes, commit these changes once they're tested. Press → or Tab to accept it, or just type something else. Turn it off in /config (Prompt suggestions).

Watching VinaX work

Like Claude Code, you can always see what VinaX is doing:

● I'll check the build, then fix the failing test.

  Listed 1 directory, read 3 files, searched for 2 patterns

● Run the test suite · 1m 18s
  ⎿  $ npm test -- --runInBand
     (ctrl+b to run in background)

✻ Julienning… (9m 34s · ↓ 45.1k tokens · esc to interrupt · thinking)
  ⎿  The failure is in the date parser, so I'll read its tests first.
  • Thinking shows its latest sentence under the spinner; afterwards it collapses to ∴ Thought for 52s (Ctrl+O shows it all).
  • Running commands get a live box with the description, elapsed time and the command. Press Ctrl+B to move a long one to the background; it keeps running (see /bashes) and VinaX carries on.
  • Reads, searches and commands that succeed collapse into one line, like Read 3 files, ran 2 shell commands or Pushed to main. Edits (with diffs), errors and agents stay in full. Ctrl+O shows full output; turn compacting off in /config.
  • In auto mode, actions VinaX approved for you are marked Allowed by auto mode.
  • /btw <question> asks a quick side question about the conversation without interrupting the current work.
  • The footer shows esc to interrupt · ← 2 agents while VinaX works; press ← (with an empty input) to see what each running agent is doing.

How output looks

> run the tests                                             

● Bash(npm test)
  ⎿  PASS  src/signup.test.ts
     Tests: 12 passed, 12 total
     … +18 lines (ctrl+o to expand)

● All 12 tests pass. The new validation rejects empty emails
  and passwords shorter than 8 characters.
  • Your messages appear with a gray background.
  • Each tool call is a ● line, Label(detail), with its result under ⎿. A blinking bullet means it's still running; red means it failed.
  • Edits show a colored diff with line numbers. Long output is clipped; press Ctrl+O for full output.
  • The spinner shows elapsed time and tokens. Press Esc to interrupt and tell VinaX what to do instead.
  • When the model reasons first, you see ∴ Thought for 5s (ctrl+o to show thinking). Press Ctrl+O to read the full thinking.
  • Settings commands (/model, /provider, /effort, /status, /cost, /context…) open right away even while VinaX is working. Other messages wait in the queue.

Permission prompts

Before editing a file or running a command that isn't read-only, VinaX shows what it wants to do and asks:

╭──────────────────────────────────────────────────────────╮
│ Bash command                                             │
│                                                          │
│   npm install zod                                        │
│   Install the validation library                         │
│                                                          │
│ Do you want to proceed?                                  │
│ ❯ 1. Yes                                                 │
│   2. Yes, and don't ask again for npm install commands    │
│   3. No, and tell VinaX what to do differently (esc)     │
╰──────────────────────────────────────────────────────────╯

File edits show the diff in the same box, with option 2 reading "Yes, allow all edits during this session (shift+tab)". Press a number, or move with the arrow keys and press Enter. See Permissions & modes for the rules behind these prompts.

Questions and plans

When VinaX needs decisions, it asks up to four questions at once, one tab each, like Claude Code. Pick options (Space for multi-select), choose Type something. to answer in your own words, and review everything on the Submit tab:

←  ☒ Renderer   ☐ Extras   ✔ Submit  →

Which rendering library should the game use?

❯ 1. Three.js
     Mature, huge ecosystem
  2. Babylon.js
     Batteries included
  3. Type something.

The answers are echoed as ● User answered VinaX's questions. In plan mode VinaX presents a plan and asks "Ready to code?" before changing anything.

Todos and progress

For multi-step work VinaX keeps a todo list. While it works, the list sits under the spinner and the spinner names the current step. Press Ctrl+T to hide or show it.

✳ Running the tests… (12s · ↓ 2.1k tokens · esc to interrupt · ctrl+t to hide todos)
  ⎿  ☒ Read the signup form
     ☐ Run the tests
     ☐ Update the docs

Long lists stay compact: the current task stays in view and the rest folds into … +3 completed and … +5 pending (press Ctrl+O to see everything). If the provider rate-limits VinaX, a live countdown appears under the spinner: Rate limited · retrying in 27s (attempt 2/4).

Sub-agents

When VinaX delegates to a sub-agent, the agent's name appears in its own color with its latest tool uses. Several agents running in parallel are shown as one tree with live tool counts and tokens:

● Running 3 agents… (ctrl+o to expand)
   ├─ Explore(Find auth code) · 4 tool uses · 10.1k tokens
   │  ⎿  Read(src/auth/session.ts)
   ├─ Plan(Design the API) · 2 tool uses · 3.2k tokens
   │  ⎿  Search(pattern: "router")
   └─ test-runner(Run the tests) · 0 tool uses
      ⎿  Initializing…

● Explore(Find auth code)
  ⎿  Done (7 tool uses · 18.2k tokens · 24s)

Terminal title and tab progress

VinaX names your terminal window after the task, like Claude Code. After your first message the model writes a short title, and the glyph animates while VinaX works:

my-project — ✳ Fix signup form validation — vinax — 120×32

In iTerm2, Ghostty, WezTerm and Windows Terminal, the tab also shows a progress indicator while VinaX works, and a paused state while it waits for your approval. Turn the title off in /config (Terminal title) or with VINAX_DISABLE_TERMINAL_TITLE=1; turn the progress indicator off with VINAX_DISABLE_PROGRESS=1.

Pickers

Many commands open a picker instead of printing text: /model, /provider, /effort, /resume, /rewind, /config, /permissions, /memory, /mcp, /agents, /login. The current value has a ✔. Long lists are searchable: just type.

Modes

Press Shift+Tab to cycle modes. The current mode is shown under the input box:

FooterMode
? for shortcutsDefault: ask before edits and commands
⏵⏵ accept edits onFile edits inside the workspace are auto-approved
⏸ plan mode onRead-only research, then a plan for you to approve
⏵⏵ auto mode onEverything runs without asking, except risky actions
⏵⏵ bypass permissions onEverything is auto-approved (only after /yolo or --yolo)
CommandPurpose
/add-dirAdd a new working directory
/agentsManage sub-agents, or create one from a description
/btw <question>Ask a quick side question without interrupting the current work
/bashesList and kill background tasks
/clearClear conversation history and free up context (aliases /reset, /new)
/compact [instructions]Clear history but keep a summary in context (also runs automatically at 80%)
/configOpen the settings panel (alias /settings)
/contextVisualize context usage as a colored grid
/copy [n]Copy the last response, or one of its code blocks, to the clipboard (/copy 2 for the one before)
/costTotal cost, API and wall time, lines changed and usage by model
/doctorDiagnose your installation, providers and MCP servers
/effort [level]Faster ↔ Smarter slider (low → max) with an Ultracode toggle
/exitExit, with the command to resume this conversation (aliases /quit, /q)
/export [file]Export the conversation to Markdown
/helpShow help and available commands
/hooksShow configured hooks
/initCreate a VINAX.md with your project's commands and architecture
/login · /logoutSave or remove a provider API key
/mcpManage MCP servers and see their tools
/memoryOpen a memory file in your editor
/model [id]Pick a model from any connected provider (free models only for Groq, NVIDIA and OpenRouter)
/permissionsManage allow, ask and deny rules (alias /allowed-tools)
/plan · /yoloToggle plan mode, or bypass-permissions mode
/provider [id]Switch the AI provider
/proxy [url] [token]Connect to a VinaX proxy (alias /render)
/release-notes [version]See what changed in recent versions
/resume [all]Resume a conversation (alias /continue)
/review [PR | branch | path]Review a pull request or your pending changes
/rewindRestore code and/or conversation to an earlier point (also Esc Esc)
/security-reviewSecurity review of the pending changes on the current branch
/smoke [focus]Smoke-test the project with the smoke-tester agent
/skillsList available skills
/settingsGrouped settings panel: theme, model, permissions, updates and more (also /config)
/themeChange the color theme, with a live preview
/statusVersion, session, provider, model, MCP, memory and settings sources
/todosList the current todo items
/updateCheck for a new version and install it

Your own custom commands and skills show up in the same menu, marked (project), (user) or (skill).

General controls

ShortcutDescription
EscInterrupt VinaX, close a menu, or reject a permission prompt
Esc EscClear the input; with an empty input, open /rewind
Ctrl+CInterrupt or clear input; press twice to exit
Ctrl+DExit (press twice, with an empty input)
Shift+TabCycle modes: default → accept edits → plan
Ctrl+OToggle verbose tool output
Ctrl+TShow or hide the todo list
Ctrl+LClear the screen (keeps the conversation)
Ctrl+GEdit the prompt in $EDITOR
Ctrl+VPaste a screenshot from the clipboard as [Image #n]
Ctrl+BMove the running command to the background
← (empty input)Show the running agents and what they're doing
Ctrl+E · double-clickExpand a [Pasted text #n] chip into the full text
→ · TabAccept the grey prompt suggestion (empty input)
Click in the input boxMove the cursor there
↑ / ↓Browse prompt history (saved in ~/.vinax/history)
PageUp / PageDown · mouse wheelScroll the conversation (full screen)
Drag with the mouseSelect text and copy it to the clipboard (full screen)
Double-click · triple-clickCopy a word · copy a line
Drop files on the terminalAttach images, video, audio and PDFs

Editing

ShortcutDescription
Option+Enter · Shift+Enter · \ EnterInsert a newline
Ctrl+_Undo
Ctrl+A / EStart / end of line
Ctrl+W · Option+⌫Delete the previous word
Ctrl+U / KDelete to start / end of line
PasteLarge pastes collapse to [Pasted text #1 +40 lines] and expand when sent

Copying text

Drag over any text with the mouse to copy it. Or run /copy to put VinaX's last response on your clipboard. If it contains code, pick the full response or a single code block. Over SSH it copies through your terminal (OSC 52). You can also select text with the mouse as usual.

Quick prefixes

PrefixDescription
/Slash command menu
@Attach a file, folder or image (fuzzy search)
!Bash mode: run a command yourself and share the output
#Save a note to memory
ultrathinkAnywhere in a prompt: maximum reasoning effort for that turn

VinaX asks before every file edit (showing the diff first) and before shell commands that aren't on a small read-only allowlist (ls, git status, git diff, …).

Answering a prompt

  • 1. Yes: allow this once.
  • 2. Yes, and don't ask again: for commands, saves a rule such as Bash(npm test:*) to .vinax/settings.local.json. For edits, switches to accept-edits mode for the session.
  • 3. No (or Esc): VinaX stops and waits for you to say what to do differently.

Permission modes

ModeBehavior
defaultAsk before edits and non-read-only commands
acceptEditsAuto-approve file edits inside the working directories
planRead-only research; VinaX presents a plan to approve before any change
autoCommands and edits run without asking; risky actions still stop for approval (see below)
bypassPermissionsApprove everything (--yolo / --dangerously-skip-permissions)

Bypass mode runs every command without asking. Only use it in a sandbox or container you don't mind losing.

Auto mode

Like Claude Code's auto mode, VinaX works without interruptions and only stops for actions that are hard to undo or reach outside your project. The prompt says why:

Bash command

Auto mode paused: this command runs as administrator (sudo)

  sudo npm install -g vite

Do you want to proceed?
❯ 1. Yes

Auto mode still asks before: sudo; recursive deletes outside the project (rm -rf ~/…, /, ..); git push and force-push; git reset --hard, git clean -f; piping a download into a shell (curl … | sh); publishing (npm publish, docker push, releases); disk, shutdown and system-service commands; database drops; terraform/kubectl changes; and edits to files outside the project. Your deny and ask rules always apply.

In accept edits mode, plain file-system commands inside the project (mkdir, touch, cp, mv) run without asking too.

Permission rules

Rules use Claude Code's syntax. Deny rules always win, and allow rules on a chained command must cover every part of it.

Bash                      # every shell command
Bash(npm run test:*)      # any command starting with "npm run test"
Edit(src/**)              # edits under src/ (also Write, MultiEdit, NotebookEdit)
Read(~/.ssh/**)           # paths in your home directory
WebFetch(domain:docs.rs)
mcp__github               # every tool from the "github" MCP server

Manage rules with the /permissions picker, or directly:

/permissions allow "Bash(npm test:*)"
/permissions deny "Bash(git push:*)"
vinax -p "run the tests" --allowedTools "Bash(npm test:*) Edit"

Folder trust

The first time you run VinaX in a folder it asks whether you trust the files there. Trusted folders are remembered in ~/.vinax/config.json. Project MCP servers from .mcp.json need a separate approval.

Memory files

These files are loaded into every conversation, so VinaX follows them on every turn:

FileUse it for
~/.vinax/VINAX.mdYour personal preferences, across all projects
VINAX.md (or CLAUDE.md / AGENTS.md)Team instructions, checked in. Parent folders are read too.
VINAX.local.mdPersonal, git-ignored project notes
  • /init generates a VINAX.md with build, test and architecture notes.
  • Start a message with # to add a note; VinaX asks which file to save it to.
  • /memory opens a memory file in your editor.
  • Write @path/to/file.md inside a memory file to import another file.

Sessions

Conversations are saved automatically to ~/.vinax/sessions. When you resume, the earlier conversation is replayed on screen.

vinax -c            # continue the most recent conversation in this folder
vinax -r            # choose one from a searchable list
vinax -r 3f2a       # resume by session ID prefix

Checkpoints and rewind

Every file edit is checkpointed. Press Esc Esc (or run /rewind), pick a message, then choose Restore code and conversation, Restore conversation or Restore code. Your old prompt is put back in the input box to edit and resend.

FilesRead (also images and notebooks), Write, Edit, MultiEdit, NotebookEdit
SearchLS, Glob, Grep (uses ripgrep when installed)
ShellBash, plus background shells with BashOutput and KillShell
WebWebFetch, WebSearch (DuckDuckGo; Brave or Tavily when BRAVE_API_KEY / TAVILY_API_KEY is set)
AgenticTask (sub-agents), TodoWrite, Skill, AskUserQuestion, ExitPlanMode
MCPEvery tool from connected MCP servers, named mcp__server__tool

VinaX must read a file before editing it, and an edit is refused if the file changed on disk since it was read.

vinax -p "update the changelog for the last 5 commits" \
  --allowedTools "Bash(git log:*) Edit" \
  --output-format json \
  --max-turns 20

Piped input is included in the prompt, and if there's no terminal VinaX switches to print mode automatically:

cat build.log | vinax -p "why did this build fail?"

Output formats

FormatOutput
textThe final answer only (default)
jsonOne result object: result, session_id, num_turns, duration_ms, duration_api_ms, usage, total_cost_usd, permission_denials
stream-jsonNewline-delimited events: system/init, partial, assistant, tool_result, result

Without a terminal nobody can approve prompts, so any action needing approval is denied and the model is told why, unless a rule or mode allows it.

Settings files

Merged in this order, later files winning. .claude/settings*.json is read too, so existing Claude Code rules and hooks work.

  1. ~/.vinax/settings.json: user
  2. .vinax/settings.json: project (commit it)
  3. .vinax/settings.local.json: personal (git-ignored)
  4. --settings <file>
{
  "permissions": {
    "allow": ["Bash(npm run test:*)", "Edit(src/**)"],
    "deny": ["Bash(rm -rf:*)", "Read(.env)"],
    "ask": ["Bash(git push:*)"],
    "defaultMode": "default",
    "additionalDirectories": ["../shared-lib"]
  },
  "hooks": { },
  "mcpServers": { },
  "statusLine": { "type": "command", "command": "git branch --show-current" },
  "env": { "NODE_ENV": "development" }
}

App settings

Run /settings (or /config) to open the settings panel. It's grouped into Appearance (theme, full screen, terminal title, compact output, thinking), Model (provider, model, effort, Ultracode, switching models on limits), Permissions, Updates and Conversation. Type to search, Enter to toggle or change a value, Esc to close. Values are stored in ~/.vinax/config.json and can also be set directly:

/config set autoCompact false
/config set maxTokens 16000
KeyDescription
autoCompact · autoCompactRatioSummarize automatically when context is this full (default 0.8)
showThinkingStream the model's thinking in gray italics
permissionModeDefault mode for new sessions
effortDefault reasoning effort
maxTurns · maxTokens · contextWindowLimits and overrides
fallbacksClaude refusal fallbacks on or off
updateCheckCheck for new versions (default true)
autoUpdatesInstall new versions in the background (default true)
autoFallback · fallbackModelsSwitch to another model when one hits its limit (default on); optional ordered list of "provider:model"
ultracodeParallel sub-agents and verification for big tasks (set with /effort → Tab)
compactToolsCollapse successful reads, searches and commands into one summary line (default true)
promptSuggestionsSuggest the next prompt after each reply (default true)
fullscreenRun full screen with built-in scrolling and select-to-copy (default true)
terminalTitleSet the terminal window title to the current task (default true)

Themes

Run /theme to pick the text style that suits your terminal, with a live preview, like Claude Code:

ThemeBest for
Dark modeDark terminal backgrounds (default)
Light modeLight terminal backgrounds
Dark / Light mode (colorblind-friendly)Blue for additions and success, orange for removals and errors
Dark / Light mode (ANSI colors only)Terminals with their own color scheme, or limited color support

The choice is saved as theme in ~/.vinax/config.json; VINAX_THEME=light overrides it for one run.

Status line

A statusLine command receives session JSON on stdin (model, cwd, cost, lines changed) and its first line of output is shown under the input box.

Events: PreToolUse, PostToolUse, UserPromptSubmit, Stop, SubagentStop, SessionStart, SessionEnd, Notification and PreCompact.

{
  "hooks": {
    "PostToolUse": [
      { "matcher": "Edit|Write|MultiEdit",
        "hooks": [{ "type": "command", "command": "npx prettier --write \"$(jq -r .tool_input.path)\"" }] }
    ],
    "PreToolUse": [
      { "matcher": "Bash",
        "hooks": [{ "type": "command", "command": "./scripts/check-command.sh" }] }
    ]
  }
}

How hooks work

  • Each hook receives JSON on stdin: tool_name, tool_input, tool_response, prompt, session_id, cwd, …
  • Exit code 2 blocks the action, and stderr is sent to the model.
  • A hook can print JSON instead, such as {"decision":"block","reason":"…"} or hookSpecificOutput.permissionDecision (allow, deny or ask).
  • Plain stdout from UserPromptSubmit and SessionStart hooks is added as context.
  • Matchers are regular expressions over tool names: Bash, Read, Edit, Write, MultiEdit, Glob, Grep, LS, WebFetch, WebSearch, Task, mcp__….

Hooks run with your user's permissions. Review hook commands from a project before you trust its folder.

vinax mcp add filesystem npx -y @modelcontextprotocol/server-filesystem .
vinax mcp add -s project -t http linear https://mcp.linear.app/mcp -H "Authorization: Bearer $LINEAR_KEY"
vinax mcp add-json db '{"command":"uvx","args":["mcp-server-sqlite","--db-path","app.db"]}'
vinax mcp list
vinax mcp remove filesystem

Scopes

ScopeStored inShared
local (default).vinax/settings.local.jsonNo
project.mcp.jsonYes, via git
user~/.vinax/settings.jsonAll your projects

VinaX supports stdio and streamable-HTTP servers, and ${VAR} / ${VAR:-default} in configs. In a session, /mcp lists servers with their status and tools.

Servers from a project's .mcp.json need your approval before they start: use this and all future servers, use this server, or continue without it.

The task tool runs a sub-agent with its own context window and returns its final report. Several can run in parallel, each shown as a live tool line with its latest steps.

Automatic task assignment

Like Claude Code, VinaX decides on its own when to delegate: broad searches go to Explore, bigger designs to Plan, independent parts run as parallel agents, finished features are checked by the smoke-tester, and large changes get a code-reviewer pass. Your own agents are used whenever their description matches; write "Use proactively" in the description to encourage it.

Built-in agentWhat it does
general-purposeResearch and multi-step tasks
ExploreFast read-only codebase search
PlanRead-only implementation planning
smoke-testerBuilds the project, runs the tests, starts the app and checks it with HTTP requests and headless Chrome, then reports PASS/FAIL with evidence. Run it yourself with /smoke
code-reviewerReviews pending changes for bugs, edge cases, security and missing tests

Your own agents

---
name: test-runner
description: Runs the test suite and fixes failing tests. Use after code changes.
tools: Read, Edit, Bash, Grep, Glob
model: inherit
color: pink
---
You are a test specialist. Run the tests, diagnose failures, fix them, and report what changed.

color is optional: red, blue, green, yellow, purple, orange, pink or cyan. Without it, each agent gets a stable color from its name. See how agents look while they run.

Or run /agents and choose Create new agent to have VinaX write one from a description.

---
description: Fix a GitHub issue
argument-hint: <issue-number>
allowed-tools: Bash(gh issue view:*)
---
Fix issue #$1. Details: !`gh issue view $1`

Run it with /fix-issue 123.

  • $ARGUMENTS and $1…$9 insert the arguments.
  • !`cmd` inserts a command's output; @file attaches a file.
  • Subfolders become namespaces: frontend/component.md is /frontend:component.

A skill is a folder with a SKILL.md (plus optional scripts). VinaX loads it when a task matches its description, and you can run it directly as /skill-name.

---
name: release
description: Cut a new release (version bump, changelog, git tag)
---
1. Run ./scripts/bump.sh <major|minor|patch>
2. Update CHANGELOG.md from git log since the last tag
3. Commit, tag, and show the user the push command

VinaX looks for agents, commands and skills under .vinax/ and ~/.vinax/, and also reads .claude/ and ~/.claude/, so existing ones work as-is.

The proxy holds the provider API keys, so any machine running VinaX only needs the proxy's URL and one access token. Connect once and every model behind the proxy is available.

/proxy https://vinax-proxy.onrender.com <VINAX_PROXY_TOKEN>
/provider proxy
/model

Run /proxy without arguments to enter the URL and token in a dialog.

Model routing

Choose the upstream provider with a model prefix:

Model idRouted to
groq/openai/gpt-oss-120bGroq
nvidia/moonshotai/kimi-k2.6NVIDIA NIM
openrouter/nvidia/nemotron-3-super-120b-a12b:freeOpenRouter
gemini/gemini-3.6-flash (or google/…)Gemini, through its OpenAI-compatible endpoint
anthropic/claude-sonnet-5-5 (or claude/…)Anthropic, through its OpenAI-compatible endpoint
openai/gpt-5 (or chatgpt/…)OpenAI
no prefixDEFAULT_PROVIDER, otherwise the first provider that has a key

Every /v1 endpoint needs Authorization: Bearer <VINAX_PROXY_TOKEN>.

EndpointDescription
GET /This documentation
GET /v1/modelsModels from every configured provider, prefixed (for example groq/…). Add ?provider=groq for one provider.
POST /v1/chat/completionsChat completions, including streaming and tool calls. Responses pass through from the upstream provider.

Examples

curl https://vinax-proxy.onrender.com/v1/chat/completions \
  -H "Authorization: Bearer $VINAX_PROXY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"model":"groq/openai/gpt-oss-120b","messages":[{"role":"user","content":"Hello!"}]}'
from openai import OpenAI

client = OpenAI(base_url="https://vinax-proxy.onrender.com/v1", api_key=VINAX_PROXY_TOKEN)
reply = client.chat.completions.create(
    model="groq/openai/gpt-oss-120b",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(reply.choices[0].message.content)
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://vinax-proxy.onrender.com/v1", apiKey: process.env.VINAX_PROXY_TOKEN });
const reply = await client.chat.completions.create({
  model: "groq/openai/gpt-oss-120b",
  messages: [{ role: "user", content: "Hello!" }],
});
console.log(reply.choices[0].message.content);

Errors

StatusMeaning
401Invalid or missing proxy token
400Unknown provider prefix, or that provider isn't enabled on the proxy
404Unknown path
otherPassed through from the upstream provider (for example 429 rate limits)

Run /release-notes inside VinaX to see these in your terminal, and vinax update to get the latest.

1.9.0

October 22, 2026

  • /theme: Dark, Light, colorblind-friendly and ANSI-only themes with a live preview
  • /settings: one grouped, searchable panel for appearance, model, permissions, updates and conversation settings

1.8.0

October 22, 2026

  • Pinned prompt bar while scrolling; click it to jump to that message
  • "Jump to bottom" / "1 new message" button while scrolled up
  • Footer shows esc to interrupt · ← 2 agents; ← shows what each agent is doing
  • ❯ prompt and Updated file (+7 -3) diff headers, like Claude Code

1.7.0

October 22, 2026

  • Live thinking preview under the spinner, so long thinking isn't a blank screen
  • A live box for running commands; Ctrl+B sends one to the background
  • Compact summaries like "Read 3 files, ran 2 shell commands" and "Pushed to main"; Ctrl+O shows everything
  • "Allowed by auto mode" marks, tips under the spinner, and /btw for side questions

1.6.0

October 22, 2026

  • Runs everywhere: Git Bash or PowerShell on Windows, Termux and WSL support, and a new Install & platforms guide
  • The todo list stays up to date while VinaX works
  • Pasted text chips expand with Ctrl+E or a double-click; click in the input box to move the cursor
  • Claude-style prompt suggestions after each reply: → accepts
  • Automated tests on Linux, macOS and Windows before every release

1.5.1

October 22, 2026

  • Fixed: updates could reinstall the current version when npm's cached "latest" tag was stale; VinaX now installs the exact new version

1.5.0

October 22, 2026

Auto mode

  • New auto mode: everything runs without asking except risky actions (sudo, deletes outside the project, git push, curl | sh, publishing…), with the reason shown
  • Accept-edits mode also runs mkdir, touch, cp and mv inside the project
  • Long commands are folded in permission prompts; "don't ask again" names the real command, not cd

Questions and agents

  • Up to 4 questions at once in a tabbed form with a review step, like Claude Code
  • VinaX assigns work to sub-agents on its own; new smoke-tester and code-reviewer agents and /smoke

1.4.0

October 22, 2026

Full screen, like Claude Code

  • VinaX runs full screen: when you exit, your terminal is exactly as it was, with just the command to resume
  • Scroll with the mouse wheel or PageUp/PageDown while the input box stays put
  • Select to copy: drag over text and it's copied to the clipboard
  • Turn it off with /config → Full screen, or VINAX_FULLSCREEN=0

Attachments: drag and drop

  • Drop images, videos, audio and PDFs into the terminal as [Image #1]-style chips; Ctrl+V pastes a screenshot
  • Videos are read as frames plus a transcript; audio is transcribed with Whisper; PDFs are read natively or as text

Model fallback, effort and mouse

  • When a model hits its limit, VinaX switches to another model and keeps working
  • /effort is a Faster ↔ Smarter slider with an Ultracode toggle
  • Click options in pickers and menus; double-click copies a word, triple-click a line
  • The welcome screen shows VinaX CLI by SIRIMILLA VINAY and always the model in use

Other

  • Thinking is collapsed to ∴ Thought for 5s (ctrl+o to show thinking); Ctrl+O shows the full, word-wrapped text
  • Settings commands like /model, /provider and /status open right away while VinaX is working
  • Resumed conversations get a terminal title that describes the conversation
  • Fixed: the spinner disappeared after a command showed its own short spinner

1.3.0

October 22, 2026

Models and providers

  • /model lists models from every connected provider, grouped and searchable; picking one switches provider and model together
  • Groq, NVIDIA and OpenRouter show free, tool-capable chat models only
  • Connecting a provider can open its key page in your browser, and the key is checked before it's saved
  • New defaults: NVIDIA moonshotai/kimi-k2.6, OpenRouter nvidia/nemotron-3-super-120b-a12b:free

Terminal

  • /copy copies the last response or a code block to the clipboard
  • /exit says goodbye and shows how to resume, like Claude Code
  • The todo list under the spinner stays compact, keeping the current task in view
  • Rate limits show a live countdown: Rate limited · retrying in 27s (attempt 2/4)

1.2.0

October 22, 2026

Auto-updates

  • New versions install in the background, checked at startup and every 30 minutes, then ✓ Update installed · Restart to apply
  • Turn it off with /config → Auto-updates, or DISABLE_AUTOUPDATER=1

Terminal, agents and progress

  • The terminal window title shows the task (✳ Fix login validation) and animates while VinaX works
  • A progress indicator in the terminal tab (iTerm2, Ghostty, WezTerm, Windows Terminal)
  • The todo list shows under the spinner, which names the current step; Ctrl+T hides it
  • Colored sub-agents with live tool uses and tokens, and a "Running N agents…" tree for parallel agents

Releases

  • New versions are published to npm automatically from GitHub, with a tagged GitHub release

1.1.0

October 22, 2026

New terminal interface

  • Claude Code-style input box with a / command menu, @ fuzzy file search, ! bash mode and # memory mode
  • Press ? for shortcuts; Shift+Tab cycles modes; messages typed while VinaX works are queued
  • Live tool calls with ● bullets and ⎿ results, colored diffs, and a spinner with elapsed time and tokens
  • Permission prompts with Yes / Yes, don't ask again / No, and diffs for file edits
  • Multiple-choice questions from the model, with a "Type something." option
  • Folder trust prompt on first run in a directory, and a provider picker for first-time setup

Pickers and reports

  • /model, /provider, /effort, /resume, /rewind, /config, /permissions, /memory, /mcp, /agents, /login and /logout open interactive pickers
  • /context shows a usage grid; /cost shows API and wall time, lines changed and usage by model
  • Resumed conversations are replayed on screen

Versions and updates

  • vinax update and /update install the latest version
  • vinax install <version> installs a specific version; vinax versions lists them
  • A notice at startup when a new version is available, and /release-notes

Other

  • /proxy (formerly /render, which still works) connects to a VinaX proxy
  • Without a terminal, VinaX runs in print mode automatically

1.0.0

October 22, 2026

  • First release on npm as vinax-code

Commands

CommandDescription
vinaxStart an interactive session
vinax "query"Start a session with a first prompt
vinax -p "query"Answer once and exit (print mode)
cat file | vinax -p "query"Include piped content
vinax -cContinue the most recent conversation in this folder
vinax -r [id]Resume a conversation by ID, or pick from a list
vinax mcp …add, add-json, remove, list, get
vinax doctorCheck VinaX, Node, git, ripgrep, providers and MCP servers
vinax updateUpdate to the latest version
vinax install [version]Install a specific version, or latest
vinax versionsList published versions

Flags

FlagDescription
--provider <id>groq · nvidia · openrouter · gemini · claude · chatgpt · proxy
-m, --model <id>Model for this session
--effort <level>off · low · medium · high · xhigh · max
--permission-mode <mode>default · acceptEdits · plan · auto · bypassPermissions
--dangerously-skip-permissions, --yoloAuto-approve every tool call
--allowedTools / --disallowedToolsPermission rules, e.g. "Bash(npm test:*) Edit"
--add-dir <path>Extra directory VinaX may edit
--mcp-config <file>Load MCP servers from a JSON file
--append-system-prompt / --system-promptAdd to, or replace, the base instructions
--max-turns <n>Limit agent turns
--output-format <fmt>text · json · stream-json (print mode)
--settings <file>Extra settings JSON file
--verboseShow tool activity in print mode
-v, --version · -h, --helpVersion and usage

Environment variables

VariablePurpose
GROQ_API_KEY · NVIDIA_API_KEY · OPENROUTER_API_KEY · GEMINI_API_KEY · ANTHROPIC_API_KEY · OPENAI_API_KEYProvider keys
VINAX_RENDER_URL · VINAX_RENDER_TOKENVinaX proxy
VINAX_<PROVIDER>_BASE_URLOverride a provider's endpoint
BRAVE_API_KEY · TAVILY_API_KEYOptional web search backends
VINAX_HOMEConfig folder (default ~/.vinax)
VINAX_DISABLE_UPDATE_CHECKSet to 1 to turn off update checks
DISABLE_AUTOUPDATERSet to 1 to notify about updates without installing them
VINAX_FULLSCREEN=0Use inline mode instead of full screen
VINAX_SHELLShell for commands (default: $SHELL; Git Bash or PowerShell on Windows)
VINAX_DISABLE_TERMINAL_TITLE · VINAX_DISABLE_PROGRESSTurn off the window title or the tab progress indicator
EDITOR · VISUALEditor for Ctrl+G and /memory
SymptomFix
"No provider configured"Set a key (for example GROQ_API_KEY), or run vinax in a terminal to use the setup picker.
Rate limited (429)Free tiers have per-minute limits. VinaX retries automatically; switch with /provider or /model if it keeps happening.
Model ignores tools or replies with JSON as textPick a stronger tool-calling model; see Providers & models.
"Context left until auto-compact" warningRun /compact, or /clear to start fresh. /context shows what's using space.
401 Invalid or missing proxy tokenRun /proxy again and enter the correct access token.
Proxy: Provider "x" is not configuredThat provider isn't enabled on the proxy. Use another model prefix, for example groq/….
The first proxy request is slowThe proxy may be starting up after being idle. Wait up to a minute and try again.
"Update available" notice keeps appearingRun vinax update. To stay on an older version, turn off Check for updates in /config.
vinax update fails with EACCESnpm can't write to its global folder. Use sudo npm install -g vinax-code@latest, or set a user-owned npm prefix.
Can't select text the usual wayFull screen handles the mouse: drag to select and copy. For your terminal's own selection hold Option (iTerm2) or Fn (Terminal.app), or turn off Full screen in /config.
Garbled boxes or colorsUse a modern terminal (iTerm2, Ghostty, WezTerm, Windows Terminal, VS Code) with a UTF-8 locale.
Anything elseRun vinax doctor: it checks Node, git, ripgrep, every provider and MCP servers.

Still stuck? Open an issue on GitHub with the output of vinax doctor.

VinaX CLI by SIRIMILLA VINAY · MIT License GitHub · npm