environment

NAME

environment — SLICC runtime constraints and workarounds

DESCRIPTION

SLICC is a browser-native AI agent runtime. Your shell, filesystem, and network all run inside a browser tab. Most Unix tools work exactly as expected — but some things are different from a regular Linux box. This page explains what you have, what's missing, and how to work around each constraint.

The short version: you have more than you think. 150+ commands, full scripting, browser automation, and a persistent filesystem. The gaps are narrow and each has a workaround.

WHAT YOU HAVE

SLICC ships a complete shell environment. Power tools available out of the box:

Run commands for the full list. Run <cmd> --help for usage on any command.

FETCH AND CURL

All HTTP requests route through the browser's Fetch API via a proxy layer. This means:

Workaround for cookie-based APIs:

# Use playwright-cli to eval fetch from within an authenticated page context
playwright-cli eval --tab=<id> "await fetch('/api/data').then(r => r.json())"

This executes the request as the logged-in user with full cookies, since it runs inside the page's own origin.

NO PACKAGE MANAGERS

There is no apt, npm install, or pip install. Tools are built into the runtime. You cannot download or compile new binaries.

Workaround:

NO LONG-RUNNING SERVERS

You cannot start Express, nginx, or any persistent HTTP server. There is no localhost port binding. Background processes do not persist.

Workaround:

FILE SYSTEM

The filesystem is a VFS (virtual filesystem) backed by IndexedDB/OPFS. It lives in the browser and persists across sessions, tab closes, and refreshes.

VIEWING

You (the agent) cannot see browser tabs directly. Use these patterns:

Agent views an image
open --view <path>
Agent (inline)
Agent views a web page
playwright-cli screenshot --tab=<id> --filename=/tmp/shot.png then open --view /tmp/shot.png
Agent (inline)
Agent reads page content
playwright-cli snapshot --tab=<id>
Agent (text a11y tree)
User views a file
open <path>
Human only
User views an app
serve <dir>
Human only
Agent captures user's screen
screencapture --view screenshot.png
Agent (requires permission)

Workflow to verify a page you served:

serve /workspace/app                                    # opens tab (human sees it)
playwright-cli tab-list                                 # find tab by URL, note targetId
playwright-cli snapshot --tab=<id>                      # get accessible text
playwright-cli screenshot --tab=<id> --filename=/tmp/s.png
open --view /tmp/s.png                                  # now you can see it

AUDIO

IMAGES

SCREENCAPTURE

The screencapture command uses the browser's Screen Capture API (getDisplayMedia). It requires the user to grant screen sharing permission via a browser prompt.

NETWORK

CLIPBOARD

QUICK REFERENCE

Install a package
upskill search "..."
npm install
Preview HTML
serve <dir>
npx http-server
See a page
playwright-cli screenshot + open --view
open (human only)
Call cookie API
playwright-cli eval from page
curl --cookie
Add a command
Write a .jsh file
apt install
Run a web app
serve --project <dir>
node server.js
Persist data
Write to VFS (it persists)
Assume /tmp survives

SEE ALSO

man capabilities, commands, man mount, man serve, open --help, man playwright-cli