Apache Guacamole website screenshot

Apache Guacamole

Apache Guacamole is a clientless remote desktop gateway that supports standard protocols like VNC, RDP, and SSH. It requires no plugins or client software and provides access to remote desktops through a web browser with a comprehensive REST API for connection, user, and session management.

2 APIs 8 Features
ApacheOpen SourceRDPRemote AccessRemote DesktopSSHVNCWeb Gateway

APIs

Apache Guacamole REST API

REST API for managing connections, users, groups, and active sessions in Apache Guacamole remote desktop gateway, with token-based authentication and per-data-source resource ma...

Apache Guacamole JavaScript Client API

JavaScript client library for embedding the Guacamole remote desktop client in web applications, with APIs for protocol tunneling, display rendering, and user input handling.

Collections

Pricing Plans

Rate Limits

Apache Guacamole Rate Limits

5 limits

RATE LIMITS

FinOps

Features

Clientless Remote Desktop

Access remote desktops through any HTML5 web browser with no client software or plugins required.

Multi-Protocol Support

Supports VNC, RDP, SSH, and Telnet protocols through a unified web gateway.

Token-Based Authentication

Stateless REST API authentication using time-limited tokens from the /api/tokens endpoint.

Connection Management

REST API for creating, updating, and organizing remote desktop connections and connection groups.

User and Group Management

Fine-grained user and group permissions for controlling access to connections and administrative functions.

Active Session Monitoring

Monitor and terminate active remote desktop sessions through the REST API.

Connection History

Audit log of all remote desktop sessions with timestamps and user attribution.

Extension API

Java extension API for implementing custom authentication providers, event listeners, and protocol extensions.

Use Cases

Remote Desktop Access

Provide browser-based access to Linux and Windows desktops for remote workers.

Cloud Server Management

Access cloud VMs and servers through SSH and RDP via browser without installing VPN or client software.

Secure Bastion Host

Use Guacamole as a protocol-proxying bastion host to isolate internal systems from direct network access.

Development Environment Access

Provide developers with browser-based access to containerized or virtualized development environments.

IT Support Tooling

Enable IT helpdesk teams to access and troubleshoot user desktops through the browser.

Integrations

Apache Tomcat

Runs as a Java web application on Apache Tomcat or any Java Servlet container.

LDAP / Active Directory

LDAP extension for authenticating users against directory services like Active Directory.

TOTP / Duo MFA

Multi-factor authentication extensions supporting TOTP apps and Duo Security.

MySQL / PostgreSQL

Database authentication extensions for storing connections and users in relational databases.

Kubernetes

Guacamole can be deployed on Kubernetes with the guacamole-client Docker image.

Semantic Vocabularies

Apache Guacamole Rest Context

9 classes · 17 properties

JSON-LD

API Governance Rules

Apache Guacamole API Rules

10 rules · 4 errors 5 warnings 1 info

SPECTRAL

JSON Structure

Guacamole Rest Active Connection Structure

5 properties

JSON STRUCTURE

Guacamole Rest Auth Token Structure

4 properties

JSON STRUCTURE

Guacamole Rest Connection Group Structure

5 properties

JSON STRUCTURE

Guacamole Rest Connection Structure

6 properties

JSON STRUCTURE

Guacamole Rest User Group Structure

2 properties

JSON STRUCTURE

Guacamole Rest User Structure

4 properties

JSON STRUCTURE

Example Payloads

Guacamole Rest User Example

4 fields

EXAMPLE

Resources

🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
👥
GitHubOrganization
GitHubOrganization
👥
GitHubRepository
GitHubRepository
🔗
SpectralRules
SpectralRules
🔗
Vocabulary
Vocabulary

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Apache Guacamole REST API
  version: 1.6.0
items:
- info:
    name: Authentication
    type: folder
  items:
  - info:
      name: Apache Guacamole Create Authentication Token
      type: http
    http:
      method: POST
      url: http://localhost:8080/guacamole/api/tokens
      body:
        type: form-urlencoded
        data:
        - name: username
          value: ''
        - name: password
          value: ''
    docs: Authenticate and create a session token for subsequent API calls.
- info:
    name: Connections
    type: folder
  items:
  - info:
      name: Apache Guacamole List Connections
      type: http
    http:
      method: GET
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/connections
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier (e.g., postgresql, mysql)
    docs: List all remote desktop connections available to the authenticated user.
  - info:
      name: Apache Guacamole Create Connection
      type: http
    http:
      method: POST
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/connections
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
      body:
        type: json
        data: '{}'
    docs: Create a new remote desktop connection.
  - info:
      name: Apache Guacamole Get Connection
      type: http
    http:
      method: GET
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/connections/:connectionId
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
      - name: connectionId
        value: ''
        type: path
        description: The unique connection identifier
    docs: Get details of a specific remote desktop connection.
  - info:
      name: Apache Guacamole Update Connection
      type: http
    http:
      method: PUT
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/connections/:connectionId
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
      - name: connectionId
        value: ''
        type: path
        description: The unique connection identifier
      body:
        type: json
        data: '{}'
    docs: Update an existing remote desktop connection.
  - info:
      name: Apache Guacamole Delete Connection
      type: http
    http:
      method: DELETE
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/connections/:connectionId
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
      - name: connectionId
        value: ''
        type: path
        description: The unique connection identifier
    docs: Delete a remote desktop connection.
- info:
    name: Users
    type: folder
  items:
  - info:
      name: Apache Guacamole List Users
      type: http
    http:
      method: GET
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/users
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
    docs: List all user accounts in the Guacamole system.
  - info:
      name: Apache Guacamole Create User
      type: http
    http:
      method: POST
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/users
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
      body:
        type: json
        data: '{}'
    docs: Create a new Guacamole user account.
  - info:
      name: Apache Guacamole Get User
      type: http
    http:
      method: GET
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/users/:username
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
      - name: username
        value: ''
        type: path
        description: The username
    docs: Get details of a specific Guacamole user account.
  - info:
      name: Apache Guacamole Update User
      type: http
    http:
      method: PUT
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/users/:username
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
      - name: username
        value: ''
        type: path
        description: The username
      body:
        type: json
        data: '{}'
    docs: Update a Guacamole user account.
  - info:
      name: Apache Guacamole Delete User
      type: http
    http:
      method: DELETE
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/users/:username
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
      - name: username
        value: ''
        type: path
        description: The username to delete
    docs: Delete a Guacamole user account.
- info:
    name: User Groups
    type: folder
  items:
  - info:
      name: Apache Guacamole List User Groups
      type: http
    http:
      method: GET
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/userGroups
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
    docs: List all user groups in the Guacamole system.
- info:
    name: Active Connections
    type: folder
  items:
  - info:
      name: Apache Guacamole List Active Connections
      type: http
    http:
      method: GET
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/activeConnections
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
    docs: List all currently active remote desktop sessions.
- info:
    name: History
    type: folder
  items:
  - info:
      name: Apache Guacamole List Connection History
      type: http
    http:
      method: GET
      url: http://localhost:8080/guacamole/api/session/data/:dataSource/history/connections
      headers:
      - name: Guacamole-Token
        value: ''
      params:
      - name: dataSource
        value: ''
        type: path
        description: The data source identifier
    docs: List connection history records for audit and reporting.
bundled: true