{"repo":"steel-dev/steel-browser","free":true,"listed":false,"github":"https://github.com/steel-dev/steel-browser","clone":"git clone https://github.com/steel-dev/steel-browser.git","description":"🔥 Open Source Browser API for AI Agents & Apps. Steel Browser is a batteries-included browser sandbox that lets you automate the web without worrying about infrastructure.","language":"TypeScript","stars":7494,"topics":["ai","ai-agents","ai-tools","browser-automation","llm"],"license":"Apache-2.0","category":"browser_automation","readme_excerpt":"<br />\n<p align=\"center\">\n<a href=\"https://steel.dev\">\n  <img src=\"images/steel_header_logo.png\" alt=\"Steel Logo\" width=\"100\">\n</a>\n</p>\n\n\n\n<h3 align=\"center\"><b>Steel</b></h3>\n<p align=\"center\">\n    <b>The open-source browser API for AI agents & apps.</b> <br />\n    The best way to build live web agents and browser automation tools.\n</p>\n\n<div align=\"center\">\n\n[![Commit Activity](https://img.shields.io/github/commit-activity/m/steel-dev/steel-browser?color=yellow)](https://github.com/steel-dev/steel-browser/commits/main)\n[![License](https://img.shields.io/github/license/steel-dev/steel-browser?color=yellow)](https://github.com/steel-dev/steel-browser/blob/main/LICENSE)\n[![Discord](https://img.shields.io/discord/1285696350117167226?label=discord)](https://discord.gg/steel-dev)\n[![Twitter Follow](https://img.shields.io/twitter/follow/steeldotdev)](https://twitter.com/steeldotdev)\n[![GitHub stars](https://img.shields.io/github/stars/steel-dev/steel-browser)](https://github.com/steel-dev/steel-browser)\n\n</div>\n\n<h4 align=\"center\">\n    <a href=\"https://app.steel.dev/sign-up\" target=\"_blank\">\n      Get Started\n  </a>  ·\n    <a href=\"https://docs.steel.dev/\" target=\"_blank\">\n      Documentation\n  </a>  ·\n  <a href=\"https://steel.dev/\" target=\"_blank\">\n      Website\n  </a> ·\n  <a href=\"https://github.com/steel-dev/steel-cookbook\" target=\"_blank\">\n      Cookbook\n  </a>\n</h4>\n\n<p align=\"center\">\n  <img src=\"images/demo.gif\" alt=\"Steel Demo\" width=\"600\">\n</p>\n\n## ✨ Highlights\n\n[Steel.dev](https://steel.dev) is an open-source browser API that makes it easy to build AI apps and agents that interact with the web. Instead of building automation infrastructure from scratch, you can focus on your AI application while Steel handles the complexity.\n\nUnder the hood, it manages sessions, pages, and browser processes, allowing you to perform complex browsing tasks programmatically without any of the headaches:\n- **Full Browser Control**: Uses Puppeteer and CDP for complete control over Chrome instances -- allowing you to connect using Puppeteer, Playwright, or Selenium.\n- **Session Management**: Maintains browser state, cookies, and local storage across requests\n- **Proxy Support**: Built-in proxy chain management for IP rotation\n- **Extension Support**: Load custom Chrome extensions for enhanced functionality\n- **Debugging Tools**: Built-in request logging and a UI to view/debug sessions with\n- **Anti-Detection**: Includes stealth plugins and fingerprint management\n- **Resource Management**: Automatic cleanup and browser lifecycle management\n- **Browser Tools**: Exposes APIs to quick convert pages to markdown, readability, screenshots, or PDFs.\n\n\nFor detailed API documentation and examples, check out our [API reference](https://docs.steel.dev/api-reference) or explore the Swagger UI directly at `http://0.0.0.0:3000/documentation`.\n\n> Steel is in public beta and evolving every day. Your suggestions, ideas, and reported bugs help us immensely. Do not hesitate to join in the conversation on [Discord](https://discord.gg/steel-dev) or raise a GitHub issue. We read everything, respond to most, and love you.\n\nIf you love open-source, AI, and dev tools, [we're hiring across the stack](https://jobs.ashbyhq.com/steel)!\n\n### Make sure to give us a star ⭐\n\n<img width=\"200\" alt=\"Start us on Github!\" src=\"images/star_img.png\">\n\n## 🛠️ Getting Started\nThe easiest way to get started with Steel is by creating a [Steel Cloud](https://app.steel.dev) account. Otherwise, you can deploy this Steel browser instance to a cloud provider or run it locally.\n\n## ⚡ Quick Deploy\nIf you're looking to deploy to a cloud provider, we've got you covered.\n\n| Deployment methods | Link |\n| -------------------- | ----- |\n| Pre-built Docker Image (combined API + UI) | [![Deploy with Github Container Registry](https://img.shields.io/badge/GHCR-478CFF?style=for-the-badge&labelColor=478CFF&logo=github&logoColor=white)](https://github.com/steel-dev/steel-browser/pkgs/container/steel-browser) |\n| 1-click deploy to Railway | [![Deploy on Railway](https://img.shields.io/badge/Railway-B039CB?style=for-the-badge&labelColor=B039CB&logo=railway&logoColor=white)](https://railway.app/deploy/steelbrowser) |\n| 1-click deploy to Render | [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy) |\n\n\n## 💻 Running Locally\n\n### Docker\n\nThe simplest way to deploy/run a Steel browser instance locally is to run the pre-built Docker image:\n\n```bash\n# Pull and run the Docker image\ndocker run -p 3000:3000 -p 9223:9223 ghcr.io/steel-dev/steel-browser\n```\n\nThis will start the Steel browser server on port 3000 (http://localhost:3000) and the UI at http://localhost:3000/ui. The 9223 port is used for the console debugger.\n\nYou can now create sessions, scrape pages, take screenshots, and more. Jump to the [Usage](#usage) section for some quick examples on how you can do that.\n\nAlternatively, you can run the API and UI separately with docker compose:\n\n```bash\ndocker compose up\n```\n\nFor Mac Silicon users, you will need to pass this env flag to the Docker compose command to run the images on the correct platform:\n```bash\nDOCKER_DEFAULT_PLATFORM=linux/arm64 docker compose up\n```\n\n## Quickstart for Contributors\nWhen developing locally, you will need to run the [`docker-compose.dev.yml`](./docker-compose.dev.yml) file instead of the default [`docker-compose.yml`](./docker-compose.yml) file so that your local changes are reflected. Doing this will build the Docker images from the [`api`](./api) and [`ui`](./ui) directories and run the server and UI on port 3000 and 5173 respectively.\n\n```bash\ndocker compose -f docker-compose.dev.yml up\n```\n\nYou will also need to run it with `--build` to ensure the Docker images are re-built every time you make changes:\n\n```bash\ndocker compose -f docker-compose.dev.yml up --build\n```\n\nIf you run on a custom host, create a `.env` file (see `docs/DEVELOPMENT_SETUP.md` for variables) or modify the environment variables used by `docker-compose.dev.yml` to use your host.\n\n### Node.js\nAlternatively, if you have Node.js and Chrome installed, you can run both the server and the UI directly:\n\n```bash\nnpm install\nnpm run dev\n```\n\nThis will also start the Steel server on port 3000 and the UI on port 5173.\n\nMake sure you have the Chrome executable installed and in one of these paths:\n\n- **Linux**:\n  `/usr/bin/google-chrome`\n\n- **MacOS**:\n  `/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`\n\n- **Windows**:\n  - `C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe` OR\n  - `C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe`\n\n#### Custom Chrome Executable\n\nIf you have a custom Chrome executable or a different path, you can set the `CHROME_EXECUTABLE_PATH` environment variable to the path of your Chrome executable:\n\n```bash\nexport CHROME_EXECUTABLE_PATH=/path/to/your/chrome\nnpm run dev\n```\n\nFor more details on where this is checked look at [`api/src/utils/browser.ts`](./api/src/utils/browser.ts).\n\n## 🏄🏽‍♂️ Usage\n> If you're looking for quick examples on how to use Steel, check out the [Cookbook](https://github.com/steel-dev/steel-cookbook).\n>\n> Alternatively you can play with the [REPL package](./repl/README.md) too `cd repl` and `npm run start`\n\nThere are two main ways to interact with the Steel browser API:\n1. [Using Sessions](#sessions)\n2. [Using the Quick Actions Endpoints](#quick-actions-api)\n\nIn these examples, we assume your custom Steel API endpoint is `http://localhost:3000`.\n\nThe full REST OpenAPI documentation can be found [on our site](https://docs.steel.dev/api-reference) and on your local Steel instance at `http://localhost:3000/documentation`.\n\n#### Using the SDKs\nIf you prefer to use the our Python and Node SDKs, you can install the `steel-sdk` package for Node or Python.\n\nThese SDKs are built on top of the REST API and provide a more convenient way to interact with the Steel browser API. They are fully typed, and are compatible with both Steel Cloud and self-hosted Steel instances (changeable using the `baseURL` option on Node and `base_url` on Python).\n\nFor more details on installing and using the SDKs, please see the [Node SDK Reference](https://github.com/steel-dev/steel-node/blob/main/api.md) and the [Python SDK Reference](https://github.com/steel-dev/steel-python/blob/main/api.md).\n\n\n### Sessions\nThe `/sessions` endpoint lets you relaunch the browser with custom options or extensions (e.g. with a custom proxy) and also reset the browser state. Perfect for complex, stateful workflows that need fine-grained control.\n\nOnce you have a session, you can use the session ID or the root URL to interact with the browser. To do this, you will need to use Puppeteer or Playwright. You can find some examples of how to use Puppeteer and Playwright with Steel in the docs below:\n* [Puppeteer Integration](https://docs.steel.dev/overview/guides/puppeteer)\n* [Playwright with Node](https://docs.steel.dev/overview/guides/playwright-node)\n* [Playwright with Python](https://docs.steel.dev/overview/guides/playwright-python)\n\n<details open>\n<summary><b>Creating a Session using the Node SDK</b></summary>\n<br>\n\n```typescript\nimport Steel from 'steel-sdk';\n\nconst client = new Steel({\n  baseURL: \"http://localhost:3000\", // Custom API Base URL override\n});\n\n(async () => {\n  try {\n    // Create a new browser session with current API fields\n    const session = await client.sessions.create({\n      blockAds: true,\n      proxyUrl: \"user:pass@host:port\", // optional\n      dimensions: { width: 1280, height: 800 }, // optional\n    });\n    console.log(\"Created session with ID:\", session.id);\n  } catch (error) {\n    console.error(\"Error creating session:\", error);\n  }\n})();\n````\n</details>\n\n<details>\n<summary><b>Creating a Session using the Python SDK</b></summary>\n<br>\n\n````python\nimport os\nfrom steel import Steel\n\nclient = Steel(\n    base_url=\"http://localhost:3000\",  # Custom API Base URL override\n)\n\ntry:\n    # Create a new browser session","default_branch":"main","files":331,"tree":[".dockerignore",".env.example",".gitattributes",".github/ISSUE_TEMPLATE/bug_report.md",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/feature_request.md",".github/ISSUE_TEMPLATE/question.md",".github/auto-assign.yml",".github/labeler.yml",".github/labels.yml",".github/pull_request_template.md",".github/workflows/auto-assign.yml",".github/workflows/build-docker.yml",".github/workflows/check-build.yml",".github/workflows/pr-checks.yml",".github/workflows/release.yml",".github/workflows/welcome.yml",".gitignore",".husky/commit-msg",".husky/pre-commit","CONTRIBUTING.md","Dockerfile","LICENSE","README.md","api/.dockerignore","api/.env.example","api/.gitattributes","api/.gitignore","api/.prettierignore","api/.prettierrc","api/.puppeteerrc.cjs","api/Dockerfile","api/entrypoint.sh","api/extensions/recorder/.gitignore","api/extensions/recorder/icon.png","api/extensions/recorder/manifest.json","api/extensions/recorder/package-lock.json","api/extensions/recorder/package.json","api/extensions/recorder/src/background.js","api/extensions/recorder/src/inject.js","api/extensions/recorder/webpack.config.mjs","api/nginx.conf","api/openapi/generate.ts","api/openapi/schemas.json","api/package.json","api/selenium/driver/LICENSE.chromedriver","api/selenium/driver/THIRD_PARTY_NOTICES.chromedriver","api/selenium/driver/chromedriver2","api/selenium/server/selenium-server.jar","api/src/config.ts","api/src/env.ts","api/src/index.ts","api/src/modules/actions/actions.controller.ts","api/src/modules/actions/actions.routes.ts","api/src/modules/actions/actions.schema.ts","api/src/modules/cdp/cdp.routes.ts","api/src/modules/cdp/cdp.schemas.ts","api/src/modules/files/files.controller.ts","api/src/modules/files/files.routes.ts","api/src/modules/files/files.schema.ts","api/src/modules/logs/logs.routes.ts","api/src/modules/logs/logs.schema.ts","api/src/modules/selenium/selenium.routes.ts","api/src/modules/selenium/selenium.schema.ts","api/src/modules/sessions/sessions.controller.ts","api/src/modules/sessions/sessions.routes.ts","api/src/modules/sessions/sessions.schema.ts","api/src/plugins/browser-session.ts","api/src/plugins/browser-socket/browser-socket.ts","api/src/plugins/browser-socket/casting.handler.ts","api/src/plugins/browser-socket/handlers/cast.handler.ts","api/src/plugins/browser-socket/handlers/index.ts","api/src/plugins/browser-socket/handlers/logs.handler.ts","api/src/plugins/browser-socket/handlers/pageId.handler.ts","api/src/plugins/browser-socket/handlers/recording.handler.ts","api/src/plugins/browser.ts","api/src/plugins/custom-body-parser.ts","api/src/plugins/file-storage.ts","api/src/plugins/request-logger.ts","api/src/plugins/scalar-theme.ts","api/src/plugins/schemas.ts","api/src/plugins/selenium.ts","api/src/plugins/ui-plugin.ts","api/src/routes.ts","api/src/scripts/fingerprint.js","api/src/scripts/index.ts","api/src/services/cdp/cdp.service.ts","api/src/services/cdp/errors/launch-errors.ts","api/src/services/cdp/instrumentation/browser-interaction-events.test.ts","api/src/services/cdp/instrumentation/browser-interaction-events.ts","api/src/services/cdp/instrumentation/browser-interaction-sanitize.test.ts","api/src/services/cdp/instrumentation/browser-interaction-sanitize.ts","api/src/services/cdp/instrumentation/browser-interaction-script.test.ts","api/src/services/cdp/instrumentation/browser-interaction-script.ts","api/src/services/cdp/instrumentation/browser-logger.test.ts","api/src/services/cdp/instrumentation/browser-logger.ts","api/src/services/cdp/instrumentation/cdp-events.ts","api/src/services/cdp/instrumentation/extension-events.ts","api/src/services/cdp/instrumentation/network-events.ts","api/src/services/cdp/instrumentation/page-console.ts","api/src/services/cdp/instrumentation/page-events.ts","api/src/services/cdp/instrumentation/storage/duckdb-storage.ts","api/src/services/cdp/instrumentation/storage/in-memory-storage.ts","api/src/services/cdp/instrumentation/storage/index.ts","api/src/services/cdp/instrumentation/storage/log-storage.interface.ts","api/src/services/cdp/instrumentation/storage/safe-json.ts","api/src/services/cdp/instrumentation/target-manager.test.ts","api/src/services/cdp/instrumentation/target-manager.ts","api/src/services/cdp/instrumentation/types.ts","api/src/services/cdp/instrumentation/utils.ts","api/src/services/cdp/instrumentation/worker-events.ts","api/src/services/cdp/plugins/core/base-plugin.ts","api/src/services/cdp/plugins/core/index.ts","api/src/services/cdp/plugins/core/plugin-manager.ts","api/src/services/cdp/plugins/pptr-extensions.d.ts","api/src/services/cdp/utils/error-handlers.ts","api/src/services/cdp/utils/validation.test.ts","api/src/services/cdp/utils/validation.ts","api/src/services/context/chrome-context.service.ts","api/src/services/context/types.ts","api/src/services/file.service.ts","api/src/services/leveldb/localstorage.ts","api/src/services/leveldb/sessionstorage.ts","api/src/services/selenium.service.ts","api/src/services/session.service.ts","api/src/services/timezone-fetcher.service.ts","api/src/services/websocket-registry.service.ts","api/src/steel-browser-plugin.ts","api/src/telemetry/noop.ts","api/src/telemetry/tracer.ts","api/src/templates/live-session-streamer.ejs","api/src/types/browser.ts","api/src/types/casting.ts","api/src/types/enums.ts","api/src/types/fastify.d.ts","api/src/types/index.ts","api/src/types/websocket.ts","api/src/utils/browser.ts","api/src/utils/casting.ts","api/src/utils/context.ts","api/src/utils/errors.ts","api/src/utils/extensions.ts","api/src/utils/leveldb.ts","api/src/utils/logging.ts","api/src/utils/passthough-proxy.ts","api/src/utils/proxy.ts","api/src/utils/requests.ts","api/src/utils/retry.ts","api/src/utils/schema.ts","api/src/utils/scrape/__tests__/README.md","api/src/utils/scrape/__tests__/baseline.json","api/src/utils/scrape/__tests__/eval/corpus.test.ts","api/src/utils/scrape/__tests__/eval/corpus.ts","api/src/utils/scrape/__tests__/eval/invariants.test.ts","api/src/utils/scrape/__tests__/eval/invariants.ts","api/src/utils/scrape/__tests__/eval/runEval.ts","api/src/utils/scrape/__tests__/fixtures/api.json","api/src/utils/scrape/__tests__/fixtures/article.html.gz","api/src/utils/scrape/__tests__/fixtures/arxiv.html.gz","api/src/utils/scrape/__tests__/fixtures/fallback.html","api/src/utils/scrape/__tests__/fixtures/sec.html.gz","api/src/utils/scrape/__tests__/fixtures/synthetic.html","api/src/utils/scrape/__tests__/fixtures/wikipedia.html.gz","api/src/utils/scrape/__tests__/helpers.ts","api/src/utils/scrape/__tests__/markdown.test.ts","api/src/utils/scrape/cleanHtml.ts","api/src/utils/scrape/index.ts","api/src/utils/scrape/jsonToMarkdown.ts","api/src/utils/scrape/pdfToHtml.ts","api/src/utils/scrape/readability.ts","api/src/utils/scrape/safeGoTo.ts","api/src/utils/scrape/stripBase64Images.ts","api/src/utils/size.ts","api/src/utils/text.ts","api/src/utils/url.ts","api/tsconfig.json","api/tsconfig.test.json","api/vitest.config.ts","commitlint.config.cjs","docker-compose.dev.yml","docker-compose.yml","docs/ARCHITECTURE.md","docs/DEVELOPMENT_SETUP.md","docs/PLUGIN_DEVELOPMENT.md","docs/README.md","docs/TROUBLESHOOTING.md","images/demo.gif","images/star_img.png","images/steel_header_logo.png","nginx.conf","package-lock.json","package.json","render.yaml","repl/README.md","repl/package.json","repl/src/script.ts","ui/.dockerignore","ui/.env.local.example","ui/.eslintrc.cjs","ui/.gitignore","ui/Dockerfile","ui/README.md","ui/components.json","ui/entrypoint.sh","ui/index.html","ui/nginx.conf.template","ui/openapi-ts.config.ts","ui/package.json","ui/postcss.config.js","ui/public/grid.svg","ui/public/icon.png","ui/src/App.tsx","ui/src/components/badges/proxy-badge.tsx","ui/src/components/badges/user-agent-badge.tsx","ui/src/components/badges/websocket-url-badge.tsx","ui/src/components/header/header.tsx","ui/src/components/header/index.tsx","ui/src/components/icons/ChromeIcon.tsx","ui/src/components/icons/DeleteIcon.tsx","ui/src/components/icons/GlobeIcon.tsx","ui/src/components/icons/GlowingGreenDot.tsx","ui/src/components/icons/KeyIcon.tsx","ui/src/components/icons/LoadingSpinner.tsx","ui/src/components/icons/NinjaIcon.tsx","ui/src/components/icons/SessionIcon.tsx","ui/src/components/icons/SettingsIcon.tsx","ui/src/components/illustrations/command-line.tsx","ui/src/components/illustrations/globe.tsx","ui/src/components/loading/Loading.styles.tsx","ui/src/components/loading/Loading.tsx","ui/src/components/loading/index.tsx","ui/src/components/sessions/release-session-dialog.tsx","ui/src/components/sessions/session-console/index.tsx","ui/src/components/sessions/session-console/session-details.tsx","ui/src/components/sessions/session-console/session-devtools.tsx","ui/src/components/sessions/session-console/session-logs.tsx","ui/src/components/sessions/session-viewer/empty-state.tsx","ui/src/components/sessions/session-viewer/example-events/example-events.json","ui/src/components/sessions/session-viewer/example-events/test.json","ui/src/components/sessions/session-viewer/index.tsx","ui/src/components/sessions/session-viewer/live-empty-state.tsx","ui/src/components/sessions/session-viewer/session-viewer-controls.css","ui/src/components/sessions/session-viewer/session-viewer.tsx","ui/src/components/theme-provider.tsx","ui/src/components/ui/avatar.tsx","ui/src/components/ui/badge.tsx","ui/src/components/ui/button.tsx","ui/src/components/ui/card.tsx","ui/src/components/ui/checkbox.tsx","ui/src/components/ui/dialog.tsx","ui/src/components/ui/form.tsx","ui/src/components/ui/input.tsx","ui/src/components/ui/label.tsx","ui/src/components/ui/pagination.tsx","ui/src/components/ui/popover.tsx","ui/src/components/ui/select.tsx","ui/src/components/ui/separator.tsx","ui/src/components/ui/table.tsx","ui/src/components/ui/tabs.tsx","ui/src/components/ui/toast.tsx","ui/src/components/ui/toaster.tsx","ui/src/containers/session-container.tsx","ui/src/contexts/sessions-context/index.tsx","ui/src/contexts/sessions-context/sessions-context.tsx","ui/src/contexts/sessions-context/sessions-context.types.ts","ui/src/env.ts","ui/src/fonts/Geist/Geist-Black.otf","ui/src/fonts/Geist/Geist-Black.woff2","ui/src/fonts/Geist/Geist-Bold.otf","ui/src/fonts/Geist/Geist-Bold.woff2","ui/src/fonts/Geist/Geist-Light.otf","ui/src/fonts/Geist/Geist-Light.woff2","ui/src/fonts/Geist/Geist-Medium.otf","ui/src/fonts/Geist/Geist-Medium.woff2","ui/src/fonts/Geist/Geist-Regular.otf","ui/src/fonts/Geist/Geist-Regular.woff2","ui/src/fonts/Geist/Geist-SemiBold.otf","ui/src/fonts/Geist/Geist-SemiBold.woff2","ui/src/fonts/Geist/Geist-Thin.otf","ui/src/fonts/Geist/Geist-Thin.woff2","ui/src/fonts/Geist/Geist-UltraBlack.otf","ui/src/fonts/Geist/Geist-UltraBlack.woff2","ui/src/fonts/Geist/Geist-UltraLight.otf","ui/src/fonts/Geist/Geist-UltraLight.woff2","ui/src/fonts/Geist/GeistVariableVF.ttf","ui/src/fonts/Geist/GeistVariableVF.woff2","ui/src/fonts/Geist/LICENSE.TXT","ui/src/fonts/GeistMono/GeistMono-Black.otf","ui/src/fonts/GeistMono/GeistMono-Black.woff2","ui/src/fonts/GeistMono/GeistMono-Bold.otf","ui/src/fonts/GeistMono/GeistMono-Bold.woff2","ui/src/fonts/GeistMono/GeistMono-Light.otf","ui/src/fonts/GeistMono/GeistMono-Light.woff2","ui/src/fonts/GeistMono/GeistMono-Medium.otf","ui/src/fonts/GeistMono/GeistMono-Medium.woff2","ui/src/fonts/GeistMono/GeistMono-Regular.otf","ui/src/fonts/GeistMono/GeistMono-Regular.woff2","ui/src/fonts/GeistMono/GeistMono-SemiBold.otf","ui/src/fonts/GeistMono/GeistMono-SemiBold.woff2","ui/src/fonts/GeistMono/GeistMono-Thin.otf","ui/src/fonts/GeistMono/GeistMono-Thin.woff2","ui/src/fonts/GeistMono/GeistMono-UltraBlack.otf","ui/src/fonts/GeistMono/GeistMono-UltraBlack.woff2","ui/src/fonts/GeistMono/GeistMono-UltraLight.otf","ui/src/fonts/GeistMono/GeistMono-UltraLight.woff2","ui/src/fonts/GeistMono/GeistMonoVariableVF.ttf","ui/src/fonts/GeistMono/GeistMonoVariableVF.woff2","ui/src/fonts/GeistMono/LICENSE.TXT","ui/src/hooks/use-sessions-context.ts","ui/src/hooks/use-toast.ts","ui/src/index.css","ui/src/lib/query-client.ts","ui/src/lib/utils.ts","ui/src/main.tsx","ui/src/root-layout.tsx","ui/src/steel-client/index.ts","ui/src/steel-client/schemas.gen.ts","ui/src/steel-client/services.gen.ts","ui/src/steel-client/types.gen.ts","ui/src/styles/common.styles.tsx","ui/src/styles/theme.ts","ui/src/types/cdp.ts","ui/src/types/props.ts","ui/src/utils/formatting.ts","ui/src/utils/toasts.ts","ui/src/vite-env.d.ts","ui/tailwind.config.js","ui/tsconfig.json","ui/tsconfig.node.json","ui/vercel.json","ui/vite.config.ts"],"storefront":"/r/steel-dev","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/steel-dev/steel-browser/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}