---
layout: default
---

<!-- Prominent software description/demo -->
<div class="hook">

    <!-- Demo Video -->
    <div class="demo">
        <img class="thumbnail" src="/images/demo-thumbnail.jpg"
             alt="Screenshot of Guacamole 0.9.4"/>
         <iframe
            src="//player.vimeo.com/video/116207678?title=0&amp;byline=0&amp;portrait=0"
            frameborder="0" webkitallowfullscreen mozallowfullscreen
            allowfullscreen></iframe>
    </div>

    <!-- High-level description -->
    <div class="description">
        <p>Apache Guacamole is a <strong>clientless remote desktop
        gateway</strong>. It supports standard protocols like VNC, RDP, and
        SSH.</p>

        <p>We call it <em>clientless</em> because no plugins or client software
        are required.</p>

        <p>Thanks to HTML5, once Guacamole is installed on a server, all you
        need to access your desktops is a web browser.</p>
    </div>

</div>

<!-- Link to latest release -->
<div class="latest-release">
    {% assign latest = site.releases | where: 'released', 'true' | sort: 'date'  | last %}
    Latest release: <a href="{{ latest.url }}"
       class="version">{{ latest.title }}</a> (released on {{ latest.date }})
</div>

<!-- List of features -->
<ul class="features">
    <li class="html5">
        <h2>Access your computers from <em>anywhere</em></h2>
        <p>Because the Guacamole client is an HTML5 web application, use of your computers is not tied to any one device or location. <strong>As long as you have access to a web browser, you have access to your machines.</strong></p>
    </li>
    <li class="cloud-desktop">
        <h2>Keep your desktop in the cloud</h2>
        <p>Desktops accessed through Guacamole need not physically exist. With both Guacamole and a desktop operating system hosted in the cloud, you can combine the convenience of Guacamole with the resilience and flexibility of cloud computing.</p>
    </li>
    <li class="apache">
        <h2>Free and open source</h2>
        <p>Apache Guacamole is and will always be <strong>free and open source software</strong>. It is licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>, and is actively maintained by a community of developers that use Guacamole to access their own development environments.</p>
        <p>We feel this sets us apart from other remote desktop solutions, and gives us a <a href="/open-source/">distinct advantage</a>.</p>
    </li>
    <li class="documented-api">
        <h2>Built on a well-documented API</h2>
        <p>Apache Guacamole is built on its own stack of core APIs which are <a href="/api-documentation/">thoroughly documented</a>, including basic tutorials and conceptual overviews in the <a href="/doc/gug/">online manual</a>. These APIs allow Guacamole to be tightly integrated into other applications, whether they be open source or proprietary.</p>
    </li>
    <li class="commercially-supported">
        <h2>Commercially supported</h2>
        <p>For enterprises, dedicated commercial support is also available through <a href="/support/#commercial-support">third party companies</a>.</p>
    </li>
</ul>

