Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/jorgeurtubiam-ship-it/Gulin_ia/llms.txt

Use this file to discover all available pages before exploring further.

GuLiN provides durable SSH sessions that survive network interruptions, connection drops, and GuLiN restarts. When a connection is lost, GuLiN automatically attempts to reconnect — your terminal scrollback and session state are preserved. The optional wsh agent installed on the remote host unlocks deeper integration: remote file editing, environment variable sync, and AI context from remote terminals.

Opening a Connection

1

From the terminal with wsh

Run the following command from any terminal block to connect the current block to a remote host:
wsh ssh user@hostname
To open the connection in a new block instead of the current one, add the --new flag:
wsh ssh --new user@hostname
You can specify an identity file for public-key authentication:
wsh ssh -i ~/.ssh/id_ed25519 user@hostname
2

From the SSH launcher in the UI

Open the launcher panel (available from the widget bar or via the command palette). Start typing a hostname — GuLiN will suggest entries from your ~/.ssh/config file and from previously connected hosts stored in connections.json.

SSH Config File

GuLiN reads ~/.ssh/config for host definitions, aliases, identity files, proxy jumps, and all standard SSH keywords. Any host you have configured there will appear as a suggestion in the SSH launcher automatically.
Host myserver
    HostName 203.0.113.42
    User deploy
    IdentityFile ~/.ssh/deploy_key

Connection Configuration

Per-connection settings are stored in ~/.config/gulin/connections.json. Each key in the file is a connection identifier (e.g., "user@hostname"), and its value is an object of ConnKeywords:
{
  "[email protected]": {
    "conn:wshenabled": true,
    "conn:askbeforewshinstall": true,
    "term:theme": "nord",
    "ssh:identityfile": ["~/.ssh/deploy_key"]
  }
}
Key fields:
FieldTypeDefaultDescription
conn:wshenabledbooltrueEnable the WSH agent on this connection
conn:askbeforewshinstallbooltruePrompt before installing WSH on the remote host
conn:wshpathstringOverride the path where WSH is installed remotely
conn:shellpathstringOverride the shell used for the remote session
ssh:identityfilestring[]Identity files for this specific connection
When conn:askbeforewshinstall is true (the default), GuLiN will show a confirmation prompt the first time it tries to install the wsh agent on a new remote host. Set it to false to allow silent installation for trusted hosts, or set conn:wshenabled to false to disable the agent entirely for that connection.

Session Durability

GuLiN terminal sessions are durable by default when connected via SSH. If the network drops or you close and reopen GuLiN, the session reconnects automatically. You do not need to manually re-establish the connection or replay commands. Durability is controlled per-connection (and globally) with the term:durable setting. When enabled, the remote shell process is kept alive between disconnects.

WSH Agent

The wsh agent is a small binary installed on remote hosts the first time you connect. It enables:
  • Remote file editing — open remote files directly in the GuLiN Monaco editor from any terminal block
  • Environment variable sync — shell variables set in a remote terminal propagate to other GuLiN blocks on the same connection
  • AI context — the GuLiN AI panel can read output from remote terminals and access remote files for context
The agent is controlled by conn:wshenabled. Set it to false in connections.json for a specific host to use a plain SSH session without the agent.

Remote File Editing

Once connected, you can open any file on the remote host in GuLiN’s integrated editor without leaving the terminal:
wsh edit /etc/nginx/nginx.conf
GuLiN streams the file over the WSH agent connection, opens it in a Monaco editor block on your local machine, and syncs saves back to the remote host transparently.
You can open a remote file from a local terminal too — just prefix the path with the connection identifier:
wsh edit user@hostname:/path/to/file.conf
This is useful when you want to edit a remote config without first opening a full SSH terminal block.

Build docs developers (and LLMs) love