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 ifauthTypeis"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.
- Note: Credentials must be created in Termix before importing hosts that reference them. Find the ID in the
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 onlysecurity- RDP security mode (string, optional):"nla","tls","rdp","any"- RDP onlyignoreCert- Ignore SSL certificate errors (boolean, default: false) - RDP/VNCguacamoleConfig- 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, or32(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 asusername@ipif 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: "/")
Sidebar Visibility
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 orusername@ipformatmaxRetries- 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 modesocks5Port- SOCKS5 proxy port (number, 1-65535, default: 1080) - Used for single proxy modesocks5Username- SOCKS5 proxy username (string, optional) - Used for single proxy modesocks5Password- SOCKS5 proxy password (string, optional) - Used for single proxy modesocks5ProxyChain- Array of proxy nodes for proxy chaining (array, default: []) - Used for proxy chain modehost- Proxy server hostname or IP (string)port- Proxy server port (number, 1-65535)type- Proxy protocol version:4for SOCKS4 or5for 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 objectenabledWidgets- 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"
- Available widgets:
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 authenticationforceKeyboardInteractive- 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.