Agent Native

remote-desktop-testing-linux

Test GUI applications on a Linux desktop sandbox by syncing code, launching programs, capturing screenshots and videos, and generating shareable desktop links.

by LettaOfficial publisherNot reviewed

Identity proven by GitHub's verified organisation badge (letta-ai)

Agents
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode
License
MIT (permissive)
Pin
6785511pinned Oct 9, 2026
Context cost
about 1,300 tokenswhen the skill loads
GitHub stars
148on letta-ai/skills
Scripts
1 script

What it does

“Test any GUI app or change on a Daytona Linux (Ubuntu xfce4 + noVNC) remote desktop sandbox. Use to launch a GUI program, sync a local project, take a screenshot, record a video, or share a clickable live-desktop link with a teammate. Generic — the only dependency is Daytona. For Windows, use remote-desktop-testing-windows.”
The author's description, from SKILL.md

Generated summary from the skill's own text

Test GUI applications on a Linux desktop sandbox by syncing code, launching programs, capturing screenshots and videos, and generating shareable desktop links. The skill manages a Daytona sandbox running xfce4 with noVNC streaming, providing primitives for visual verification of cross-platform apps without a local Linux environment.

When to use it

  • Visually verify GUI apps (Electron, browser, X11) on Linux before release
  • Debug Linux-specific desktop behavior of cross-platform applications
  • Create screenshots, videos, and live-desktop links for team collaboration
  • Run temporary desktop sessions for throwaway testing and cleanup

When not to

  • Testing headless backend services or CLI tools without GUI
  • Environments where Daytona credentials or API access are unavailable
  • Long-running persistent desktop sessions requiring snapshot management

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add letta-ai/skills --skill remote-desktop-testing-linux

Installs from the repository's default branch, which may have changed since the commit we checked.

GitHub CLI 2.90 or later

gh skill install letta-ai/skills remote-desktop-testing-linux@6785511e7d3913d9ec598435a77ae637cd45fc89

Installs the commit we checked (6785511).

Copy by hand

Download the folder at 6785511 and put it in .claude/skills/remote-desktop-testing-linux for Claude Code and in .agents/skills/remote-desktop-testing-linux for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at 6785511

Copy for your agent

A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.

Prompt

Install the agent skill "remote-desktop-testing-linux" by Letta.

Source, pinned to commit 6785511e7d3913d9ec598435a77ae637cd45fc89:
https://github.com/letta-ai/skills/tree/6785511e7d3913d9ec598435a77ae637cd45fc89/tools/remote-desktop-testing-linux

1. Download that folder at exactly this commit. Do not use the default branch.
2. Copy every file unchanged, keeping the folder structure, into .claude/skills/remote-desktop-testing-linux/ for Claude Code and .agents/skills/remote-desktop-testing-linux/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist.
3. Do not edit the files, and do not run any script in the folder unless I ask you to.
4. When you are done, list the files you copied and where you put them.

Listing and checks: https://www.agentnative.dev/skills/letta/remote-desktop-testing-linux

SKILL.md at the pin

---
name: remote-desktop-testing-linux
description: Test any GUI app or change on a Daytona Linux (Ubuntu xfce4 + noVNC) remote desktop sandbox. Use to launch a GUI program, sync a local project, take a screenshot, record a video, or share a clickable live-desktop link with a teammate. Generic — the only dependency is Daytona. For Windows, use remote-desktop-testing-windows.
---

# Remote Desktop Testing on Linux

## Overview

Generic Daytona Linux desktop sandbox driver. It creates (or reuses) a sandbox running an
xfce4 desktop streamed over noVNC, and provides the primitives for visual testing of any
GUI app: sync code, run shell commands, launch GUI programs on the live desktop, screenshot,
record video, and mint a clickable desktop link a teammate can open to drive the app.

## When to Use

- Demo or visually verify a GUI app (Electron, browser, native X11) on Linux without a local Linux desktop
- Produce a screenshot + video + clickable live-desktop link for a teammate
- Debug Linux-specific desktop behavior of a cross-platform app
- Run throwaway desktop sessions that are fully disposable (stop with `cleanup`)

## Usage

Run the bundled script with Node from the skill directory:

```bash
node scripts/remote-desktop.mjs <command> [options]
```

Credentials: `DAYTONA_API_KEY` (and optionally `DAYTONA_API_URL`/`DAYTONA_TARGET`) from the
environment or a dotenv file — `./.env` by default, override with `--env-path <file>`.
The script auto-installs `@daytona/sdk` under `~/.letta/skill-state/remote-desktop-testing-linux/`
on first use and remembers the active sandbox id there, so later commands don't need `--sandbox`.

## Typical flow

```bash
# 1. Start (or reuse) a desktop sandbox. Default: image daytonaio/sandbox:0.8.0, cpu 2 / mem 4 / disk 5.
node scripts/remote-desktop.mjs start

# 2. (Optional) push a local project to /home/daytona/remote-desktop/workspace
node scripts/remote-desktop.mjs sync --project-path ~/repos/my-app --sync-mode working_tree

# 3. Set up / build with shell commands (runs bash in the sandbox)
node scripts/remote-desktop.mjs shell \
  --command "cd /home/daytona/remote-desktop/workspace && npm install"

# 4. Launch the GUI app on the live desktop and verify its window appeared
node scripts/remote-desktop.mjs launch \
  --command "./my-app --some-flag" --label my-app --wait-window "My App"

# 5. Deliverables: screenshot, video, and a clickable live-desktop link
node scripts/remote-desktop.mjs screenshot --output /tmp/demo.png
node scripts/remote-desktop.mjs record --output /tmp/demo.mp4 --mp4 --duration 12
node scripts/remote-desktop.mjs preview
```

Always confirm the result visually (open the screenshot, or check `windows` / `--wait-window`)
before reporting success — never report success from process existence alone. When sharing with
a teammate, send the `desktopUrl` from `preview` (signed noVNC link, expires ~6h; re-run
`preview` to refresh). Pass `--port <n>` to `preview` to also mint a signed URL for an app's
HTTP port.

## Commands

| Command | What it does |
| --- | --- |
| `start` | Create/reuse a sandbox and start the desktop. `--fresh` forces a new one. |
| `sync` | Sync `--project-path` to `/home/daytona/remote-desktop/workspace` (`git_archive` = committed HEAD, `working_tree` = uncommitted too; preserves remote `node_modules`). |
| `shell --command SH` | Run a bash command. `--timeout <s>` for long ones. |
| `launch --command CMD` | Launch a GUI command on the xfce4 desktop (detached, `DISPLAY` set, logged to `/home/daytona/remote-desktop/launch-<label>.log`). `--wait-window <regex>` verifies a matching window title appears. |
| `windows` | List visible desktop windows. |
| `screenshot` | Save a PNG of the full desktop locally. |
| `preview` | Print signed `desktopUrl` (noVNC), plus `appUrl` if `--port` given. |
| `record` | Record the live desktop via Playwright + local Chrome (`--duration <s>`, `--mp4`). |
| `recording-start/stop/download` | Native Daytona recording (installs ffmpeg in-sandbox on first use). |
| `snapshot --snapshot <name>` | Bake the sandbox into a snapshot (stops, snapshots, restarts). |
| `cleanup` | Stop the active sandbox. |

## Sizing and snapshots

- Daytona's **default Linux sandbox is tiny (cpu 1 / mem 1 / disk 3GB)**. This skill creates
  from the desktop-capable image `daytonaio/sandbox:0.8.0` with `--cpu 2 --memory 4 --disk 5`
  by default; raise them for big projects (`--cpu 4 --memory 8 --disk 10`). Disk is capped at
  **10GB per sandbox**.
- `resources` cannot be combined with a snapshot — `--snapshot <name>` creates with whatever
  size was baked in. Use `snapshot` to bake a prepared box (deps installed, caches warm) so
  future `start --snapshot <name>` runs skip setup. Revert throwaway edits before baking.

## Gotchas

- Electron/Chromium apps need `--no-sandbox` inside the container, and often
  `--disable-gpu --disable-dev-shm-usage` too; put those flags in your `launch --command`.
- `launch` runs the command detached with `DISPLAY` pointed at the live desktop (detected from
  `/tmp/.X11-unix`, falls back to `:0`). Check the launch log via `shell` if nothing appears.
- For the shareable link, send `desktopUrl` (the interactive desktop), not a raw app-port URL —
  the app URL only serves HTTP and shows nothing of the desktop.
- `record` runs Playwright locally: it resolves `playwright`/`playwright-core` from
  `--project-path` first, else auto-installs `playwright-core` into skill state, and drives the
  local Chrome binary (`--chrome-path`, default macOS Chrome). `--mp4` needs local ffmpeg.
- The base image has `xfce4-terminal`, `chromium`, and `xeyes` available for quick desktop
  sanity checks (e.g. `launch --command "xfce4-terminal" --wait-window Terminal`).

From letta-ai/skills at 6785511, shown as plain text under its license: MIT (permissive). The license text is in LICENSE.

View SKILL.md on GitHub at 6785511

Files

2 files, 26 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at 6785511
All 50 skills from Letta

More from Letta

  • acquiring-skills

    Enables the agent to discover and install skills from multiple registries including Hermes Skills Hub, ClawHub, GitHub, and community repositories.

    Agents not labelled yet · about 3.1K tokens · pinned 6 days ago

  • browser-use

    Control a real browser using Chrome DevTools Protocol over WebSocket to navigate pages, interact with UI, fill forms, scrape sites, and capture screenshots or…

    Claude Code, Codex, Cursor +4 · about 3.2K tokens · pinned 6 days ago

  • Context Doctor

    Context Doctor investigates and repairs an agent's context including memory, system prompt, and skills by analyzing observed behavior as evidence.

    Claude Code, Codex, Cursor +3 · about 1K tokens · pinned 6 days ago

  • creating-mods

    This skill creates and edits mod files that extend local Letta instances with tools, slash commands, event handlers, custom model providers, permissions, and…

    Claude Code, Codex, Cursor +4 · about 2.4K tokens · pinned 6 days ago

  • creating-skills

    This skill guides developers in creating modular packages that extend Letta Code agent capabilities with specialized knowledge, workflows, tool integrations…

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 4.5K tokens · pinned 6 days ago

  • curating-memory-palace

    This skill lets the agent maintain a Memory Palace, a structured dashboard view that shows the user what the agent is working on, what it could do next, and…

    Agents not labelled yet · about 3.1K tokens · pinned 6 days ago

All Testing and QA skills
  • next-partial-prefetching-optimizer

    This skill optimizes Next.js client-side navigation under Partial Prefetching by defining what UI loads before and after a click.

    by VercelOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.8K tokens · pinned 6 days ago

  • Invalid--Name

    This skill cannot be described because its name format is invalid and no functional description or instructions are provided in the skill metadata.

    by CrewAIOfficial publisher

    Claude Code, Codex, Cursor +4 · about 0 tokens · pinned 6 days ago

  • chrome-devtools-cli

    This skill enables agents to automate browser interactions and inspect web pages using Chrome DevTools via command-line interface.

    by GoogleOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.9K tokens · pinned 6 days ago

  • triaging-visual-review-runs

    Inspects PostHog Visual Review screenshot regression runs that gate pull requests, helping engineers triage diff results, identify flaky stories, and decide…

    by PostHogOfficial publisher

    Claude Code, Codex, Cursor +4 · about 8.9K tokens · pinned 6 days ago

  • code-change-verification

    Runs formatting, linting, type checking, and test verification for SDK code changes after review.

    by OpenAIOfficial publisher

    Contains scripts

    Codex · about 1.3K tokens · pinned 6 days ago

  • runtime-behavior-probe

    This skill guides agents to plan and execute controlled runtime investigations with explicit user approval before each probe runs.

    by OpenAIOfficial publisher

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 3.8K tokens · pinned 6 days ago

Open roles at Letta

4 open roles on the jobs board

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use