CLI docs

Control TryCase environments from the command line.

Start with skills and upload-first environments. Give an LLM a disposable Linux machine, let it run and verify your app, collect screenshots and recordings, then clean up the billable environment.

Quick Start

The easiest path is upload-first. Install the skills, sign in, create a No Source headless project, upload the current directory into the environment, then let the agent run checks and return proof.

Install skills

Let the agent learn TryCase's upload-first workflow, evidence requirements, and best-effort skill refresh.

Log in once

The CLI opens the browser approval flow, then saves credentials for the selected workspace.

Choose size

Inspect the repo, runtime, install/build/test work, disk needs, and desktop requirements before choosing nano, small, standard, or large.

Create No Source

Create an upload-first project that receives local files from the CLI and uses the size you choose for the workload.

Upload `.`

Upload the current directory with --respect-gitignore so ignored dependencies, build output, and local junk stay local.

Run and verify

Use terminal sessions for installs and servers, then drive the browser, capture screenshot and recording evidence, and bundle artifacts.

Destroy

Stop billing with trycase env destroy <env> and confirm STOPPED - NOT BILLABLE.

trycase login
trycase workspace list
trycase project create --source none --name local-preview --mode headless --size <chosen-size>
# Optional: only after user approval when a local dotenv file exists
trycase project secret import --project <project> --file .env.local
trycase project secret file add --project <project> --path .env.local --include DATABASE_URL,APP_SECRET
trycase env create --project <project> --size <chosen-size>
trycase env wait <env>
trycase fs upload <env> . . --respect-gitignore
trycase terminal open <env>
trycase terminal write <session> "npm install && npm run dev" --env <env> --enter
trycase computer browser goto <env> http://localhost:3000
trycase command wait <command>
trycase computer status <env> --json
trycase computer browser snapshot <env>
trycase computer browser screenshot <env>
trycase computer browser recording <env>
trycase artifact bundle <env>
trycase env destroy <env>
Billing rule: environments become active and billable after runner capacity is allocated. Desktop mode costs 1.5x the same runner size in headless mode. Destroy environments when the task is done and verify STOPPED - NOT BILLABLE.

Pricing And Credits

Credits measure active environment time. Headless mode is the lower-cost route for most LLM verification, and desktop mode costs 1.5x the same size because it runs a visible Linux desktop and stream. The current credit unit is $0.001/credit, so 1,000 credits equals $1 of compute.

Pick size from the workload instead of a fixed default. Use nano only for clearly tiny work,small for lightweight apps, standard for general unknown apps, and larger sizes for Docker-heavy, JVM/Android, native build, monorepo, or disk-heavy tasks.

Size affects credit burn and resource headroom. For example, nano headless is $0.07/hr (66.6 credits/hr);standard headless is $0.17/hr ( 165.6 credits/hr).

Workspace subscriptions are managed from the pricing page. If the included credits in your plan are not enough, email ben@trycase.dev for a manual top-up.

View full pricing

Install

The published CLI connects to production by default. Use a one-off command runner, or install it globally when you want trycase available in every shell.

npx trycase@latest loginbunx trycase@latest loginpnpm dlx trycase@latest loginnpm install -g trycase@latest

Agent Skills

Install the universal TryCase skills so your coding agent knows the upload-first route, how to run Linux apps in a disposable environment, how to refresh TryCase skills, how to keep the TryCase CLI current, and how to return proof instead of asking you to test manually.

npx skills add bencsn/trycase-skills --skill trycase-cli --skill trycase-run-linux-app -gnpx skills update -g trycase-cli trycase-run-linux-appnpx skills add bencsn/trycase-skills --list
After installing, ask your agent: Use $trycase-run-linux-app to run this repo in TryCase and return screenshots, recordings, logs, and cleanup status.

Mental Model

TryCase has three product objects and a few command namespaces. Once these are clear, the CLI reads much more predictably.

Objects
WorkspaceThe billing, credits, members, and projects a user or team can access.
ProjectReusable setup: source route, default size, default environment mode, runtime settings, and project secrets.
EnvironmentOne disposable running Linux machine. Create it, wait until ready, upload code, run work, collect proof, then destroy it.
Command Surfaces
--mode headlessDefault CLI and LLM mode. Supports terminal, filesystem, browser automation, screenshots, recordings, logs, metrics, and artifacts without a visible desktop.
--mode desktopVisible Linux desktop mode. Use when the task needs a live desktop link, desktop apps, mouse, keyboard, windows, or clipboard.
trycase computer ...Cross-mode status and browser automation commands for the environment computer. This is a command namespace, not a --mode value.
trycase desktop ...Visible desktop commands. These require a desktop-mode environment.
trycase terminal ...Persistent CLI terminal sessions in the environment. They do not appear as windows in the live desktop.
trycase fs ...Filesystem commands for reading, writing, uploading directories, and staging files as artifacts.
There is no --mode computer. Use --mode headless or --mode desktop. The trycase computer ... commands are for cross-mode status and browser automation.

Choose A Route

Most users should start with upload-first. Keep source control decisions outside TryCase for now: create a disposable environment, upload the working tree, run checks, collect proof, then destroy it.

Upload-firstBest first run for local code and new users.project create --source none --mode headless --size <chosen-size>, env create --size <chosen-size>, fs upload <env> . . --respect-gitignore
DesktopUse when the user needs to watch/control a visible Linux desktop, desktop APIs, or a manual user step such as login, OAuth consent, CAPTCHA, passkey, 2FA/OTP, payment confirmation, account creation, or browser extension approval.env create --mode desktop --size <chosen-size>, env view --no-open, desktop app launch
Blank environmentUse when no app is needed; useful for scripts, one-off Linux checks, and scratch work.project create --source none --runtime none, terminal open, env exec
# Visible desktop for live viewing, desktop APIs, or manual user action
trycase env create --project <project> --mode desktop --size <chosen-size>
trycase env wait <env>
trycase env view <env> --no-open
trycase desktop app launch <env> terminal
trycase desktop app launch <env> browser http://localhost:3000
trycase desktop screenshot <env>
trycase desktop recording start <env>
trycase desktop recording stop <env>
trycase env destroy <env>
# Blank cloud computer, no code checkout required
trycase project create --source none --name scratch --mode headless --size <chosen-size>
trycase env create --project <project> --size <chosen-size>
trycase env wait <env>
trycase fs upload <env> . . --respect-gitignore
trycase terminal open <env>
trycase terminal write <session> "printf 'console.log(2 + 2)\n' > scratch.js && node scratch.js" --env <env> --enter --wait-for 4
trycase env destroy <env>

Runtime Settings

If the uploaded working tree contains trycase.yaml, the runner reads that file inside the environment. If it is missing, TryCase falls back to saved project runtime settings from the dashboard or CLI. Runner size and environment mode are allocation settings selected before work starts, so set them with project defaults orenv create flags.

Supported runtimes
noneStarts a blank cloud computer with terminal, browser, filesystem, and artifact tools. Desktop tools depend on environment mode. No source code is cloned.
docker-composeUses a Compose file and app URL.
npmRuns install and start commands with npm.
pnpmRuns install and start commands with pnpm.
yarnRuns install and start commands with yarn.
bunRuns install and start commands with Bun.
Runner sizes

Use nano, small, standard, or large. Choose from repository inspection: memory needs, CPU-heavy builds/tests, disk use, upload size, Docker services, language runtime, and whether a visible desktop is needed. large is currently the largest public-beta size.

nano1 vCPU, 1 GiB RAM, 10 GiB diskTiny scripts, static pages, simple frontends, docs/tools, and quick smoke checks.
small1 vCPU, 2 GiB RAM, 20 GiB diskLightweight Node/Python/Go apps, simple APIs, and modest dependency installs.
standard2 vCPU, 4 GiB RAM, 40 GiB diskGeneral unknown apps, normal web apps, Docker Compose, databases, moderate builds, and most desktop checks.
large4 vCPU, 8 GiB RAM, 80 GiB diskMonorepos, heavier Compose stacks, JVM/Rails/native builds, larger test suites, and sizable artifacts.
trycase project manifest generate \
  --project <project> \
  --runtime npm \
  --install "npm install" \
  --start "npm run dev" \
  --app-url http://localhost:3000 \
  --healthcheck http://localhost:3000 \
  --size <chosen-size> \
  --mode headless
Environment Modes

Use --mode headless for CLI and LLM verification: terminal, browser automation, filesystem, logs, screenshots, recordings, and artifacts. Use --mode desktop when the task needs a visible Linux desktop, desktop apps, mouse/keyboard/window APIs, a live view the user will watch, or a manual user step such as login, OAuth consent, CAPTCHA, passkey, 2FA/OTP, payment confirmation, account creation, or browser extension approval. Desktop mode costs 1.5x the credits of headless mode for the same runner size.

trycase project create --source none --name preview --mode headless --size <chosen-size>
trycase env create --project <project> --mode desktop --size <chosen-size>
trycase computer status <env>
# Minimal No Source settings
version: 1
runtime:
  type: none
  size: standard
  mode: headless
  timeout_minutes: 60
artifacts:
  video: always
  screenshots: always
  logs: always
  traces: on_failure
version: 1
runtime:
  type: npm
  size: standard
  mode: headless
  timeout_minutes: 60
package:
  install: npm install
  start: npm run dev
  app_url: http://localhost:3000
  healthcheck: http://localhost:3000
secrets:
  required:
    - DATABASE_URL
  files:
    - path: .env.local
      include:
        - DATABASE_URL
  hooks:
    - command: node scripts/trycase-secrets.mjs
      run_at: before_install
      timeout_seconds: 30
artifacts:
  video: always
  screenshots: always
  logs: always
  traces: on_failure

Project Secrets

Use project secrets when an app needs environment variables, a generated dotenv file, or a setup command before it can install or start. Values are encrypted at rest, shared by every environment for the project, and never shown back to users.

Scope

Secrets are project-scoped in V1. Every environment and worktree for the same project receives the same secret set.

Values

Secret values are write-only. Users can set, unset, import, and list names, but TryCase never returns plaintext values.

Names

Use env-var-safe uppercase names such as APP_SECRET. Reserved names like PATH, HOME, DISPLAY, CI, TRYCASE_*, and CONVEX_* are rejected.

Precedence

Saved manifest secret declarations override saved dashboard declarations for the same output path or hook ID.

Files

Generated dotenv files are written inside the repo with 0600 permissions. Absolute paths, traversal, .git paths, and symlink escapes are rejected.

Hooks

Hooks run with secrets in the environment at before_install, before_start, or after_start. The default is before_install.

Redaction

Setup events, runner logs, command output, terminal output, CLI output, and dashboard errors redact known secret values.

# Set values without shell history
printf "%s" "$DATABASE_URL" | trycase project secret set \
  --project <project> \
  --name DATABASE_URL \
  --value-stdin

# Import an approved local dotenv file into encrypted project secrets
trycase project secret import --project <project> --file .env.local

# Require secrets and generate .env.local in every environment
trycase project secret required add --project <project> DATABASE_URL APP_SECRET
trycase project secret file add \
  --project <project> \
  --path .env.local \
  --include DATABASE_URL,APP_SECRET

# Optional framework-specific setup
trycase project secret hook add \
  --project <project> \
  --command "node scripts/setup-secrets.mjs" \
  --run-at before_install \
  --timeout 30
# trycase.yaml can declare the same metadata
secrets:
  required:
    - DATABASE_URL
    - APP_SECRET
  files:
    - path: .env.local
      format: dotenv
      include:
        - DATABASE_URL
        - APP_SECRET
  hooks:
    - id: setup-secrets
      command: node scripts/setup-secrets.mjs
      run_at: before_install
      timeout_seconds: 30

Command Reference

Sign In And Configuration
trycase login
Open the browser approval flow and save CLI credentials.
trycase login --no-open
Print the approval URL when another browser or user needs to open it.
trycase logout
Clear saved CLI sign-in data.
trycase doctor
Check sign-in and selected workspace state.
trycase cleanup
Destroy all active environments for the signed-in user.
trycase config set dashboardUrl https://www.trycase.dev
Point the CLI at a dashboard.
trycase config set apiUrl <api-url>
Override the control API URL when testing another deployment.
Workspaces
trycase workspace list
List workspaces available to the signed-in user.
trycase workspace create --name <name>
Create and select a workspace.
trycase workspace use <workspace>
Select a workspace for future CLI commands.
Usage Credits
trycase billing status
Workspace admin: show your workspace tier, credits, and active environment allowance.
trycase billing ledger
Workspace admin: show your workspace credit grants, tier changes, and usage debits.
trycase admin billing list
Platform admin: list workspaces and billing state.
trycase admin billing set-tier --workspace <workspace> --tier pro
Platform admin: set a workspace tier.
trycase admin billing grant --workspace <workspace> --credits 1000 --reason "Beta top-up"
Platform admin: add manual top-up credits.
trycase admin billing deduct --workspace <workspace> --credits 100
Platform admin: correct a credit balance.
trycase admin billing set-credits --workspace <workspace> --credits 5000
Platform admin: set the exact available credit balance.
Projects And Runtime Settings
trycase project list
List projects in the selected workspace.
trycase project list --json
List projects as machine-readable JSON for agent workflows.
trycase project show <project>
Show runtime defaults and secret declarations for one project.
trycase project create --source none --name <name> --mode headless --size <chosen-size>
Create a No Source project for upload-first local code or a blank headless environment.
trycase project create --source none --name <name> --mode desktop --size <chosen-size>
Create a No Source project whose environments default to a visible Linux desktop.
trycase project create --workspace <workspace> --source none --name <name>
Create an upload-first project in an explicit workspace.
trycase project delete <project> --yes
Remove an inactive project from future lists.
trycase project delete <project> --yes --force
Stop that project's active environments first, then remove the project.
trycase project manifest show --project <project>
Print the saved runtime settings for a project.
trycase project manifest generate --project <project> --runtime none --mode headless
Generate saved settings for terminal, browser, filesystem, and artifact access without app startup.
trycase project manifest generate --project <project> --runtime npm --start "npm run dev"
Generate saved settings without writing a file to the repo.
trycase project manifest set --project <project> --file trycase.yaml
Validate and save runtime settings from a local YAML file.
Secrets
printf "%s" "$TOKEN" | trycase project secret set --project <project> --name API_TOKEN --value-stdin
Store a project-scoped secret without putting it in shell history.
trycase project secret set --project <project> --name API_TOKEN --env API_TOKEN
Read a project secret from an environment variable.
trycase project secret set --project <project> --name APP_SECRET --file .secret-value
Read one secret value from a local file.
trycase project secret import --project <project> --file .env
Import multiple dotenv secrets without writing them to the repo.
trycase project secret list --project <project>
List secret names without exposing values.
trycase project secret unset --project <project> --name APP_SECRET
Remove a stored project secret.
trycase project secret required list --project <project>
List secrets that must exist before launch.
trycase project secret required set --project <project> DATABASE_URL APP_SECRET
Replace the full saved required-secret list.
trycase project secret required add --project <project> DATABASE_URL APP_SECRET
Require secrets before environments launch.
trycase project secret required remove --project <project> APP_SECRET
Stop requiring one or more saved secrets.
trycase project secret file list --project <project>
List generated dotenv files.
trycase project secret file add --project <project> --path .env.local --include DATABASE_URL,APP_SECRET
Generate a dotenv file inside each environment.
trycase project secret file remove --project <project> --path .env.local
Remove a generated dotenv file declaration.
trycase project secret hook list --project <project>
List saved setup hooks.
trycase project secret hook add --project <project> --command "node scripts/setup-secrets.mjs" --run-at before_install --timeout 30
Run a custom setup hook with secrets in env.
trycase project secret hook remove --project <project> <hookId>
Remove a setup hook declaration.
Environments
trycase env create --project <project> --size <chosen-size>
Create an upload-first environment with an explicit size.
trycase env create --project <project> --mode desktop --size <chosen-size>
Override the project default and create a visible desktop environment.
trycase env create --project <no-source-project> --size <chosen-size>
Create a blank No Source environment.
trycase env list --active
List active environments in the selected workspace.
trycase env list --project <project> --json
List project environments as machine-readable JSON.
trycase env wait <env>
Wait until the environment is ready, stopped, failed, or expired.
trycase env status <env>
Print state, active time, and billable status.
trycase env status <env> --json
Print one environment status for automation.
trycase env exec <env> "npm test"
Run a shell command in the environment.
trycase env exec <env> "npm test" --wait
Run a shell command and wait for the result.
trycase env logs <env>
Print command output and logs collected so far.
trycase env artifacts <env>
List uploaded screenshots, recordings, traces, and logs.
trycase env view <env>
Open the authenticated environment page. Live desktop controls appear only for desktop-mode environments.
trycase env destroy <env>
Destroy one environment and wait until it is stopped.
trycase env destroy <env> --json
Destroy one environment and return final machine-readable status.
trycase env destroy --all-active
Destroy every active environment for the signed-in user.
Command Results
trycase command status <command>
Print the current state and output for one command.
trycase command wait <command>
Wait until a command succeeds or fails and print the output.
Cross-Mode Browser Control
trycase computer status <env>
Print environment status, environment mode, and available capabilities.
trycase computer status <env> --json
Print machine-readable capability data.
trycase computer browser goto <env> http://localhost:3000
Open a URL in the environment browser.
trycase computer browser snapshot <env>
Read the accessibility snapshot for reliable element targeting.
trycase computer browser click <env> "text=Submit"
Click an element by browser reference.
trycase computer browser type <env> "input[name=email]" "agent@example.com"
Type text into a referenced element.
trycase computer browser press <env> Enter
Press a key in the browser.
trycase computer browser hover <env> "text=Menu"
Hover an element.
trycase computer browser scroll <env> --y 800
Scroll the page.
trycase computer browser wait-for <env> --text Ready
Wait for visible text or a selector.
trycase computer browser evaluate <env> "document.title"
Evaluate a browser expression.
trycase computer browser console <env>
Print captured browser console messages.
trycase computer browser network <env>
Print captured browser network events.
trycase computer browser screenshot <env>
Capture a screenshot artifact.
trycase computer browser recording <env>
Finalize and upload the browser recording.
trycase computer browser run <env> scripts/check-page.js
Run a custom page-scoped browser script from the repo.
Full Desktop Control
trycase desktop status <env>
Check desktop display state and available Linux desktop tools. Requires desktop mode.
trycase desktop app launch <env> browser http://localhost:3000
Open Chromium on the visible desktop.
trycase desktop app launch <env> terminal
Open a visible terminal window on the desktop.
trycase desktop app launch <env> files
Open the repository file browser on the visible desktop.
trycase env view <env>
Watch the desktop in the dashboard and take control from the browser.
trycase desktop screenshot <env>
Capture the full desktop as an artifact.
trycase desktop mouse move <env> --x 400 --y 300
Move the desktop mouse.
trycase desktop mouse click <env> --window <window> --x 400 --y 300
Click coordinates relative to a desktop window.
trycase desktop mouse drag <env> --window <window> --from 100,100 --to 500,400
Drag between window-relative coordinates.
trycase desktop keyboard type <env> "hello"
Type text into the focused desktop app.
trycase desktop keyboard hotkey <env> ctrl+l
Press a desktop key combination.
trycase desktop window list <env>
List visible desktop windows and their coordinates.
trycase desktop window resize <env> <window> --width 1200 --height 800
Resize or move a desktop window.
trycase desktop clipboard set <env> "text"
Set the desktop clipboard.
trycase desktop recording start <env>
Start full desktop recording.
trycase desktop recording stop <env>
Stop and upload the desktop recording artifact.
Terminal Sessions
trycase terminal open <env>
Open a persistent CLI terminal session in the repo; this is not a visible desktop window.
trycase terminal write <session> "npm test" --env <env> --enter
Write input to a terminal session.
trycase terminal write <session> "npm run dev" --env <env> --enter --wait-for "Ready"
Write and wait for output after the write cursor.
trycase terminal read <session> --env <env>
Read terminal output and get the next cursor.
trycase terminal wait-for <session> "Ready" --env <env>
Wait until expected output appears.
trycase terminal resize <session> --env <env> --cols 120 --rows 40
Update session dimensions.
trycase terminal interrupt <session> --env <env>
Send an interrupt to the session.
trycase terminal close <session> --env <env>
Close the terminal session.
Filesystem And Artifacts
trycase fs list <env> .
List files in the repo scope.
trycase fs read <env> package.json
Read a small text file.
trycase fs write <env> scripts/check.js --content "export default async () => 'ok'"
Write a file inside the environment.
trycase fs write <env> scripts/check.js --file scripts/check.js
Upload one local file into the environment.
trycase fs upload <env> . .
Upload the current local directory into the environment repo root, capped by environment size.
trycase fs upload <env> . . --respect-gitignore
Skip files ignored by local gitignore rules while uploading.
trycase fs artifact <env> test-results/report.html --name report.html
Export a file as a downloadable artifact.
trycase artifact list <env>
List artifact IDs, names, and sizes.
trycase artifact url <artifact>
Print a short-lived artifact download URL.
trycase artifact download <artifact> --out tmp-artifacts/file
Download one artifact.
trycase artifact bundle <env> --out tmp-artifacts
Download all artifacts for an environment.

LLM Operating Guide

This flow is designed for coding agents that need to verify web apps, run arbitrary terminal work, collect proof, and use a real desktop only when the task needs one.

  1. Start by running trycase login. If a browser cannot be opened, run trycase login --no-open and ask the user to approve the printed URL.
  2. Run trycase workspace list. If no workspace is selected, run trycase workspace use <workspace> or trycase workspace create --name <name>.
  3. For local project work, use the upload route. Inspect the repo first, choose the smallest likely size that fits memory, CPU, disk, and build needs, then create a No Source project with --mode headless --size <chosen-size>.
  4. Before using local dotenv files, ask the user. If approved, import them with project secret import --file .env.local and generate dotenv files with project secret file add before creating the environment.
  5. Create missing projects with trycase project create --source none --name <name> --size <chosen-size>. Keep workspace, project, command, and environment IDs in your notes.
  6. Run trycase project list and pick the project ID.
  7. Check runtime settings with trycase project manifest show --project <project>. If the uploaded working tree contains trycase.yaml, the runner reads that file inside the environment; otherwise it falls back to saved project settings.
  8. If the project needs secrets, use project secret list, project secret required list, project secret file list, and project secret hook list before launching.
  9. Never pass secret values in command arguments. Use project secret set --value-stdin, --env, --file, or project secret import --file .env.
  10. Create the environment with trycase env create --project <project> --size <chosen-size>. Add --mode desktop when the task needs a visible desktop or a manual user step.
  11. Do not use --mode computer; valid environment modes are headless and desktop. trycase computer ... is a command namespace for status and browser automation.
  12. Run trycase env wait <env> before sending commands.
  13. Use trycase env list --active --json before cleanup or after interruptions to discover any active billable environments.
  14. After env exec or browser commands, run trycase command wait <command> to retrieve the result.
  15. Run trycase computer status <env> --json to discover capabilities before using terminal, browser, filesystem, or artifact commands.
  16. Use terminal open, terminal write, terminal wait-for, and terminal read for persistent CLI sessions. These sessions are controlled by the CLI and do not appear as windows in the live desktop.
  17. Use fs write --file for one local file, fs upload <env> . . --respect-gitignore for a local directory, and fs artifact to turn generated files into artifacts. Directory uploads are capped by environment size: nano 2 GiB, small 4 GiB, standard 8 GiB, and large 16 GiB uncompressed.
  18. Prefer computer browser snapshot before clicks. Use text or selector refs from the snapshot before coordinate clicks.
  19. Use desktop app launch for Terminal, Chrome, and Files only on desktop-mode environments when the task requires a real visible computer instead of headless browser control.
  20. If the app needs manual login, OAuth consent, CAPTCHA, passkey, 2FA/OTP, payment confirmation, account creation, browser extension approval, or another human-only step, use desktop mode, run trycase env view <env> --no-open, give the user the live desktop URL, ask them to take control there, and pause until they confirm the step is complete.
  21. Never ask users to paste passwords, OTPs, or CAPTCHA answers into chat, and do not try to bypass anti-abuse checks.
  22. Use desktop screenshot, desktop mouse, desktop keyboard, and desktop window commands to click, drag, resize, switch apps, and capture the visible desktop state.
  23. Capture evidence with computer browser screenshot, computer browser recording, desktop screenshot, desktop recording, computer browser console, computer browser network, env logs, and artifact bundle.
  24. Always end with trycase env destroy <env> or trycase env destroy --all-active --json, then confirm STOPPED - NOT BILLABLE.
# Recommended upload workflow
trycase workspace list
trycase project create --source none --name local-preview --mode headless --size <chosen-size>
trycase project secret list --project <project>
trycase project secret required list --project <project>
trycase billing status
trycase env create --project <project> --size <chosen-size>
trycase env wait <env>
trycase fs upload <env> . . --respect-gitignore
trycase computer browser goto <env> http://localhost:3000
trycase command wait <command>
trycase computer browser snapshot <env>
trycase computer browser screenshot <env>
trycase computer browser recording <env>
trycase artifact bundle <env>
trycase env destroy <env>
# Blank computer workflow
trycase project create --source none --name agent-scratch --mode headless --size <chosen-size>
trycase env create --project <project> --size <chosen-size>
trycase env wait <env>
trycase terminal open <env>
trycase terminal write <session> "printf 'console.log(2 + 2)\n' > scratch.js && node scratch.js" --env <env> --enter --wait-for 4
trycase env destroy <env>
# Desktop workflow when a visible window or manual user action is required
trycase env create --project <project> --mode desktop --size <chosen-size>
trycase env wait <env>
trycase env view <env> --no-open
trycase desktop app launch <env> terminal
trycase desktop app launch <env> browser http://localhost:3000
trycase desktop screenshot <env>
trycase env destroy <env>

Safety Checklist

  • Do not print saved tokens or paste them into chat.
  • Do not pass secret values as CLI arguments. Use stdin, environment variables, files, or dotenv import after explicit approval.
  • Use generated dotenv files or hooks for framework-specific config instead of committing local secret files.
  • Use No Source projects and upload the working tree for verification runs.
  • Keep source-control changes in your normal local workflow. Do not modify a main branch just for verification.
  • Use env destroy --all-active before stopping an automation-heavy session.
  • Use env usage or env status to confirm active and billable state.
  • Prefer snapshots and semantic refs for browser control; use coordinates only when necessary.
  • For manual login, CAPTCHA, 2FA, payment, or other human-only flows, use desktop mode and the live desktop take-control link instead of asking for sensitive values in chat.

Troubleshooting

Login expires

Run trycase login again. Login approvals are short lived and one time use.

Missing required secret

Run trycase project secret list --project <project> and set missing values with --value-stdin, --env, --file, or import --file.

Need a blank computer

Choose a size for the task, create a No Source project with trycase project create --source none --name scratch --mode headless --size <chosen-size>, then launch it with trycase env create --project <project> --size <chosen-size>. No source code will be cloned.

Desktop command says headless

Create a desktop environment with trycase env create --project <project> --mode desktop --size <chosen-size>. Headless environments still support terminal, browser automation, filesystem, logs, screenshots, recordings, and artifacts.

Manual login or CAPTCHA

Create a desktop environment, open the app there, run trycase env view <env> --no-open, and give the user that live desktop link so they can take control. Do not ask for passwords, OTPs, or CAPTCHA answers in chat.

App needs .env.local

Declare a generated dotenv file with trycase project secret file add --path .env.local --include NAME, or put the declaration in trycase.yaml.

Secret appears in output

TryCase redacts known project secret values from runner output. If you find an unredacted value, destroy the environment and rotate the secret.

Environment stays queued

Check env status. If it does not progress, destroy it and create a fresh environment.

Command only prints an ID

Use trycase command wait <command>, then env logs <env> for broader environment logs.

Upload misses files

Check your .gitignore and rerun trycase fs upload <env> . . --respect-gitignore, or upload a narrower directory explicitly.