What is the Built-in UI?
The built-in UI provides an interactive text-based interface for managing multiple Undying Terminal sessions from a single client instance.
Before v1.1.0: Each session required a separate terminal window and manual credential tracking.
With v1.1.0+: Launch the UI and manage all your sessions from one place.
Launching the UI
. / undying-terminal.exe -- ui
You’ll see the UI prompt:
Undying Terminal built-in UI
Built-in UI commands:
help
add <name> <host> <port> <client_id> <passkey>
set-tunnel <name> <spec>
set-flag <name> <noexit|tunnel-only|predictive-echo> <on|off>
start <name>
stop <name>
remove <name>
list
quit
ut-ui>
UI Commands
add - Create a Session Profile
Create a named profile with connection details:
ut-ui> add dev localhost 2022 abc123 mysecretkey
Profile 'dev' added
ut-ui> add prod prod-server.com 2022 xyz789 productionkey
Profile 'prod' added
Parameters:
name - Unique profile name
host - Server hostname or IP address
port - Server port (usually 2022)
client_id - Client ID from terminal
passkey - Passkey from terminal
Add tunnel specifications to a profile:
ut-ui> set-tunnel dev 5432:db-server:5432
Tunnel '5432:db-server:5432' added to profile 'dev'
ut-ui> set-tunnel prod 8080:internal-api:80
Tunnel '8080:internal-api:80' added to profile 'prod'
Tunnel Format: local_port:remote_host:remote_port
Enable/disable session options:
ut-ui> set-flag dev noexit on
Flag 'noexit' set to 'on' for profile 'dev'
ut-ui> set-flag prod predictive-echo on
Flag 'predictive-echo' set to 'on' for profile 'prod'
ut-ui> set-flag prod tunnel-only on
Flag 'tunnel-only' set to 'on' for profile 'prod'
Available Flags:
noexit - Keep session alive after command execution
predictive-echo - Enable local echo for high-latency connections
tunnel-only - Port forwarding without terminal (v1.1.0+)
start - Launch a Session
Start a session in a new console window:
ut-ui> start dev
started 'dev' (pid=12345)
ut-ui> start prod
started 'prod' (pid=12346)
Each session runs in its own console window. Switch between sessions via your taskbar or Alt+Tab.
stop - Stop a Running Session
Gracefully terminate a session:
ut-ui> stop dev
stopped 'dev'
This terminates the process. Any running commands in that session will be interrupted.
remove - Delete a Profile
Remove a profile from the UI:
ut-ui> remove dev
removed profile 'dev'
You must stop a session before removing its profile.
list - Show All Profiles
View all profiles and their status:
ut-ui> list
- dev host=localhost port=2022 running=yes tunnel-only=off predictive-echo=off
- prod host=prod-server.com port=2022 running=no tunnel-only=off predictive-echo=on
help - Show Available Commands
ut-ui> help
Built-in UI commands:
help
add <name> <host> <port> <client_id> <passkey>
set-tunnel <name> <spec>
set-flag <name> <noexit|tunnel-only|predictive-echo> <on|off>
start <name>
stop <name>
remove <name>
list
quit
quit - Exit the UI
Quitting the UI does not stop running sessions. They continue in their own windows.
Complete Workflow Example
Scenario: Managing dev, staging, and production environments.
# Launch UI
./undying-terminal.exe --ui
# Create profiles
ut-ui> add dev localhost 2022 dev-client-id dev-passkey
ut-ui> add staging staging.example.com 2022 staging-id staging-key
ut-ui> add prod prod.example.com 2022 prod-id prod-key
# Configure tunnels for database access
ut-ui> set-tunnel dev 5432:localhost:5432
ut-ui> set-tunnel staging 5433:staging-db:5432
ut-ui> set-tunnel prod 5434:prod-db:5432
# Enable predictive echo for remote connections
ut-ui> set-flag staging predictive-echo on
ut-ui> set-flag prod predictive-echo on
# Start development session
ut-ui> start dev
started 'dev' (pid=12345)
# Work in dev, then switch to staging
ut-ui> stop dev
stopped 'dev'
ut-ui> start staging
started 'staging' (pid=12346)
# View all profiles
ut-ui> list
- dev host=localhost port=2022 running=no tunnel-only=off predictive-echo=off
- staging host=staging.example.com port=2022 running=yes tunnel-only=off predictive-echo=on
- prod host=prod.example.com port=2022 running=no tunnel-only=off predictive-echo=on
# Exit UI (sessions continue running)
ut-ui> quit
Tips and Best Practices
Profile Naming
Use clear, consistent naming:
# Good
ut-ui> add web-prod web-server.com 2022 ...
ut-ui> add api-prod api-server.com 2022 ...
ut-ui> add db-prod db-server.com 2022 ...
# Avoid
ut-ui> add server1 ... # Unclear which server
ut-ui> add test ... # Which environment?
Secure Credential Storage
The UI stores credentials in memory only (not on disk). For security:
Use environment variables for sensitive data:
# Set credentials in environment
$ env: DEV_CLIENT_ID = "abc123"
$ env: DEV_PASSKEY = "secretkey"
# Then reference them when adding profiles
ut - ui > add dev localhost 2022 % DEV_CLIENT_ID % % DEV_PASSKEY %
Consider a password manager integration:
# Use 1Password CLI
$Cred = op item get "Undying Terminal Dev" -- fields username , password
$ClientID = $Cred [ 0 ]
$Passkey = $Cred [ 1 ]
. / undying-terminal.exe -- ui
# Then paste values
Session Persistence
Running sessions survive UI restart:
# Start sessions
ut-ui> start dev
ut-ui> start prod
ut-ui> quit
# Later - sessions still running
./undying-terminal.exe --ui
ut-ui> list
- dev host=localhost port=2022 running=yes ...
- prod host=prod.example.com port=2022 running=yes ...
Profiles are stored in memory and lost when the UI exits. For persistent profiles, consider creating a startup script.
Automation with Scripts
Create a PowerShell script to pre-populate profiles:
# setup-ui.ps1
$Profiles = @ (
@ { Name = "dev" ; Host = "localhost" ; Port = 2022 ; ID = "dev123" ; Key = "devkey" } ,
@ { Name = "staging" ; Host = "staging.example.com" ; Port = 2022 ; ID = "staging456" ; Key = "stagingkey" }
)
# Start UI with commands
$Commands = $Profiles | ForEach-Object {
"add $( $_ .Name ) $( $_ .Host ) $( $_ .Port ) $( $_ .ID ) $( $_ .Key ) "
}
# Save to file for manual input or use Expect-like automation
$Commands | Out-File setup - commands.txt
Write-Host "Run: ./undying-terminal.exe --ui"
Write-Host "Then paste commands from setup-commands.txt"
Comparison: UI vs Direct Connection
Feature Direct Connection Built-in UI Setup Command-line arguments Interactive prompts Multiple sessions Multiple terminals Single UI, multiple windows Credential management Manual tracking Named profiles Tunnel configuration Command-line set-tunnel commandBest for One-off connections Daily workflows Learning curve Lower (familiar CLI) Higher (new commands)
Troubleshooting
”profile is not running”
ut-ui> stop dev
profile is not running
Cause: Trying to stop a session that isn’t active.
Solution: Check list to see which profiles are running.
”stop failed: TerminateProcess error 5”
ut-ui> stop dev
stop failed: TerminateProcess error 5
Cause: Access denied (session may have already exited or requires elevated permissions).
Solution:
Check if the session window closed manually
Run the UI as Administrator if needed
”stop session before removing”
ut-ui> remove dev
stop session before removing
Cause: Attempting to remove a profile with a running session.
Solution:
ut-ui> stop dev
ut-ui> remove dev
Next Steps
Basic Usage Learn more about session management
SSH Bootstrap Connect to remote servers
Port Forwarding Configure tunnels for your profiles
Tmux Integration Combine with tmux for maximum persistence