Skip to main content

🐸 Guac Bridge

OpenAI-compatible endpoints and SSH through Guacamole.

Install

Install on both your client computer and the server. Requires Python 3.11+ and uv.

uv tool install guac-bridge
uv tool update-shell

The client starts the appropriate server helper automatically. Keep the client running while using the bridge; stop it with Ctrl+C.

For the commands below, copy the full URL from your browser after opening the desired Guacamole web terminal connection. Replace SERVER_URL and YOUR_USERNAME with your connection details. Your Guacamole password is prompted.

Append --save-password to either client command to remember the Guacamole password in your system credential store after successful login. On Windows, this uses Windows Credential Manager for your current user on this computer. Both bridges automatically reuse the saved password for the same deployment URL and username, regardless of the selected Guacamole connection.

Option Behavior
--save-password Save after successful authentication
--forget-password Delete the saved credential and exit
--no-keyring Ignore saved credentials for this invocation

GUAC_PASSWORD takes precedence over stored credentials. If no password is available, the client prompts; saving is opt-in. A rejected saved password gets one replacement prompt and is updated only after the replacement succeeds. macOS Keychain and available Secret Service/KWallet stores are also supported. An unavailable store falls back to prompting, without saving to a plaintext file. These options store only the Guacamole login, not the inner SSH password or an OpenAI API key.

Usage: LLM bridge

The server's OpenAI-compatible endpoint should be available at http://127.0.0.1:8000.

On your client computer:

guac-llm-client --url "https://SERVER_URL" --username YOUR_USERNAME

Configure your LLM application with:

Setting Value
OpenAI base URL http://127.0.0.1:8000/v1
Chat completions URL http://127.0.0.1:8000/v1/chat/completions
Model A model ID from /v1/models
API key The key required by the server endpoint, or a placeholder if none is required

Requests, streamed responses, and the application's API key are forwarded to the server endpoint.

Use --upstream http://127.0.0.1:9000 for a different server-side endpoint (omit /v1), or --port 18000 for a different local port.

Usage: SSH bridge

The server's SSH service should be reachable at 127.0.0.1:22.

On your client computer:

guac-ssh-client --url "https://SERVER_URL" --username YOUR_USERNAME

In another local terminal:

ssh -p 2222 serveruser@127.0.0.1

Use the server's SSH username and its usual password or SSH key. SSH authentication and host-key verification are handled by your SSH client. SCP and SFTP work through the same local port.

Use --target-port to select a different server-side SSH port and --port to change the local listener.

Other Remarks

Both bridges support --ca-file company-ca.pem for a custom certificate authority and --transport http to use Guacamole's HTTP tunnel instead of websockets. If the server-side helper is installed outside ~/.local/bin/, pass its full path with --server-command. Run either client with --help for all options.

Contribution

Submit issues and pull requests on GitHub. Include tests for behavior changes.

From a repository checkout, run the test suite in an environment with Bash and PTY support:

uv run python -m unittest discover -s tests -v

Architecture

Each client logs into Guacamole and starts its matching server helper inside the terminal session. Framed, Base64-encoded messages travel through Guacamole's input and output pipes.

Bridge Local listener Server helper
LLM OpenAI-compatible HTTP API Forwards requests and streamed responses to the server endpoint
SSH TCP port for your SSH client Relays bytes to the server's SSH service

Listeners bind to local loopback. Helpers connect to services on the server's loopback interface, so no additional inbound server port is needed. Per-connection flow control bounds buffering; disconnecting Guacamole closes active connections.

Metadata

Release files for guac-bridge 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for guac-bridge 0.3.0
File Size Uploaded Provenance Actions
guac_bridge-0.3.0.tar.gz 30.4 kB With provenance Details for guac_bridge-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for guac-bridge 0.3.0
File Interpreter ABI Platform Actions
guac_bridge-0.3.0-py3-none-any.whl Python 3 none any Details for guac_bridge-0.3.0-py3-none-any.whl

Total release size: 54.7 kB

Release files / guac_bridge-0.3.0.tar.gz

Download URL guac_bridge-0.3.0.tar.gz
Size 30.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4df525eb54e6e4c54ba7be54a8a1ab78b05218badedd3815e9dec2a21cfa5d3d
BLAKE2b-256 checksum
How to use checksums
0a1f0b34d747d849a074faaa011e65d28af2253d762d4af57ead4d47a374084b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Release files / guac_bridge-0.3.0-py3-none-any.whl

Download URL guac_bridge-0.3.0-py3-none-any.whl
Size 24.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c85dfe8ff8e3aaa4eb21b7cf0ae8abdc7f50c697b54100fbdb923dff39211832
BLAKE2b-256 checksum
How to use checksums
37161d22df328712d48c9214236e12e5256b67013007fe11ca180f1360f7fb8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

Security for guac-bridge 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for guac_bridge-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page