{"id":30769496,"url":"https://github.com/onkernel/cli","last_synced_at":"2026-01-07T07:21:36.206Z","repository":{"id":310710290,"uuid":"1040910671","full_name":"onkernel/cli","owner":"onkernel","description":"Kernel CLI","archived":false,"fork":false,"pushed_at":"2025-09-04T16:45:20.000Z","size":59535,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-04T17:36:30.229Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.onkernel.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onkernel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-19T17:30:55.000Z","updated_at":"2025-09-04T15:24:25.000Z","dependencies_parsed_at":"2025-09-04T17:32:48.637Z","dependency_job_id":null,"html_url":"https://github.com/onkernel/cli","commit_stats":null,"previous_names":["onkernel/cli"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/onkernel/cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onkernel%2Fcli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onkernel%2Fcli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onkernel%2Fcli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onkernel%2Fcli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onkernel","download_url":"https://codeload.github.com/onkernel/cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onkernel%2Fcli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273685110,"owners_count":25149719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-04T22:36:59.350Z","updated_at":"2026-01-07T07:21:36.199Z","avatar_url":"https://github.com/onkernel.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/onkernel/kernel-images/main/static/images/Kernel-Wordmark_Accent.svg\" alt=\"Kernel Logo\" width=\"55%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"GitHub License\" src=\"https://img.shields.io/github/license/onkernel/cli\"\u003e\n  \u003ca href=\"https://discord.gg/FBrveQRcud\"\u003e\u003cimg src=\"https://img.shields.io/discord/1342243238748225556?logo=discord\u0026logoColor=white\u0026color=7289DA\" alt=\"Discord\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://x.com/juecd__\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/juecd__\" alt=\"Follow @juecd__\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://x.com/rfgarcia\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/rfgarcia\" alt=\"Follow @rfgarcia\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# Kernel CLI\n\nThe Kernel CLI is a fast, friendly command‑line interface for Kernel — the platform that provides sandboxed, ready‑to‑use Chrome browsers for browser automations and web agents.\n\nSign up at [onkernel.com](https://www.onkernel.com/) and read the [docs](https://onkernel.com/docs/introduction).\n\n## What's Kernel?\n\nKernel provides sandboxed, ready-to-use Chrome browsers for browser automations and web agents. This CLI helps you deploy apps, run actions, manage browsers, and access live views.\n\n### What you can do with the CLI\n\n- Create new Kernel applications from templates\n- Deploy and version apps to Kernel\n- Invoke app actions (sync or async) and stream logs\n- Create, list, view, and delete managed browser sessions\n- Get a live view URL for visual monitoring and remote control\n\n## Installation\n\nInstall the Kernel CLI using your favorite package manager:\n\n```bash\n# Using brew (recommended)\nbrew install onkernel/tap/kernel\n\n# Using pnpm\npnpm install -g @onkernel/cli\n\n# Using npm\nnpm install -g @onkernel/cli\n```\n\nVerify the installation:\n\n```bash\nwhich kernel\nkernel --version\n```\n\n## Quick Start\n\n1. **Create a new Kernel app:**\n\n   ```bash\n   kernel create\n   ```\n\n2. **Authenticate with Kernel:**\n\n   ```bash\n   kernel login\n   ```\n\n3. **Deploy your app:**\n\n   ```bash\n   kernel deploy index.ts\n   ```\n\n4. **Invoke your app:**\n   ```bash\n   kernel invoke my-app action-name --payload '{\"key\": \"value\"}'\n   ```\n\n## Authentication\n\n### OAuth 2.0 (Recommended)\n\nThe easiest way to authenticate is using OAuth:\n\n```bash\nkernel login\n```\n\nThis opens your browser to complete the authentication flow. Your credentials are securely stored and automatically refreshed.\n\n### API Key\n\nYou can also authenticate using an API key:\n\n```bash\nexport KERNEL_API_KEY=\u003cYOUR_API_KEY\u003e\n```\n\nCreate an API key from the [Kernel dashboard](https://dashboard.onkernel.com).\n\n## Commands Reference\n\n### Global Flags\n\n- `--version`, `-v` - Print the CLI version\n- `--no-color` - Disable color output\n- `--log-level \u003clevel\u003e` - Set log level (trace, debug, info, warn, error, fatal, print)\n\n### Authentication\n\n- `kernel login [--force]` - Login via OAuth 2.0\n- `kernel logout` - Clear stored credentials\n- `kernel auth` - Check authentication status\n\n### App Creation\n\n- `--name \u003cname\u003e`, `-n` - Name of the application\n- `--language \u003clanguage\u003e`, `-l` - Sepecify app language: `typescript`, or `python`\n- `--template \u003ctemplate\u003e`, `-t` - Template to use:\n  - `sample-app` - Basic template with Playwright integration\n  - `captcha-solver` - Template demonstrating Kernel's auto-CAPTCHA solver\n  - `stagehand` - Template with Stagehand SDK (TypeScript only)\n  - `browser-use` - Template with Browser Use SDK (Python only)\n  - `anthropic-computer-use` - Anthropic Computer Use prompt loop\n  - `openai-computer-use` - OpenAI Computer Use Agent sample\n  - `gemini-computer-use` - Implements a Gemini computer use agent (TypeScript only)\n  - `openagi-computer-use` - OpenAGI Lux computer-use models (Python only)\n  - `magnitude` - Magnitude framework sample (TypeScript only)\n\n### App Deployment\n\n- `kernel deploy \u003cfile\u003e` - Deploy an app to Kernel\n\n  - `--version \u003cversion\u003e` - Specify app version (default: latest)\n  - `--force` - Allow overwriting existing version\n  - `--env \u003cKEY=VALUE\u003e`, `-e` - Set environment variables (can be used multiple times)\n  - `--env-file \u003cfile\u003e` - Load environment variables from file (can be used multiple times)\n\n- `kernel deploy logs \u003cdeployment_id\u003e` - Stream logs for a deployment\n\n  - `--follow`, `-f` - Follow logs in real-time (stream continuously)\n  - `--since`, `-s` - How far back to retrieve logs. Duration formats: ns, us, ms, s, m, h (e.g., 5m, 2h, 1h30m). Timestamps also supported: 2006-01-02, 2006-01-02T15:04, 2006-01-02T15:04:05, 2006-01-02T15:04:05.000\n  - `--with-timestamps`, `-t` - Include timestamps in each log line\n\n- `kernel deploy history [app_name]` - Show deployment history\n  - `--limit \u003cn\u003e` - Max deployments to return (default: 100; 0 = all)\n\n### App Management\n\n- `kernel invoke \u003capp\u003e \u003caction\u003e` - Run an app action\n\n  - `--version \u003cversion\u003e`, `-v` - Specify app version (default: latest)\n  - `--payload \u003cjson\u003e`, `-p` - JSON payload for the action\n  - `--sync`, `-s` - Invoke synchronously (timeout after 60s)\n\n- `kernel app list` - List deployed apps\n\n  - `--name \u003capp_name\u003e` - Filter by app name\n  - `--version \u003cversion\u003e` - Filter by version\n\n- `kernel app history \u003capp_name\u003e` - Show deployment history for an app\n  - `--limit \u003cn\u003e` - Max deployments to return (default: 100; 0 = all)\n\n### Logs\n\n- `kernel logs \u003capp_name\u003e` - View app logs\n  - `--version \u003cversion\u003e` - Specify app version (default: latest)\n  - `--follow`, `-f` - Follow logs in real-time\n  - `--since \u003ctime\u003e`, `-s` - How far back to retrieve logs (e.g., 5m, 1h)\n  - `--with-timestamps` - Include timestamps in log output\n\n### Browser Management\n\n- `kernel browsers list` - List running browsers\n- `kernel browsers create` - Create a new browser session\n  - `-s, --stealth` - Launch browser in stealth mode to avoid detection\n  - `-H, --headless` - Launch browser without GUI access\n  - `--kiosk` - Launch browser in kiosk mode\n  - `--pool-id \u003cid\u003e` - Acquire a browser from the specified pool (mutually exclusive with --pool-name; ignores other session flags)\n  - `--pool-name \u003cname\u003e` - Acquire a browser from the pool name (mutually exclusive with --pool-id; ignores other session flags)\n  - _Note: When a pool is specified, omit other session configuration flags—pool settings determine profile, proxy, viewport, etc._\n- `kernel browsers delete \u003cid\u003e` - Delete a browser\n  - `-y, --yes` - Skip confirmation prompt\n- `kernel browsers view \u003cid\u003e` - Get live view URL for a browser\n\n### Browser Pools\n\n- `kernel browser-pools list` - List browser pools\n  - `-o, --output json` - Output raw JSON response\n- `kernel browser-pools create` - Create a browser pool\n  - `--name \u003cname\u003e` - Optional unique name for the pool\n  - `--size \u003cn\u003e` - Number of browsers in the pool (required)\n  - `--fill-rate \u003cn\u003e` - Percentage of the pool to fill per minute\n  - `--timeout \u003cseconds\u003e` - Idle timeout for browsers acquired from the pool\n  - `--stealth`, `--headless`, `--kiosk` - Default pool configuration\n  - `--profile-id`, `--profile-name`, `--save-changes`, `--proxy-id`, `--extension`, `--viewport` - Same semantics as `kernel browsers create`\n- `kernel browser-pools get \u003cid-or-name\u003e` - Get pool details\n  - `-o, --output json` - Output raw JSON response\n- `kernel browser-pools update \u003cid-or-name\u003e` - Update pool configuration\n  - Same flags as create plus `--discard-all-idle` to discard all idle browsers in the pool and refill at the specified fill rate\n- `kernel browser-pools delete \u003cid-or-name\u003e` - Delete a pool\n  - `--force` - Force delete even if browsers are leased\n- `kernel browser-pools acquire \u003cid-or-name\u003e` - Acquire a browser from the pool\n  - `--timeout \u003cseconds\u003e` - Acquire timeout before returning 204\n- `kernel browser-pools release \u003cid-or-name\u003e` - Release a browser back to the pool\n  - `--session-id \u003cid\u003e` - Browser session ID to release (required)\n  - `--reuse` - Reuse the browser instance (default: true)\n- `kernel browser-pools flush \u003cid-or-name\u003e` - Destroy all idle browsers in the pool\n\n### Browser Logs\n\n- `kernel browsers logs stream \u003cid\u003e` - Stream browser logs\n  - `--source \u003csource\u003e` - Log source: \"path\" or \"supervisor\" (required)\n  - `--follow` - Follow the log stream (default: true)\n  - `--path \u003cpath\u003e` - File path when source=path\n  - `--supervisor-process \u003cname\u003e` - Supervisor process name when source=supervisor. Most useful value is \"chromium\"\n\n### Browser Replays\n\n- `kernel browsers replays list \u003cid\u003e` - List replays for a browser\n- `kernel browsers replays start \u003cid\u003e` - Start a replay recording\n  - `--framerate \u003cfps\u003e` - Recording framerate (fps)\n  - `--max-duration \u003cseconds\u003e` - Maximum duration in seconds\n- `kernel browsers replays stop \u003cid\u003e \u003creplay-id\u003e` - Stop a replay recording\n- `kernel browsers replays download \u003cid\u003e \u003creplay-id\u003e` - Download a replay video\n  - `-o, --output \u003cpath\u003e` - Output file path for the replay video\n\n### Browser Process Control\n\n- `kernel browsers process exec \u003cid\u003e [--] [command...]` - Execute a command synchronously\n  - `--command \u003ccmd\u003e` - Command to execute (optional; if omitted, trailing args are executed via /bin/bash -c)\n  - `--args \u003cargs\u003e` - Command arguments\n  - `--cwd \u003cpath\u003e` - Working directory\n  - `--timeout \u003cseconds\u003e` - Timeout in seconds\n  - `--as-user \u003cuser\u003e` - Run as user\n  - `--as-root` - Run as root\n- `kernel browsers process spawn \u003cid\u003e [--] [command...]` - Execute a command asynchronously\n  - `--command \u003ccmd\u003e` - Command to execute (optional; if omitted, trailing args are executed via /bin/bash -c)\n  - `--args \u003cargs\u003e` - Command arguments\n  - `--cwd \u003cpath\u003e` - Working directory\n  - `--timeout \u003cseconds\u003e` - Timeout in seconds\n  - `--as-user \u003cuser\u003e` - Run as user\n  - `--as-root` - Run as root\n- `kernel browsers process kill \u003cid\u003e \u003cprocess-id\u003e` - Send a signal to a process\n  - `--signal \u003csignal\u003e` - Signal to send: TERM, KILL, INT, HUP (default: TERM)\n- `kernel browsers process status \u003cid\u003e \u003cprocess-id\u003e` - Get process status\n- `kernel browsers process stdin \u003cid\u003e \u003cprocess-id\u003e` - Write to process stdin (base64)\n  - `--data-b64 \u003cdata\u003e` - Base64-encoded data to write to stdin (required)\n- `kernel browsers process stdout-stream \u003cid\u003e \u003cprocess-id\u003e` - Stream process stdout/stderr\n\n### Browser Filesystem\n\n- `kernel browsers fs new-directory \u003cid\u003e` - Create a new directory\n  - `--path \u003cpath\u003e` - Absolute directory path to create (required)\n  - `--mode \u003cmode\u003e` - Directory mode (octal string)\n- `kernel browsers fs delete-directory \u003cid\u003e` - Delete a directory\n  - `--path \u003cpath\u003e` - Absolute directory path to delete (required)\n- `kernel browsers fs delete-file \u003cid\u003e` - Delete a file\n  - `--path \u003cpath\u003e` - Absolute file path to delete (required)\n- `kernel browsers fs download-dir-zip \u003cid\u003e` - Download a directory as zip\n  - `--path \u003cpath\u003e` - Absolute directory path to download (required)\n  - `-o, --output \u003cpath\u003e` - Output zip file path\n- `kernel browsers fs file-info \u003cid\u003e` - Get file or directory info\n  - `--path \u003cpath\u003e` - Absolute file or directory path (required)\n- `kernel browsers fs list-files \u003cid\u003e` - List files in a directory\n  - `--path \u003cpath\u003e` - Absolute directory path (required)\n- `kernel browsers fs move \u003cid\u003e` - Move or rename a file or directory\n  - `--src \u003cpath\u003e` - Absolute source path (required)\n  - `--dest \u003cpath\u003e` - Absolute destination path (required)\n- `kernel browsers fs read-file \u003cid\u003e` - Read a file\n  - `--path \u003cpath\u003e` - Absolute file path (required)\n  - `-o, --output \u003cpath\u003e` - Output file path (optional)\n- `kernel browsers fs set-permissions \u003cid\u003e` - Set file permissions or ownership\n  - `--path \u003cpath\u003e` - Absolute path (required)\n  - `--mode \u003cmode\u003e` - File mode bits (octal string) (required)\n  - `--owner \u003cuser\u003e` - New owner username or UID\n  - `--group \u003cgroup\u003e` - New group name or GID\n- `kernel browsers fs upload \u003cid\u003e` - Upload one or more files\n  - `--file \u003clocal:remote\u003e` - Mapping local:remote (repeatable)\n  - `--dest-dir \u003cpath\u003e` - Destination directory for uploads\n  - `--paths \u003cpaths\u003e` - Local file paths to upload\n- `kernel browsers fs upload-zip \u003cid\u003e` - Upload a zip and extract it\n  - `--zip \u003cpath\u003e` - Local zip file path (required)\n  - `--dest-dir \u003cpath\u003e` - Destination directory to extract to (required)\n- `kernel browsers fs write-file \u003cid\u003e` - Write a file from local data\n  - `--path \u003cpath\u003e` - Destination absolute file path (required)\n  - `--mode \u003cmode\u003e` - File mode (octal string)\n  - `--source \u003cpath\u003e` - Local source file path (required)\n\n### Browser Extensions\n\n- `kernel browsers extensions upload \u003cid\u003e \u003cextension-path\u003e...` - Ad-hoc upload of one or more unpacked extensions to a running browser instance.\n\n### Browser Computer Controls\n\n- `kernel browsers computer click-mouse \u003cid\u003e` - Click mouse at coordinates\n  - `--x \u003ccoordinate\u003e` - X coordinate (required)\n  - `--y \u003ccoordinate\u003e` - Y coordinate (required)\n  - `--num-clicks \u003cn\u003e` - Number of clicks (default: 1)\n  - `--button \u003cbutton\u003e` - Mouse button: left, right, middle, back, forward (default: left)\n  - `--click-type \u003ctype\u003e` - Click type: down, up, click (default: click)\n  - `--hold-key \u003ckey\u003e` - Modifier keys to hold (repeatable)\n- `kernel browsers computer move-mouse \u003cid\u003e` - Move mouse to coordinates\n  - `--x \u003ccoordinate\u003e` - X coordinate (required)\n  - `--y \u003ccoordinate\u003e` - Y coordinate (required)\n  - `--hold-key \u003ckey\u003e` - Modifier keys to hold (repeatable)\n- `kernel browsers computer screenshot \u003cid\u003e` - Capture a screenshot\n  - `--to \u003cpath\u003e` - Output file path for the PNG image (required)\n  - `--x \u003ccoordinate\u003e` - Top-left X for region capture (optional)\n  - `--y \u003ccoordinate\u003e` - Top-left Y for region capture (optional)\n  - `--width \u003cpixels\u003e` - Region width (optional)\n  - `--height \u003cpixels\u003e` - Region height (optional)\n- `kernel browsers computer type \u003cid\u003e` - Type text on the browser instance\n\n  - `--text \u003ctext\u003e` - Text to type (required)\n  - `--delay \u003cms\u003e` - Delay in milliseconds between keystrokes (optional)\n\n- `kernel browsers computer press-key \u003cid\u003e` - Press one or more keys\n\n  - `--key \u003ckey\u003e` - Key symbols to press (repeatable)\n  - `--duration \u003cms\u003e` - Duration to hold keys down in ms (0=tap)\n  - `--hold-key \u003ckey\u003e` - Modifier keys to hold (repeatable)\n\n- `kernel browsers computer scroll \u003cid\u003e` - Scroll the mouse wheel\n\n  - `--x \u003ccoordinate\u003e` - X coordinate (required)\n  - `--y \u003ccoordinate\u003e` - Y coordinate (required)\n  - `--delta-x \u003cpixels\u003e` - Horizontal scroll amount (+right, -left)\n  - `--delta-y \u003cpixels\u003e` - Vertical scroll amount (+down, -up)\n  - `--hold-key \u003ckey\u003e` - Modifier keys to hold (repeatable)\n\n- `kernel browsers computer drag-mouse \u003cid\u003e` - Drag the mouse along a path\n  - `--point \u003cx,y\u003e` - Add a point as x,y (repeatable)\n  - `--delay \u003cms\u003e` - Delay before dragging starts in ms\n  - `--button \u003cbutton\u003e` - Mouse button: left, middle, right (default: left)\n  - `--hold-key \u003ckey\u003e` - Modifier keys to hold (repeatable)\n\n### Browser Playwright\n\n- `kernel browsers playwright execute \u003cid\u003e [code]` - Execute Playwright/TypeScript code against the browser\n  - `--timeout \u003cseconds\u003e` - Maximum execution time in seconds (defaults server-side)\n  - If `[code]` is omitted, code is read from stdin\n\n### Extension Management\n\n- `kernel extensions list` - List all uploaded extensions\n- `kernel extensions upload \u003cdirectory\u003e` - Upload an unpacked browser extension directory\n  - `--name \u003cname\u003e` - Optional unique extension name\n- `kernel extensions download \u003cid-or-name\u003e` - Download an extension archive\n  - `--to \u003cdirectory\u003e` - Output directory (required)\n- `kernel extensions download-web-store \u003curl\u003e` - Download an extension from the Chrome Web Store\n  - `--to \u003cdirectory\u003e` - Output directory (required)\n  - `--os \u003cos\u003e` - Target OS: mac, win, or linux (default: linux)\n- `kernel extensions delete \u003cid-or-name\u003e` - Delete an extension by ID or name\n  - `-y, --yes` - Skip confirmation prompt\n\n### Proxy Management\n\n- `kernel proxies list` - List proxy configurations\n- `kernel proxies get \u003cid\u003e` - Get a proxy configuration by ID\n- `kernel proxies create` - Create a new proxy configuration\n\n  - `--name \u003cname\u003e` - Proxy configuration name\n  - `--type \u003ctype\u003e` - Proxy type: datacenter, isp, residential, mobile, custom (required)\n  - `--protocol \u003chttp|https\u003e` - Protocol to use (default: https)\n  - `--country \u003ccode\u003e` - ISO 3166 country code or \"EU\" (location-based types)\n  - `--city \u003cname\u003e` - City name (no spaces, e.g. sanfrancisco) (residential, mobile; requires `--country`)\n  - `--state \u003ccode\u003e` - Two-letter state code (residential, mobile)\n  - `--zip \u003czip\u003e` - US ZIP code (residential, mobile)\n  - `--asn \u003casn\u003e` - Autonomous system number (e.g., AS15169) (residential, mobile)\n  - `--os \u003cos\u003e` - Operating system: windows, macos, android (residential)\n  - `--carrier \u003ccarrier\u003e` - Mobile carrier (mobile)\n  - `--host \u003chost\u003e` - Proxy host (custom; required)\n  - `--port \u003cport\u003e` - Proxy port (custom; required)\n  - `--username \u003cusername\u003e` - Username for proxy authentication (custom)\n  - `--password \u003cpassword\u003e` - Password for proxy authentication (custom)\n\n- `kernel proxies delete \u003cid\u003e` - Delete a proxy configuration\n  - `-y, --yes` - Skip confirmation prompt\n\n## Examples\n\n### Create a new app\n\n```bash\n# Interactive mode (prompts for all options)\nkernel create\n\n# Create a TypeScript app with sample template\nkernel create --name my-app --language typescript --template sample-app\n\n# Create a Python app with Browser Use\nkernel create --name my-scraper --language python --template browser-use\n\n# Create a TypeScript app with Stagehand\nkernel create --name my-agent --language ts --template stagehand\n\n# Create a Python Computer Use app\nkernel create --name my-cu-app --language py --template anthropic-computer-use\n```\n\n### Deploy with environment variables\n\n```bash\n# Set individual variables\nkernel deploy index.ts --env API_KEY=abc123 --env DEBUG=true\n\n# Load from .env file\nkernel deploy index.ts --env-file .env\n\n# Combine both methods\nkernel deploy index.ts --env-file .env --env OVERRIDE_VAR=value\n```\n\n### Invoke with payload\n\n```bash\n# Simple invoke\nkernel invoke my-scraper scrape-page\n\n# With JSON payload\nkernel invoke my-scraper scrape-page --payload '{\"url\": \"https://example.com\"}'\n\n# Synchronous invoke (wait for completion)\nkernel invoke my-scraper quick-task --sync\n```\n\n### Follow logs in real-time\n\n```bash\n# Follow logs\nkernel logs my-app --follow\n\n# Show recent logs with timestamps\nkernel logs my-app --since 1h --with-timestamps\n```\n\n### Browser management\n\n```bash\n# List all browsers\nkernel browsers list\n\n# Create a new browser session\nkernel browsers create\n\n# Create a browser with a longer timeout (up to 72 hours)\nkernel browsers create --timeout 3600\n\n# Create a headless browser in stealth mode\nkernel browsers create --headless --stealth\n\n# Create a browser in kiosk mode\nkernel browsers create --kiosk\n\n# Create a browser with a profile for session state\nkernel browsers create --profile-name my-profile\n\n# Delete a browser\nkernel browsers delete browser123 --yes\n\n# Get live view URL\nkernel browsers view browser123\n\n# Stream browser logs\nkernel browsers logs stream my-browser --source supervisor --follow --supervisor-process chromium\n\n# Start a replay recording\nkernel browsers replays start my-browser --framerate 30 --max-duration 300\n\n# Execute a command in the browser VM\nkernel browsers process exec my-browser -- ls -alh /tmp\n\n# Upload files to the browser VM\nkernel browsers fs upload my-browser --file \"local.txt:remote.txt\" --dest-dir \"/tmp\"\n\n# List files in a directory\nkernel browsers fs list-files my-browser --path \"/tmp\"\n\n# Click the mouse at coordinates (100, 200)\nkernel browsers computer click-mouse my-browser --x 100 --y 200\n\n# Double-click the right mouse button\nkernel browsers computer click-mouse my-browser --x 100 --y 200 --num-clicks 2 --button right\n\n# Move the mouse to coordinates (500, 300)\nkernel browsers computer move-mouse my-browser --x 500 --y 300\n\n# Take a full screenshot\nkernel browsers computer screenshot my-browser --to screenshot.png\n\n# Take a screenshot of a specific region\nkernel browsers computer screenshot my-browser --to region.png --x 0 --y 0 --width 800 --height 600\n\n# Type text in the browser\nkernel browsers computer type my-browser --text \"Hello, World!\"\n\n# Type text with a 100ms delay between keystrokes\nkernel browsers computer type my-browser --text \"Slow typing...\" --delay 100\n\n```\n\n### Playwright execution\n\n```bash\n# Execute inline Playwright (TypeScript) code\nkernel browsers playwright execute my-browser 'await page.goto(\"https://example.com\"); const title = await page.title(); return title;'\n\n# Or pipe code from stdin\ncat \u003c\u003c'TS' | kernel browsers playwright execute my-browser\nawait page.goto(\"https://example.com\");\nconst title = await page.title();\nreturn { title };\nTS\n\n# With a timeout in seconds\nkernel browsers playwright execute my-browser --timeout 30 'await (await context.newPage()).goto(\"https://example.com\")'\n\n# Mini CDP connection load test (10s)\ncat \u003c\u003c'TS' | kernel browsers playwright execute my-browser\nconst start = Date.now();\nlet ops = 0;\nwhile (Date.now() - start \u003c 10_000) {\n  await page.evaluate(\"new Date();\");\n  ops++;\n}\nconst durationMs = Date.now() - start;\nconst opsPerSec = ops / (durationMs / 1000);\nreturn { opsPerSec, ops, durationMs };\nTS\n```\n\n### Extension management\n\n```bash\n# List all uploaded extensions\nkernel extensions list\n\n# Upload an unpacked extension directory\nkernel extensions upload ./my-extension --name my-custom-extension\n\n# Download an extension from Chrome Web Store\nkernel extensions download-web-store \"https://chrome.google.com/webstore/detail/extension-id\" --to ./downloaded-extension\n\n# Download a previously uploaded extension\nkernel extensions download my-extension-id --to ./my-extension\n\n# Delete an extension\nkernel extensions delete my-extension-name --yes\n\n# Upload extensions to a running browser instance\nkernel browsers extensions upload my-browser ./extension1 ./extension2\n```\n\n### Proxy management\n\n```bash\n# List proxy configurations\nkernel proxies list\n\n# Create a datacenter proxy\nkernel proxies create --type datacenter --country US --name \"US Datacenter\"\n\n# Create a datacenter proxy using HTTP protocol\nkernel proxies create --type datacenter --country US --protocol http --name \"US DC (HTTP)\"\n\n# Create a custom proxy\nkernel proxies create --type custom --host proxy.example.com --port 8080 --username myuser --password mypass --name \"My Custom Proxy\"\n\n# Create a residential proxy with location and OS\nkernel proxies create --type residential --country US --city sanfrancisco --state CA --zip 94107 --asn AS15169 --os windows --name \"SF Residential\"\n\n# Create a mobile proxy with carrier\nkernel proxies create --type mobile --country US --carrier verizon --name \"US Mobile\"\n\n# Get proxy details\nkernel proxies get prx_123\n\n# Delete a proxy (skip confirmation)\nkernel proxies delete prx_123 --yes\n```\n\n## Getting Help\n\n- `kernel --help` - Show all available commands\n- `kernel \u003ccommand\u003e --help` - Get help for a specific command\n\n## Documentation\n\nFor complete documentation, visit:\n\n- [📖 Documentation](https://onkernel.com/docs)\n- [🚀 Quickstart Guide](https://onkernel.com/docs/quickstart)\n- [📋 CLI Reference](https://onkernel.com/docs/reference/cli)\n\n## Support\n\n- [Discord Community](https://discord.gg/kernel)\n- [GitHub Issues](https://github.com/onkernel/kernel/issues)\n- [Documentation](https://onkernel.com/docs)\n\n---\n\nFor development and contribution information, see [DEVELOPMENT.md](./DEVELOPMENT.md).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonkernel%2Fcli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonkernel%2Fcli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonkernel%2Fcli/lists"}