Skip to main content

JSON Import Format

Use this guide to create JSON files for bulk importing hosts.

Connection Types

Termix supports multiple connection protocols. Set the connectionType field accordingly:

  • "ssh" (default) - SSH connections with terminal, file manager, tunneling, and Docker support
  • "rdp" - Remote Desktop Protocol (Windows) via Guacamole
  • "vnc" - Virtual Network Computing via Guacamole
  • "telnet" - Telnet connections via Guacamole

Note: RDP, VNC, and Telnet connections use Guacamole and require the Guacamole service to be configured. These connection types use password authentication only and do not support SSH-specific features like tunneling, file manager, or jump hosts.

Required Fields (All Connection Types)

  • ip - Host IP address or hostname (string)
  • port - Connection port (number, 1-65535)
  • username - Login username (string)
  • password - Login password (string)

SSH-Only: Authentication Fields

For SSH connections, use authType to specify the authentication method:

  • authType - Authentication type: "password", "key", "credential", or "none"

Password Authentication

  • password - Required if authType is "password" (string)

Key-Based Authentication

  • key - SSH private key content (string) - Required if authType is "key"
  • keyPassword - Optional key passphrase (string)
  • keyType - Key type (string): "auto" (default), "ssh-rsa", "ssh-ed25519", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "ssh-dss", "ssh-rsa-sha2-256", "ssh-rsa-sha2-512"

Credential Authentication

  • credentialId - ID of existing credential (number) - Required if authType is "credential"
    • Note: Credentials must be created in Termix before importing hosts that reference them. Find the ID in the ID: text inside the credentials viewer.
  • overrideCredentialUsername - Override username from credential (boolean, default: false) - Only applies when using credential authentication. When enabled, uses the username specified in the host instead of the credential's username.

None Authentication

  • No additional fields required. Used for hosts with certificate-based authentication or when authentication is handled externally.

RDP/VNC/Telnet-Only: Remote Desktop Fields

These fields only apply to rdp, vnc, and telnet connection types:

  • domain - Windows domain name (string, optional) - RDP only
  • security - RDP security mode (string, optional): "nla", "tls", "rdp", "any" - RDP only
  • ignoreCert - Ignore SSL certificate errors (boolean, default: false) - RDP/VNC
  • guacamoleConfig - Protocol-specific Guacamole settings object (see below)

Guacamole Configuration

The guacamoleConfig object accepts Guacamole connection parameters specific to each protocol.

RDP parameters:

  • "enable-drive" - Enable file sharing (boolean)
  • "drive-path" - Shared drive path on Termix server (string)
  • "create-drive-path" - Auto-create drive path (boolean)
  • "server-layout" - Keyboard layout, e.g. "en-us-qwerty" (string)
  • "resize-method" - Screen resize method: "display-update" or "reconnect" (string)
  • "console" - Connect to admin console session (boolean)

VNC parameters:

  • "color-depth" - Color depth in bits: 8, 16, 24, or 32 (number)
  • "cursor" - Cursor rendering: "local" or "remote" (string)
  • "read-only" - Read-only session (boolean)
  • "clipboard-encoding" - Clipboard encoding, e.g. "UTF-8" (string)
  • "swap-red-blue" - Fix incorrect colors (boolean)

Telnet parameters:

  • "color-scheme" - Terminal color scheme, e.g. "green-black" (string)
  • "font-name" - Font name, e.g. "monospace" (string)
  • "font-size" - Font size in points (number)
  • "scrollback" - Scrollback buffer lines (number)
  • "backspace" - Backspace key code (number)

Organization Fields

  • name - Display name (string, auto-generated as username@ip if not provided)
  • folder - Organization folder (string, default: "Default")
  • tags - Array of tag strings (array, default: [])
  • pin - Pin to top of host list (boolean, default: false)
  • notes - Optional notes about the host (string, optional)

Feature Toggles

  • enableTerminal - Enable terminal access (boolean, default: true)
  • enableTunnel - Enable SSH tunneling (boolean, default: true)
  • enableFileManager - Enable file manager access (boolean, default: true)
  • enableDocker - Enable Docker integration (boolean, default: false)
  • defaultPath - Default directory path for file manager (string, default: "/")

Control which features appear in the sidebar for quick access:

  • showTerminalInSidebar - Show terminal in sidebar (boolean, default: false)
  • showFileManagerInSidebar - Show file manager in sidebar (boolean, default: false)
  • showTunnelInSidebar - Show tunnel in sidebar (boolean, default: false)
  • showDockerInSidebar - Show Docker in sidebar (boolean, default: false)
  • showServerStatsInSidebar - Show server stats in sidebar (boolean, default: false)

Tunnel Configuration

Configure SSH port forwarding tunnels for this host:

  • tunnelConnections - Array of tunnel objects (array, default: [])
    • sourcePort - Local port on Termix server (number, 1-65535)
    • endpointPort - Remote port on target server (number, 1-65535)
    • endpointHost - Target host name (string) - Must match an existing host's name or username@ip format
    • maxRetries - Number of retry attempts on failure (number, 0-100, default: 3)
    • retryInterval - Delay between retries in seconds (number, 1-3600, default: 10)
    • autoStart - Auto-start tunnel on Termix launch (boolean, default: false)

Advanced Configuration

SOCKS5 Proxy Configuration

Configure SOCKS proxy for SSH connections (single proxy or proxy chain):

  • useSocks5 - Enable SOCKS5 proxy (boolean, default: false)
  • socks5Host - SOCKS5 proxy host address (string) - Used for single proxy mode
  • socks5Port - SOCKS5 proxy port (number, 1-65535, default: 1080) - Used for single proxy mode
  • socks5Username - SOCKS5 proxy username (string, optional) - Used for single proxy mode
  • socks5Password - SOCKS5 proxy password (string, optional) - Used for single proxy mode
  • socks5ProxyChain - Array of proxy nodes for proxy chaining (array, default: []) - Used for proxy chain mode
    • host - Proxy server hostname or IP (string)
    • port - Proxy server port (number, 1-65535)
    • type - Proxy protocol version: 4 for SOCKS4 or 5 for SOCKS5 (number)
    • username - Proxy authentication username (string, optional)
    • password - Proxy authentication password (string, optional)

Note: Choose either single proxy mode (using socks5Host, socks5Port, etc.) OR proxy chain mode (using socks5ProxyChain). If socks5ProxyChain has entries, it will be used instead of the single proxy settings.

Statistics Configuration

Configure host monitoring and statistics collection:

  • statsConfig - Statistics configuration object
    • enabledWidgets - Array of enabled widget types (array, default: ["cpu", "memory", "disk", "network", "uptime", "system", "login_stats"])
      • Available widgets: "cpu", "memory", "disk", "network", "uptime", "processes", "system", "login_stats"
    • statusCheckEnabled - Enable periodic status checks (boolean, default: true)
    • statusCheckInterval - Status check interval in seconds (number, 5-3600, default: 30)
    • metricsEnabled - Enable metrics collection (boolean, default: true)
    • metricsInterval - Metrics collection interval in seconds (number, 5-3600, default: 30)

Jump Hosts (Bastion/Proxy Hosts)

Configure multi-hop SSH connections through intermediate servers:

  • jumpHosts - Array of jump host objects (array, default: [])
    • hostId - ID of existing Termix host to use as jump host (number)
    • Find the ID in the ID: text inside the host viewer.

Quick Actions

Configure one-click commands using saved snippets:

  • quickActions - Array of quick action objects (array, default: [])
    • name - Display name for the action (string)
    • snippetId - ID of existing snippet to execute (number)
    • Note: Snippets must be created in Termix before importing hosts that reference them. Find the ID in the ID: text inside the SSH tool bar.

Terminal Configuration

Customize terminal appearance and behavior:

  • terminalConfig - Terminal configuration object (optional)
    • cursorBlink - Enable cursor blinking (boolean, default: true)
    • cursorStyle - Cursor style: "block", "underline", or "bar" (string, default: "block")
    • fontSize - Font size in pixels (number, 8-24, default: 14)
    • fontFamily - Font family name (string, default: "monospace")
    • letterSpacing - Letter spacing in pixels (number, -2 to 10, default: 0)
    • lineHeight - Line height multiplier (number, 1.0-2.0, default: 1.0)
    • theme - Color theme name (string, default: "termixDark")
    • scrollback - Scrollback buffer size in lines (number, 1000-100000, default: 10000)
    • bellStyle - Bell notification style: "none", "sound", "visual", or "both" (string, default: "none")
    • rightClickSelectsWord - Right-click selects word (boolean, default: false)
    • fastScrollModifier - Fast scroll modifier key: "alt", "ctrl", or "shift" (string, default: "alt")
    • fastScrollSensitivity - Fast scroll sensitivity (number, 1-10, default: 5)
    • minimumContrastRatio - Minimum contrast ratio for text (number, 1-21, default: 1)
    • backspaceMode - Backspace key mode: "normal" or "control-h" (string, default: "normal")
    • agentForwarding - Enable SSH agent forwarding (boolean, default: false)
    • environmentVariables - Array of environment variable objects (array, default: [])
      • key - Variable name (string)
      • value - Variable value (string)
    • startupSnippetId - ID of snippet to run on terminal startup (number, nullable)
    • autoMosh - Automatically use Mosh when available (boolean, default: false)
    • moshCommand - Custom Mosh command (string, default: "mosh")
    • sudoPasswordAutoFill - Auto-fill sudo password (boolean, default: false)
    • sudoPassword - Password for sudo auto-fill (string, optional)

Advanced SSH Settings

  • sudoPassword - Password for sudo commands (string, optional) - Can be used for automatic sudo authentication
  • forceKeyboardInteractive - Force keyboard-interactive authentication (boolean, default: false)

Example JSON Structure

Basic Structure

The import file must be a JSON object containing a "hosts" array, or the file can be an array of host objects directly.

{
"hosts": [
{
"name": "Web Server - Production",
"ip": "192.168.1.100",
"port": 22,
"username": "admin",
"authType": "password",
"password": "your_secure_password_here",
"folder": "Production",
"tags": ["web", "production", "nginx"],
"pin": true,
"notes": "Main production web server running Nginx. Contact ops@company.com for access.",
"enableTerminal": true,
"enableTunnel": false,
"enableFileManager": true,
"enableDocker": false,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": true,
"showServerStatsInSidebar": true,
"defaultPath": "/var/www"
},
{
"name": "Database Server",
"ip": "192.168.1.101",
"port": 22,
"username": "dbadmin",
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nYour SSH private key content here\n-----END OPENSSH PRIVATE KEY-----",
"keyPassword": "optional_key_passphrase",
"keyType": "ssh-ed25519",
"folder": "Production",
"tags": ["database", "production", "postgresql"],
"pin": false,
"notes": "PostgreSQL production database. Requires VPN access.",
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": false,
"enableDocker": false,
"showTerminalInSidebar": true,
"showTunnelInSidebar": true,
"showServerStatsInSidebar": true,
"tunnelConnections": [
{
"sourcePort": 5432,
"endpointPort": 5432,
"endpointHost": "Web Server - Production",
"maxRetries": 3,
"retryInterval": 10,
"autoStart": true
}
],
"statsConfig": {
"enabledWidgets": ["cpu", "memory", "disk", "network", "uptime"],
"statusCheckEnabled": true,
"statusCheckInterval": 30,
"metricsEnabled": true,
"metricsInterval": 30
}
},
{
"name": "Development Server",
"ip": "192.168.1.102",
"port": 2222,
"username": "developer",
"authType": "credential",
"credentialId": 1,
"overrideCredentialUsername": false,
"folder": "Development",
"tags": ["dev", "testing"],
"pin": false,
"notes": "Development environment for testing new features.",
"enableTerminal": true,
"enableTunnel": false,
"enableFileManager": true,
"enableDocker": true,
"showTerminalInSidebar": true,
"showFileManagerInSidebar": true,
"showDockerInSidebar": true,
"defaultPath": "/home/developer",
"sudoPassword": "dev_sudo_password"
},
{
"name": "Private Network Server",
"ip": "10.0.0.50",
"port": 22,
"username": "sysadmin",
"authType": "password",
"password": "secure_password",
"folder": "Infrastructure",
"tags": ["bastion", "jump-host"],
"notes": "Jump host for accessing internal network servers.",
"enableTerminal": true,
"enableTunnel": true,
"enableFileManager": true,
"jumpHosts": [
{
"hostId": 1
}
],
"quickActions": [
{
"name": "System Update",
"snippetId": 5
},
{
"name": "Check Disk Space",
"snippetId": 12
}
]
},
{
"name": "Certificate-Based Server",
"ip": "192.168.1.200",
"port": 22,
"username": "certuser",
"authType": "none",
"folder": "Secure Hosts",
"tags": ["cert-auth", "secure"],
"notes": "Uses certificate-based authentication. Cert must be installed in SSH agent.",
"enableTerminal": true,
"enableTunnel": false,
"enableFileManager": false,
"forceKeyboardInteractive": false
},
{
"name": "Server Behind Single Proxy",
"ip": "10.10.10.100",
"port": 22,
"username": "proxyuser",
"authType": "password",
"password": "secure_password",
"folder": "Proxied Hosts",
"tags": ["proxy", "socks5"],
"notes": "Accessible through corporate SOCKS5 proxy.",
"useSocks5": true,
"socks5Host": "proxy.example.com",
"socks5Port": 1080,
"socks5Username": "proxyauth",
"socks5Password": "proxypass"
},
{
"name": "Server Behind Proxy Chain",
"ip": "172.16.0.50",
"port": 22,
"username": "chainuser",
"authType": "key",
"key": "-----BEGIN OPENSSH PRIVATE KEY-----\nYour SSH private key content here\n-----END OPENSSH PRIVATE KEY-----",
"folder": "Proxied Hosts",
"tags": ["proxy-chain", "multi-hop"],
"notes": "Requires multi-hop proxy chain to access.",
"useSocks5": true,
"socks5ProxyChain": [
{
"host": "proxy1.example.com",
"port": 1080,
"type": 5,
"username": "proxy1user",
"password": "proxy1pass"
},
{
"host": "proxy2.internal.net",
"port": 1080,
"type": 5,
"username": "proxy2user",
"password": "proxy2pass"
},
{
"host": "proxy3.secure.local",
"port": 9050,
"type": 4
}
]
},
{
"name": "Customized Terminal Server",
"ip": "192.168.1.150",
"port": 22,
"username": "devops",
"authType": "password",
"password": "terminal_password",
"folder": "Development",
"tags": ["custom", "terminal"],
"notes": "Server with custom terminal configuration and startup scripts.",
"enableTerminal": true,
"terminalConfig": {
"cursorBlink": true,
"cursorStyle": "bar",
"fontSize": 16,
"fontFamily": "jetbrainsMono",
"letterSpacing": 0.5,
"lineHeight": 1.2,
"theme": "monokai",
"scrollback": 50000,
"bellStyle": "visual",
"rightClickSelectsWord": true,
"fastScrollModifier": "ctrl",
"fastScrollSensitivity": 7,
"minimumContrastRatio": 4,
"backspaceMode": "normal",
"agentForwarding": true,
"environmentVariables": [
{
"key": "NODE_ENV",
"value": "development"
},
{
"key": "API_URL",
"value": "https://api.dev.example.com"
}
],
"startupSnippetId": 3,
"autoMosh": true,
"moshCommand": "mosh --server=/usr/local/bin/mosh-server",
"sudoPasswordAutoFill": true,
"sudoPassword": "sudo_password_here"
}
},
{
"connectionType": "rdp",
"name": "Windows Server 2022",
"ip": "192.168.1.200",
"port": 3389,
"username": "Administrator",
"password": "windows_password",
"domain": "COMPANY",
"security": "nla",
"ignoreCert": false,
"folder": "Remote Desktop",
"tags": ["rdp", "windows", "production"],
"notes": "Production Windows Server with RDP access",
"guacamoleConfig": {
"enable-drive": true,
"drive-path": "/shared",
"create-drive-path": true,
"server-layout": "en-us-qwerty",
"resize-method": "display-update"
}
},
{
"connectionType": "vnc",
"name": "Ubuntu Desktop",
"ip": "192.168.1.201",
"port": 5900,
"username": "vncuser",
"password": "vnc_password",
"folder": "Remote Desktop",
"tags": ["vnc", "linux", "desktop"],
"notes": "Ubuntu desktop with VNC server",
"guacamoleConfig": {
"color-depth": 24,
"cursor": "remote",
"read-only": false,
"clipboard-encoding": "UTF-8"
}
},
{
"connectionType": "telnet",
"name": "Network Switch",
"ip": "192.168.1.254",
"port": 23,
"username": "admin",
"password": "switch_password",
"folder": "Infrastructure",
"tags": ["telnet", "network", "switch"],
"notes": "Legacy network switch with Telnet access",
"guacamoleConfig": {
"color-scheme": "green-black",
"font-name": "monospace",
"font-size": 12,
"scrollback": 1024,
"backspace": 127
}
}
]
}

Support

If you need help or want to request a feature with Termix, visit the Issues page, log in, and press New Issue. Please be as detailed as possible in your issue, preferably written in English. You can also join the Discord server and visit the support channel, however, response times may be longer.