Documentation

Vinexus Docs

Learn how to install Vinexus, connect to your VMs, use AI Developer, and get the most out of every feature.

Getting Started

Vinexus is a native desktop IDE built for developers who work on remote virtual machines. Instead of browser-based tools or raw SSH sessions, Vinexus gives you a professional development environment — Monaco editor, integrated terminal, file explorer, git, and deploy tools — all connected directly to your VM over SSH.

What is Vinexus?

Vinexus is a desktop application (macOS, Windows, and Linux) that establishes a direct SSH connection to your virtual machine. There is no cloud infrastructure in the middle — your SSH credentials stay on your local machine, files are read and written via SFTP, and the terminal is a genuine PTY session on your server. Vinexus stores nothing about your code or credentials.

System Requirements

  • macOS: macOS 12 (Monterey) or later. Apple Silicon (M1/M2/M3/M4) and Intel both supported.
  • Windows: Windows 10 version 1903 or later. x86_64 architecture.
  • Linux: Any distribution with glibc 2.17+. Includes Ubuntu, Debian, Fedora, Arch, Alpine, and more. x86_64 and ARM64 supported.
  • RAM: 4 GB minimum, 8 GB recommended.
  • Network: Internet connection required to reach your VM via SSH.

Download

Download the latest Vinexus installer from the download page. Choose the installer for your platform:

  • macOS Apple Silicon: Vinexus-mac-arm64.dmg
  • macOS Intel: Vinexus-mac-x64.dmg
  • Windows: Vinexus-Setup.exe
  • Linux: Vinexus.AppImage or .deb / .rpm

Installing on macOS

Installing Vinexus on macOS takes about two minutes. Follow these steps to get set up.

Step 1: Download the .dmg

Download the correct macOS build from the download page:

  • Apple Silicon (M1/M2/M3/M4): Vinexus-mac-arm64.dmg
  • Intel Macs: Vinexus-mac-x64.dmg

If you prefer Terminal, run:

bash
/bin/bash -c "$(curl -fsSL https://vinexus.space/install.sh)"
The install script automatically detects whether your Mac is Apple Silicon or Intel and downloads the correct build.

Update later from Terminal

To update an existing Vinexus install to the newest release from Terminal, run:

bash
/bin/bash -c "$(curl -fsSL https://vinexus.space/update.sh)"
The update script replaces the app in /Applications with the latest published build for your Mac.

Step 2: Install to Applications

Open the downloaded .dmg file. In the Finder window that appears, drag the Vinexus icon to the Applications folder shortcut. Wait for the copy to complete, then eject the disk image.

Step 3: First Launch (Gatekeeper)

On first launch, macOS Gatekeeper will block Vinexus because it was downloaded from the internet. To open it:

  1. In Finder, navigate to your Applications folder.
  2. Right-click (or Control-click) on Vinexus.
  3. Click Open in the context menu.
  4. In the dialog that appears, click Open again to confirm.

You only need to do this once. After the first launch, Vinexus will open normally.

Alternative: System Settings approach

If you see a dialog saying the app cannot be opened, go to System Settings → Privacy & Security. Scroll down to the Security section and click Open Anyway next to the Vinexus message.

Alternative: Command-line quarantine removal

bash
xattr -dr com.apple.quarantine /Applications/Vinexus.app
This command is safe and simply tells macOS that you explicitly trust this application. It is equivalent to clicking "Open Anyway" in System Settings.

Step 4: Keychain Access Prompt

On first launch, macOS may show a dialog like: "Vinexus wants to use your confidential information stored in 'Vinexus Safe Storage' in your keychain."

Enter your macOS login password if prompted, then click Always Allow. This allows Vinexus to securely store credentials and app settings using the macOS keychain. It normally appears only once.

If you click Deny or dismiss this dialog, Vinexus may appear stuck on a black screen. If this happens, quit the app and reopen it — the prompt will appear again.

Installing on Windows

Vinexus on Windows installs like any standard application. The setup wizard handles everything automatically.

Step 1: Download the installer

Download Vinexus-Setup.exe from the download page.

Step 2: Run the installer

Double-click Vinexus-Setup.exe to launch the installer. Click through the setup wizard — accept the license agreement, choose an installation folder (the default is recommended), and click Install. The installer will create Start Menu and Desktop shortcuts automatically.

Windows Defender SmartScreen

Windows may show a SmartScreen warning the first time you run the installer. To proceed:

  1. Click More info on the SmartScreen dialog.
  2. Click Run anyway.

Windows Defender Firewall

On first launch, Windows may ask whether to allow Vinexus through the firewall. Click Allow access — Vinexus needs outbound access to establish SSH connections to your VM.

winget (coming soon)

powershell
winget install Vinexus.Desktop
winget installation is coming soon. For now, use the .exe installer from the download page.

Installing on Linux

Vinexus runs on any Linux distribution with glibc 2.17 or later. This includes Ubuntu, Debian, Fedora, Arch Linux, openSUSE, Alpine (via compatibility layer), and any other mainstream distro. Both x86_64 and ARM64 (including Raspberry Pi 4+) are supported.

AppImage (Universal — recommended)

The AppImage works on any distro with no installation required. Download it, mark it executable, and run it.

bash
# Download the AppImage
curl -Lo Vinexus.AppImage https://download.vinexus.dev/latest/Vinexus.AppImage

# Mark it executable
chmod +x Vinexus.AppImage

# Run it
./Vinexus.AppImage

To integrate it into your application launcher, move it to ~/.local/bin/ and create a .desktop entry.

Debian / Ubuntu (.deb)

bash
# Download the .deb package
curl -Lo vinexus.deb https://download.vinexus.dev/latest/Vinexus.deb

# Install with dpkg
sudo dpkg -i vinexus.deb

# Fix any missing dependencies
sudo apt-get install -f

# Launch
vinexus

Fedora / RHEL / CentOS (.rpm)

bash
# Download the .rpm package
curl -Lo vinexus.rpm https://download.vinexus.dev/latest/Vinexus.rpm

# Install with rpm
sudo rpm -i vinexus.rpm

# Or using dnf (auto-resolves dependencies)
sudo dnf install vinexus.rpm

# Launch
vinexus

Arch Linux (AUR)

bash
# Using yay
yay -S vinexus-desktop

# Using paru
paru -S vinexus-desktop

Required Dependencies

Most systems have these already. If Vinexus fails to start, install:

bash
# Ubuntu / Debian
sudo apt-get install libgtk-3-0 libnotify4 libnss3 libxss1 libxtst6 xdg-utils

# Fedora / RHEL
sudo dnf install gtk3 libnotify nss libXScrnSaver libXtst xdg-utils
Vinexus connects to your remote VM over SSH — the Linux kernel version of the host running Vinexus does not affect compatibility with your server. Any kernel, any distro.

Setting Up Your Cloud VM

Vinexus connects to any Linux server accessible via SSH. Here is how to set up a cloud VM with the three most popular providers.

AWS EC2

  1. Open the EC2 Console and click Launch Instance.
  2. Choose Ubuntu Server 22.04 LTS (free tier eligible on t2.micro).
  3. Under Key pair, create a new key pair or select an existing one. Download the .pem file — you will need it to connect.
  4. Under Network settings, create a Security Group that allows SSH (port 22) from your IP only. Run curl ifconfig.me in your terminal to find your current public IP.
  5. Launch the instance and wait for it to reach the running state.
bash
# Fix key permissions (required on macOS/Linux)
chmod 400 my-key.pem

# Test your connection
ssh -i my-key.pem ubuntu@<your-ec2-public-ip>

DigitalOcean Droplet

  1. In the DigitalOcean console, click Create → Droplets.
  2. Choose Ubuntu 22.04 (LTS) and a Basic plan (the $6/mo shared CPU is fine for most projects).
  3. Under Authentication, select SSH Key and add your public key.
  4. Choose a data center region close to you and click Create Droplet.
bash
# Connect as root (DigitalOcean default)
ssh root@<droplet-ip>

Any VPS or Self-Hosted Server

Vinexus works with any SSH-accessible server. Make sure SSH is running and your firewall allows port 22.

bash
# Check if SSH is running on your server
sudo systemctl status ssh

# Start SSH if it's not running
sudo systemctl start ssh
sudo systemctl enable ssh

# Find your server's public IP
curl ifconfig.me

If you do not have an SSH key yet, generate one on your local machine:

bash
# Generate a new SSH key (on your local machine)
ssh-keygen -t ed25519 -C "vinexus"

# Copy public key to your server
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@<server-ip>

# Or manually append to authorized_keys on the server:
echo "$(cat ~/.ssh/id_ed25519.pub)" >> ~/.ssh/authorized_keys

IP Whitelisting

IP whitelisting restricts SSH access to your VM to only your specific IP address. This is one of the most effective defenses against brute-force attacks. Since Vinexus connects directly from your machine — no Vinexus servers in the middle — you only need to whitelist your own computer's public IP.

Find Your Public IP

bash
# Run this on your local machine (the one running Vinexus)
curl ifconfig.me

Linux ufw (Ubuntu / Debian)

bash
# Allow SSH only from your IP
sudo ufw allow from <YOUR_IP> to any port 22

# Enable the firewall (if not already enabled)
sudo ufw enable

# Verify the rules
sudo ufw status
If your ISP gives you a dynamic IP address, your IP will change periodically. When this happens, you will lose SSH access and will need to update the firewall rule. Consider using a static IP or allowlisting a /24 CIDR range if you always connect from the same network.

AWS Security Groups

  1. Open the EC2 console and navigate to Security Groups.
  2. Select the security group attached to your instance.
  3. Click Edit inbound rules → Add rule.
  4. Set Type to SSH, Port to 22.
  5. Under Source, select My IP — AWS will auto-fill your current IP.
  6. Click Save rules.

DigitalOcean Firewall

  1. Go to Networking → Firewalls → Create Firewall.
  2. Under Inbound Rules, add: Type SSH, Sources set to your IP address.
  3. Apply the firewall to your droplet and click Create Firewall.
Because Vinexus connects directly from your desktop, you only ever need to whitelist the IP of the machine running Vinexus — not any Vinexus server IPs.

Connecting to Your VM

Once your VM is running and your firewall is configured, connecting with Vinexus takes about 30 seconds.

Step-by-Step Connection

  1. Open Vinexus and click New Connection (or press Cmd/Ctrl+N).
  2. Fill in the connection details:
    • Host: Your VM's public IP address (e.g., 203.0.113.42)
    • Port: 22 (default SSH port)
    • Username: ubuntu for Ubuntu/AWS, root for DigitalOcean, or your custom username
  3. Choose authentication:
    • SSH Key: Browse to your private key file (.pem or id_ed25519) — recommended
    • Password: Enter your SSH password
  4. Click Connect. Vinexus opens the file explorer, editor, and terminal simultaneously.
SSH Key authentication is strongly recommended. It is more secure than passwords and eliminates the need to type credentials on every connection.

Troubleshooting Connection Issues

Connection refused:

  • Check that SSH is running: sudo systemctl status ssh
  • Verify your security group / firewall allows port 22 from your IP

Permission denied (publickey):

  • Verify the username is correct for your server
  • Check key permissions: chmod 600 ~/.ssh/id_ed25519
  • Ensure the public key is in ~/.ssh/authorized_keys on the server

Timeout / no route to host:

  • Confirm the IP is correct and the VM is running
  • Run curl ifconfig.me to verify your current public IP has not changed

AI Developer

AI Developer is Vinexus's built-in coding assistant for users who want help building an app directly inside their connected project. It is designed to be approachable for first-time builders: describe what you want in plain English, and AI Developer can inspect your codebase, make the changes, and explain what it did in simple terms.

Best for first-time users. Connect to your VM first, then open the AI Developer panel in Vinexus so the agent can work inside the real project you want to build.

How to use it

  1. Open Vinexus and connect to the VM that holds your app or project.
  2. Open the AI Developer panel from the bottom area of the IDE.
  3. Paste a clear prompt in plain English describing the app, feature, or fix you want.
  4. Let AI Developer inspect the project first, then apply the changes in the existing codebase.
  5. Review the summary and test steps it gives you after the work is done.

Copy-and-paste starter prompt

text
You are my AI Developer inside Vinexus and I am a beginner building my application for the first time.

Please guide me clearly and do the work inside the project step by step.

What I want from you:
1. First inspect the project and explain in simple words what this app currently does.
2. Tell me the best next step to build the feature I want.
3. Then implement the feature for me end to end inside the existing codebase.
4. Keep the design clean, modern, and production-ready.
5. Reuse the current project structure instead of rewriting everything.
6. If you need to create files, components, routes, database changes, or styling, do it for me.
7. After coding, check for obvious errors and tell me exactly what changed.
8. Finish by giving me simple testing steps I can follow.

Important rules:
- Do not only give advice. Make the changes in the project.
- Keep explanations short, clear, and non-technical where possible.
- If something is unclear, make the safest reasonable assumption and continue.
- Make the result feel like a real product, not a rough demo.

My app idea or task:
[Replace this line with what you want to build in plain English.]

What to ask for

  • “Build me a landing page and signup flow for my AI startup.”
  • “Create a dashboard where users can manage projects and team members.”
  • “Fix the login bug and explain what was wrong in simple words.”
Users who want to bring their own tools like Claude Code or Cursor CLI can still do that in the Vinexus terminal, but the built-in docs flow now starts with AI Developer.

Editor Features

Vinexus uses Monaco — the same editor engine that powers Visual Studio Code — for all code editing. Files are read and written directly over SFTP, so changes appear on your VM immediately when you save.

Syntax Highlighting

Monaco automatically detects the language from your file extension and applies syntax highlighting. 50+ languages are supported out of the box: JavaScript, TypeScript, Python, Go, Rust, Java, C/C++, Ruby, PHP, YAML, JSON, Markdown, and many more.

Keyboard Shortcuts

Save fileCtrl/Cmd + S
FindCtrl/Cmd + F
Find & ReplaceCtrl/Cmd + H
Go to lineCtrl/Cmd + G
Toggle commentCtrl/Cmd + /
Format documentShift + Alt + F
Multiple cursorsAlt + Click
Command paletteF1

Multi-File Tabs

Open multiple files and switch between them using tabs at the top of the editor. Unsaved changes are indicated by a dot on the tab. Tabs persist across reconnections.

Find & Replace

Press Ctrl/Cmd+F to open the find bar. Press Ctrl/Cmd+H for find-and-replace with regex support.

Terminal

The Vinexus terminal is a full PTY (pseudo-terminal) session over SSH. It behaves exactly like a native terminal — interactive programs, colors, tab completion, and Ctrl+C all work as expected.

Features

  • Full 256-color and true color support
  • Tab completion and command history (up/down arrows)
  • Scrollback buffer for reviewing previous output
  • Multiple terminal instances — open tabs as needed
  • Copy: Cmd+C (macOS) or Ctrl+Shift+C (Windows/Linux)
  • Paste: Cmd+V (macOS) or Ctrl+Shift+V (Windows/Linux)
  • Uses your VM's default shell (bash, zsh, fish, etc.)

Preventing SSH Timeouts

bash
# Edit ~/.ssh/config on your local machine
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

This sends a keepalive packet every 60 seconds and allows up to 3 missed responses before disconnecting.

Server Management & Deploy

The Vinexus Deploy panel gives you a one-click deployment pipeline that runs directly on your VM. It reads its configuration from a .vmide.json file you create on the server, then handles saving files, running validation checks, executing pre/post-deploy hooks, restarting your service, and automatically rolling back if anything fails.

How it works

When you click Deploy Now in the Deploy tab, Vinexus runs a pipeline of steps in order:

Save FilesWrites any unsaved editor files to the VM over SFTP.
ValidateRuns your preValidate commands (e.g. lint, type-check, unit tests). Stops the pipeline on any failure.
Create BackupBacks up key files before making changes so rollback has something to restore.
Deploy ServiceRuns preDeployHooks, restarts your service, then runs postDeployHooks.
Check StatusVerifies the service is running and healthy after the restart.
Fetch LogsPulls the first few log lines from your service to confirm it started cleanly.

If any step fails and autoRollbackOnFailure is enabled, Vinexus immediately triggers a rollback to restore the backed-up state. You can also manually trigger a rollback by clicking the Rollback button after a failed deploy.

Creating .vmide.json

Create a .vmide.json file on your VM. Vinexus searches for it in these locations (in order):

  • {rootPath}/.vmide.json — next to your project files
  • /home/{username}/.vmide.json
  • /root/.vmide.json

Place it in your project root for the cleanest setup:

bash
# Create in your project directory
nano /home/ubuntu/myapp/.vmide.json

Full .vmide.json schema

json
{
  "version": 1,

  "project": {
    "name": "My App",
    "rootPath": "/home/ubuntu/myapp",
    "type": "node"
  },

  "services": [
    {
      "name": "My App",
      "unit": "myapp",
      "type": "pm2",
      "restartCommand": "pm2 restart myapp",
      "statusCommand": "pm2 show myapp",
      "logCommand": "pm2 logs myapp --lines 50 --nostream"
    }
  ],

  "deploy": {
    "files": [],
    "preValidate": [
      "cd /home/ubuntu/myapp && npm run lint",
      "cd /home/ubuntu/myapp && npm test -- --passWithNoTests"
    ],
    "preDeployHooks": [
      "cd /home/ubuntu/myapp && git pull origin main",
      "cd /home/ubuntu/myapp && npm install --production",
      "cd /home/ubuntu/myapp && npm run build"
    ],
    "postDeployHooks": [
      "pm2 save"
    ],
    "autoRollbackOnFailure": true
  },

  "commands": [
    {
      "name": "View Logs",
      "command": "pm2 logs myapp --lines 100 --nostream",
      "dangerLevel": "safe",
      "requiresConfirmation": false
    },
    {
      "name": "Clear Cache",
      "command": "rm -rf /home/ubuntu/myapp/.cache",
      "dangerLevel": "moderate",
      "requiresConfirmation": true
    }
  ]
}

project

nameDisplay name shown in the Deploy panel header.rootPathAbsolute path to your project on the VM. Used as the working directory for deploy hooks.typeOne of: node, python, nginx, generic. Informational — affects log display hints.

services

Each entry in the services array describes a process Vinexus can restart and monitor. Supported type values:

pm2Node.js apps managed by PM2.
restartCommand: pm2 restart myapp
logCommand: pm2 logs myapp --lines 50 --nostream
systemdAny systemd service (nginx, gunicorn, etc.).
restartCommand: systemctl restart myapp
logCommand: journalctl -u myapp -n 50 --no-pager
dockerDocker containers.
restartCommand: docker restart myapp
logCommand: docker logs --tail=50 myapp
customAnything else — provide your own restart command.
restartCommand: supervisorctl restart myapp
logCommand: tail -n 50 /var/log/myapp.log

deploy hooks

preValidateCommands that must pass before deployment starts. Use for linting, type-checking, and tests. Any non-zero exit code aborts the deploy.preDeployHooksCommands that run after validation but before the service is restarted. Typically: git pull, npm install, npm run build.postDeployHooksCommands that run after the service is restarted successfully. Useful for cache clearing, saving process list state (pm2 save), etc.autoRollbackOnFailureSet to true to automatically restore the backup if any pipeline step fails. Recommended for production environments.filesList of file paths to explicitly save to the VM before deployment. Usually left empty — Vinexus saves open editor files automatically.

Example: Node.js app with PM2

json
{
  "version": 1,
  "project": { "name": "API Server", "rootPath": "/home/ubuntu/api", "type": "node" },
  "services": [{
    "name": "API",
    "unit": "api",
    "type": "pm2",
    "restartCommand": "pm2 restart api",
    "statusCommand": "pm2 show api",
    "logCommand": "pm2 logs api --lines 50 --nostream"
  }],
  "deploy": {
    "files": [],
    "preValidate": ["cd /home/ubuntu/api && npm run lint"],
    "preDeployHooks": [
      "cd /home/ubuntu/api && git pull origin main",
      "cd /home/ubuntu/api && npm install --production",
      "cd /home/ubuntu/api && npm run build"
    ],
    "postDeployHooks": ["pm2 save"],
    "autoRollbackOnFailure": true
  },
  "commands": []
}

Example: Python app with systemd

json
{
  "version": 1,
  "project": { "name": "Flask API", "rootPath": "/home/ubuntu/flask-api", "type": "python" },
  "services": [{
    "name": "Flask API",
    "unit": "flask-api",
    "type": "systemd",
    "restartCommand": "systemctl restart flask-api",
    "statusCommand": "systemctl status flask-api",
    "logCommand": "journalctl -u flask-api -n 50 --no-pager"
  }],
  "deploy": {
    "files": [],
    "preValidate": ["cd /home/ubuntu/flask-api && python -m pytest tests/ -q"],
    "preDeployHooks": [
      "cd /home/ubuntu/flask-api && git pull origin main",
      "cd /home/ubuntu/flask-api && pip install -r requirements.txt --quiet"
    ],
    "postDeployHooks": [],
    "autoRollbackOnFailure": true
  },
  "commands": []
}

Example: Nginx static site

json
{
  "version": 1,
  "project": { "name": "Website", "rootPath": "/var/www/html", "type": "nginx" },
  "services": [{
    "name": "Nginx",
    "unit": "nginx",
    "type": "systemd",
    "restartCommand": "nginx -t && systemctl reload nginx",
    "statusCommand": "systemctl status nginx",
    "logCommand": "tail -n 50 /var/log/nginx/error.log"
  }],
  "deploy": {
    "files": [],
    "preValidate": ["nginx -t"],
    "preDeployHooks": ["cd /var/www/html && git pull origin main"],
    "postDeployHooks": [],
    "autoRollbackOnFailure": false
  },
  "commands": []
}

Using the Deploy Panel

  1. Create a .vmide.json on your VM (see examples above).
  2. In Vinexus, click the Deploy tab in the bottom panel. If the config is detected, you will see a Deploy Now button.
  3. Click Deploy Now. The pipeline steps appear in real time as they run.
  4. Each step shows a green check on success or a red X with the error output on failure.
  5. If a deploy fails, click Rollback to restore the previous state. If autoRollbackOnFailure is enabled, this happens automatically.
  6. Click Clear to dismiss the result and return to the idle state.
If the Deploy panel shows "No .vmide.json found", create the config file on your VM and reconnect (or wait up to 30 seconds for the cache to refresh). Vinexus caches the config for 30 seconds after the first load.

Viewing Service Logs

After a deploy, Vinexus automatically pulls the first lines from your logCommand. You can also view live logs at any time from the terminal:

bash
# PM2 live logs
pm2 logs myapp

# systemd live logs
journalctl -u myapp -f

# Docker live logs
docker logs -f myapp

Troubleshooting

SSH Connection Issues

  • Is your VM running? Check the cloud provider console.
  • Is the IP address correct? VMs get new IPs when stopped and restarted on some providers.
  • Is SSH running on the VM? sudo systemctl status ssh
  • Does your firewall allow port 22 from your current IP? Run curl ifconfig.me and compare to your firewall rules.
  • For key auth: check permissions with ls -la ~/.ssh/ — private keys must be 600, the .ssh directory must be 700.

App Not Opening on macOS (Gatekeeper)

  1. Right-click Vinexus in Applications → Open
  2. Or: System Settings → Privacy & Security → Open Anyway
  3. Or: xattr -dr com.apple.quarantine /Applications/Vinexus.app

Black Screen on First Launch (macOS)

If Vinexus shows a black screen after installation, a macOS keychain prompt may have appeared behind the app window. The dialog may read: "Vinexus wants to use your confidential information stored in 'Vinexus Safe Storage' in your keychain."

  • Press Cmd+Tab or click the Vinexus icon in the Dock to check for a dialog behind the main window.
  • Enter your macOS login password if requested.
  • Click Always Allow on the keychain dialog. The app will load immediately.
  • If no dialog is visible, quit Vinexus (Cmd+Q) and reopen it — the prompt will appear again.

Linux: App won't start

  • Ensure the AppImage is executable: chmod +x Vinexus.AppImage
  • Install missing libraries: sudo apt-get install libgtk-3-0 libnss3 libxss1
  • Run from terminal to see error output: ./Vinexus.AppImage --no-sandbox

Terminal Not Responding

If the terminal stops responding, the SSH session may have timed out. Click the reconnect button or open a new terminal tab. Add a keepalive to your SSH config to prevent this.

Editor Not Saving

  • File permissions on the server — you need write access to the file
  • Disk space on the VM: df -h
  • Whether the SSH connection is still active (check the terminal)
If you continue to have issues, reach out at support@vinexus.dev. Include your OS version, Vinexus version, and the full error message.