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.
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 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.
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:
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
Terminal
Full screen & mouse
Select to copy
Tab progress
Ctrl+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)
passthrough
local only
Something not working on your setup? Run vinax doctor: it shows the platform, terminal, shell, clipboard tool and ffmpeg it found.
Provider
id (aliases)
Key
Default model
Groq · free tier
groq
GROQ_API_KEY
openai/gpt-oss-120b
NVIDIA NIM · free tier
nvidia (nim)
NVIDIA_API_KEY
moonshotai/kimi-k2.6
OpenRouter · free models
openrouter (or)
OPENROUTER_API_KEY
nvidia/nemotron-3-super-120b-a12b:free
Gemini · free tier, paid once billing is on
gemini (google)
GEMINI_API_KEY (or GOOGLE_API_KEY)
gemini-3.6-flash
Claude
anthropic (claude)
ANTHROPIC_API_KEY
claude-opus-5-5
ChatGPT
openai (chatgpt)
OPENAI_API_KEY
gpt-5
VinaX proxy
proxy (render)
VINAX_RENDER_TOKEN + VINAX_RENDER_URL
groq/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…Groqfree models❯1.openai/gpt-oss-120b✔recommended2. openai/gpt-oss-120b
OpenRouterfree models3. nvidia/nemotron-3-super-120b-a12b:free recommended4. google/gemma-4-31b-it:free
Claude (Anthropic)5. claude-opus-5-5
Not connected6. 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:
/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.
EffortFasterSmarter────────────────────────▲────────────────────────Ultracodeoff
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 --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
To
Use
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 with
What vinax update does
npm install -g vinax-code
Runs 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-code
Nothing 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:
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:
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
PDF
Read natively by Claude, ChatGPT and OpenRouter; for other models VinaX extracts the text
Other files
Inserted 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.jsMature, huge ecosystem2. Babylon.js
Batteries included3. 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:
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:
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:
Footer
Mode
? for shortcuts
Default: ask before edits and commands
⏵⏵ accept edits on
File edits inside the workspace are auto-approved
⏸ plan mode on
Read-only research, then a plan for you to approve
⏵⏵ auto mode on
Everything runs without asking, except risky actions
⏵⏵ bypass permissions on
Everything is auto-approved (only after /yolo or --yolo)
Command
Purpose
/add-dir
Add a new working directory
/agents
Manage sub-agents, or create one from a description
/btw <question>
Ask a quick side question without interrupting the current work
/bashes
List and kill background tasks
/clear
Clear conversation history and free up context (aliases /reset, /new)
/compact [instructions]
Clear history but keep a summary in context (also runs automatically at 80%)
/config
Open the settings panel (alias /settings)
/context
Visualize 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)
/cost
Total cost, API and wall time, lines changed and usage by model
/doctor
Diagnose your installation, providers and MCP servers
/effort [level]
Faster ↔ Smarter slider (low → max) with an Ultracode toggle
/exit
Exit, with the command to resume this conversation (aliases /quit, /q)
/export [file]
Export the conversation to Markdown
/help
Show help and available commands
/hooks
Show configured hooks
/init
Create a VINAX.md with your project's commands and architecture
/login · /logout
Save or remove a provider API key
/mcp
Manage MCP servers and see their tools
/memory
Open a memory file in your editor
/model [id]
Pick a model from any connected provider (free models only for Groq, NVIDIA and OpenRouter)
/permissions
Manage allow, ask and deny rules (alias /allowed-tools)
Restore code and/or conversation to an earlier point (also EscEsc)
/security-review
Security review of the pending changes on the current branch
/smoke [focus]
Smoke-test the project with the smoke-tester agent
/skills
List available skills
/settings
Grouped settings panel: theme, model, permissions, updates and more (also /config)
/theme
Change the color theme, with a live preview
/status
Version, session, provider, model, MCP, memory and settings sources
/todos
List the current todo items
/update
Check 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
Shortcut
Description
Esc
Interrupt VinaX, close a menu, or reject a permission prompt
EscEsc
Clear the input; with an empty input, open /rewind
Ctrl+C
Interrupt or clear input; press twice to exit
Ctrl+D
Exit (press twice, with an empty input)
Shift+Tab
Cycle modes: default → accept edits → plan
Ctrl+O
Toggle verbose tool output
Ctrl+T
Show or hide the todo list
Ctrl+L
Clear the screen (keeps the conversation)
Ctrl+G
Edit the prompt in $EDITOR
Ctrl+V
Paste a screenshot from the clipboard as [Image #n]
Ctrl+B
Move the running command to the background
← (empty input)
Show the running agents and what they're doing
Ctrl+E · double-click
Expand a [Pasted text #n] chip into the full text
→ · Tab
Accept the grey prompt suggestion (empty input)
Click in the input box
Move the cursor there
↑ / ↓
Browse prompt history (saved in ~/.vinax/history)
PageUp / PageDown · mouse wheel
Scroll the conversation (full screen)
Drag with the mouse
Select text and copy it to the clipboard (full screen)
Double-click · triple-click
Copy a word · copy a line
Drop files on the terminal
Attach images, video, audio and PDFs
Editing
Shortcut
Description
Option+Enter · Shift+Enter · \Enter
Insert a newline
Ctrl+_
Undo
Ctrl+A / E
Start / end of line
Ctrl+W · Option+⌫
Delete the previous word
Ctrl+U / K
Delete to start / end of line
Paste
Large 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
Prefix
Description
/
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
ultrathink
Anywhere 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
Mode
Behavior
default
Ask before edits and non-read-only commands
acceptEdits
Auto-approve file edits inside the working directories
plan
Read-only research; VinaX presents a plan to approve before any change
auto
Commands and edits run without asking; risky actions still stop for approval (see below)
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 commandAuto 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:
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:
File
Use it for
~/.vinax/VINAX.md
Your personal preferences, across all projects
VINAX.md (or CLAUDE.md / AGENTS.md)
Team instructions, checked in. Parent folders are read too.
VINAX.local.md
Personal, 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 EscEsc (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)
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
Key
Description
autoCompact · autoCompactRatio
Summarize automatically when context is this full (default 0.8)
showThinking
Stream the model's thinking in gray italics
permissionMode
Default mode for new sessions
effort
Default reasoning effort
maxTurns · maxTokens · contextWindow
Limits and overrides
fallbacks
Claude refusal fallbacks on or off
updateCheck
Check for new versions (default true)
autoUpdates
Install new versions in the background (default true)
autoFallback · fallbackModels
Switch to another model when one hits its limit (default on); optional ordered list of "provider:model"
ultracode
Parallel sub-agents and verification for big tasks (set with /effort → Tab)
compactTools
Collapse successful reads, searches and commands into one summary line (default true)
promptSuggestions
Suggest the next prompt after each reply (default true)
fullscreen
Run full screen with built-in scrolling and select-to-copy (default true)
terminalTitle
Set 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:
Theme
Best for
Dark mode
Dark terminal backgrounds (default)
Light mode
Light 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.
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 agent
What it does
general-purpose
Research and multi-step tasks
Explore
Fast read-only codebase search
Plan
Read-only implementation planning
smoke-tester
Builds 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-reviewer
Reviews 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.
!`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.
Unknown provider prefix, or that provider isn't enabled on the proxy
404
Unknown path
other
Passed 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
Command
Description
vinax
Start 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 -c
Continue 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 doctor
Check VinaX, Node, git, ripgrep, providers and MCP servers
Run /compact, or /clear to start fresh. /context shows what's using space.
401 Invalid or missing proxy token
Run /proxy again and enter the correct access token.
Proxy: Provider "x" is not configured
That provider isn't enabled on the proxy. Use another model prefix, for example groq/….
The first proxy request is slow
The proxy may be starting up after being idle. Wait up to a minute and try again.
"Update available" notice keeps appearing
Run vinax update. To stay on an older version, turn off Check for updates in /config.
vinax update fails with EACCES
npm 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 way
Full 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 colors
Use a modern terminal (iTerm2, Ghostty, WezTerm, Windows Terminal, VS Code) with a UTF-8 locale.
Anything else
Run vinax doctor: it checks Node, git, ripgrep, every provider and MCP servers.