Buckets:
| Name | Size | Uploaded | Xet hash |
|---|---|---|---|
| __pycache__ | 1 items | ||
| cache | 2 items | ||
| config | 3 items | ||
| etc | 106 items | ||
| lib | 2 items | ||
| logs | 406 items | ||
| usr | 3,804 items | ||
| var | 227 items | ||
| README.md | 3.35 kB xet | 5b7c493f | |
| aliases.json | 137 kB xet | 8e8ba8b2 | |
| packages.json | 35.5 kB xet | 2f3dce3f | |
| run.py | 9.58 kB xet | be00d51d | |
| start-terminal.py | 641 Bytes xet | e9043d2e | |
| xvfb_xkbdir.c | 558 Bytes xet | 3ef99438 | |
| xvfb_xkbdir.so | 15.5 kB xet | 8c42f1d4 |
Persistent Linux desktop
This bundle runs Xvfb, Openbox, and xterm from persistent user storage on this Debian 12 x86_64 host. Startup needs no sudo, network access, or OS package installation. It uses the host's base C library and Python 3.
Run any command with a fresh desktop and the bundle's library environment:
python3 /data/home/.codex/computer-use/linux/desktop/run.py -- COMMAND ARGUMENTS
Use --no-terminal before -- when the command creates its own windows.
The command receives DISPLAY, XAUTHORITY, the bundled libraries through
LD_LIBRARY_PATH, and the bundled X11 tools through PATH. Its stdin, stdout,
and stderr remain intact, so this wrapper can start an MCP stdio server.
environment() in run.py also returns the library and resource environment
without starting a desktop.
The desktop uses a local X11 socket, a random MIT-MAGIC-COOKIE-1 credential in a
private temporary directory, and no TCP listener. Xvfb selects an unused display
number. Desktop processes stop when the command exits or the wrapper receives
SIGINT, SIGTERM, or SIGHUP. Diagnostics are saved in logs/.
This is a virtual desktop on this host. It does not attach to a physical screen.
The default terminal runs Bash without profile or rc files; Ctrl+V pastes the
clipboard, which is how the native sky.type_text implementation enters text.
run.py restores the owner-execute bit on its exact expected owned executables
if a task-environment refresh has reset file modes. It does not repair arbitrary
files or modify system programs. Start it with Python so this recovery also
works if run.py itself has lost its executable bit.
Debian Xvfb compiles in /usr/bin as the location of xkbcomp. The small
xvfb_xkbdir.c relocation shim sets the exported XkbBinDirectory variable from
CUA_XKB_BINDIR. Only the Xvfb process receives this shim in LD_PRELOAD.
The Debian binaries and OpenAI native libraries are unchanged. Rebuild it with:
gcc -shared -fPIC -O2 -Wall -Wextra \
-o /data/home/.codex/computer-use/linux/desktop/xvfb_xkbdir.so \
/data/home/.codex/computer-use/linux/desktop/xvfb_xkbdir.c -ldl
Xvfb starts with -xkbdir and -fp pointing into the bundle. Fontconfig uses
config/fonts.conf, DejaVu fonts in the bundle, and cache/fontconfig/.
GLX is disabled because this task needs 2D desktop input and screenshots; this
also avoids loading the large Mesa software renderer from persistent storage.
packages.json records all 143 downloaded Debian package versions and SHA-256
hashes. They came from the configured signed Bookworm package indexes via
apt-get download. The package set starts with:
xvfb xterm xdotool x11-utils xauth openbox x11-xkb-utils xkb-data
xfonts-base fonts-dejavu-core fontconfig
Archive symlink and hardlink aliases are materialized as ordinary file and
directory copies inside the bundle. This is necessary because task persistence
drops symbolic links. aliases.json records their original targets and any
unavailable optional targets. Privileged mode bits are removed, and no dpkg
maintainer scripts run.
Verified as uid 1000: authenticated desktop startup, rejection of an
unauthenticated X11 connection, native @oai/sky screenshots, click, text entry,
Return, visible command output, executable-mode recovery, and process cleanup.
- Total size
- 17.6 GB
- Files
- 46,368
- Last updated
- Sep 9
- Pre-warmed CDN
- US EU US EU