# BrowserPod documentation > BrowserPod runs Linux applications in a browser tab, client-side, on a WebAssembly kernel: Node.js 22 and Rust programs, with bash, git, npm and other command-line tools, and a persistent filesystem. Install it from npm (`@leaningtech/browserpod`); a pod boots with no API key and no account. Coding agents: load the BrowserPod skill first: https://browserpod.io/skills/browserpod/SKILL.md. Every page below is Markdown. All of them in one file: https://browserpod.io/docs/llms-full.txt. - Boot without an API key: `BrowserPod.boot({})` runs the pod on a fetch network, where outgoing requests go through the browser (CORS applies; `BrowserPod.opinionatedFetch` makes npm and common developer services work). - Add BrowserPod Edge, the optional network service (free and paid plans), only if the user asks for it or the app needs Portals (public URLs for servers in the pod), TCP, or outbound networking without CORS limits. Edge needs an API key from https://console.browserpod.io. - Licence: free for any use under the BrowserPod Community Licence; add a visible "Powered by BrowserPod" credit linking to browserpod.io. Edge Pro includes the BrowserPod Community Licence without attribution. Load the runtime from BrowserPod's CDN: copying or self-hosting its files needs the BrowserPod Enterprise Licence. https://browserpod.io/license - Python is a preview. Chromium-based browsers work best; Firefox and Safari have limitations. ## Start here - [BrowserPod](https://browserpod.io/docs/overview.md): A universal execution layer for running code safely in the browser ## Getting started - [Quickstart](https://browserpod.io/docs/getting-started/quickstart.md): Get started with BrowserPod in minutes: use a quickstart template, boot a Pod with no account or API key, and run your first sandboxed app in the browser. - [Set up a basic NPM-based project](https://browserpod.io/docs/getting-started/expressjs.md): In this tutorial you will set up a simple NPM project that runs an HTTP server using Express.js ## Understanding browserpod - [API keys](https://browserpod.io/docs/understanding-browserpod/api-key.md): How BrowserPod API keys work and where to place them - [Filesystem](https://browserpod.io/docs/understanding-browserpod/filesystem.md): How the virtual filesystem is structured and how it behaves - [Portals](https://browserpod.io/docs/understanding-browserpod/portals.md): How Portals let you preview and share services running inside a Pod - [Cross-origin isolation](https://browserpod.io/docs/understanding-browserpod/cross-origin-isolation.md): Why BrowserPod needs cross-origin isolation, and the COOP and COEP headers your page must send to enable SharedArrayBuffer in the browser. - [Networking](https://browserpod.io/docs/understanding-browserpod/networking.md): How networking works in BrowserPod, and the differences between edge and fetch networks. ## Guides - [Write files to the Pod](https://browserpod.io/docs/guides/write-files-to-pod.md): How to write text, binary files, and full projects into a Pod - [Run programs in a Pod](https://browserpod.io/docs/guides/run-programs-in-a-pod.md): Create a terminal and run programs inside a Pod - [Set up a Portal](https://browserpod.io/docs/guides/setup-portal.md): Preview and share a server running in a Pod with a Portal URL - [Set CORS and COOP headers](https://browserpod.io/docs/guides/hosting.md): Cross-origin isolation for BrowserPod (COOP and COEP) - [Installing the Rust toolchain](https://browserpod.io/docs/guides/installing-rust-toolchain.md): How to install and use the BrowserPod Rust toolchain. - [Working around native npm dependencies](https://browserpod.io/docs/guides/working-around-native-npm-dependencies.md): Using npm packages with native components in BrowserPod - [Debugging BrowserPod](https://browserpod.io/docs/guides/common-errors.md): Quick explanations for frequent BrowserPod errors ## Reference - [BrowserPod](https://browserpod.io/docs/reference/BrowserPod.md): The BrowserPod class is the entry point to the API. An instance, called a Pod, is a complete, isolated Linux environment running in the browser tab. - [boot](https://browserpod.io/docs/reference/BrowserPod/boot.md): Boot a BrowserPod Pod to start an isolated, in-browser Linux runtime, optionally persisting its filesystem with a storageKey. - [createCustomTerminal](https://browserpod.io/docs/reference/BrowserPod/createCustomTerminal.md): Create a custom terminal emulator with specified dimensions and output handling - [createDefaultTerminal](https://browserpod.io/docs/reference/BrowserPod/createDefaultTerminal.md): Create an Xterm.js-based terminal emulator for input/output - [createDirectory](https://browserpod.io/docs/reference/BrowserPod/createDirectory.md): Create a directory in the Pod's filesystem - [createEdgeNetwork](https://browserpod.io/docs/reference/BrowserPod/createEdgeNetwork.md): Create an edge network that routes a Pod's traffic through BrowserPod's edge servers using an API key. - [createFetchNetwork](https://browserpod.io/docs/reference/BrowserPod/createFetchNetwork.md): Create a fetch network that connects a Pod to the internet using the browser's fetch() API. - [createFile](https://browserpod.io/docs/reference/BrowserPod/createFile.md): Create a new file in a BrowserPod Pod's virtual filesystem, returning a BinaryFile or TextFile handle depending on the mode you pass. - [onOpen](https://browserpod.io/docs/reference/BrowserPod/onOpen.md): Set up a callback that will be invoked when a file or URL is opened in the Pod - [onPortal](https://browserpod.io/docs/reference/BrowserPod/onPortal.md): Set up a callback that will be invoked when a Portal is created - [openFile](https://browserpod.io/docs/reference/BrowserPod/openFile.md): Open an existing file in a BrowserPod Pod's virtual filesystem, returning a BinaryFile or TextFile handle depending on the mode you pass. - [opinionatedFetch](https://browserpod.io/docs/reference/BrowserPod/opinionatedFetch.md): A preconfigured fetch handler that enables access to developer services like the npm registry on a fetch network. - [run](https://browserpod.io/docs/reference/BrowserPod/run.md): Run an executable inside a BrowserPod Pod, attach it to a terminal for input and output, and wait for its exit code. - [BinaryFile](https://browserpod.io/docs/reference/BinaryFile.md): Binary data, ArrayBuffer, and the BinaryFile API - [write](https://browserpod.io/docs/reference/BinaryFile/write.md): Write raw bytes from an ArrayBuffer into a BinaryFile in a BrowserPod Pod, returning the number of bytes written. - [read](https://browserpod.io/docs/reference/BinaryFile/read.md): Read raw bytes from a BinaryFile in a BrowserPod Pod, returning the requested length of data as an ArrayBuffer. - [getSize](https://browserpod.io/docs/reference/BinaryFile/getSize.md): Get the size in bytes of a BinaryFile stored in a BrowserPod Pod's virtual filesystem, returned as a promise. - [close](https://browserpod.io/docs/reference/BinaryFile/close.md): Close a BinaryFile handle in a BrowserPod Pod to flush pending writes and release the file once you have finished reading or writing. - [write](https://browserpod.io/docs/reference/TextFile/write.md): Write a string into a TextFile in a BrowserPod Pod's virtual filesystem, returning the number of bytes written. - [read](https://browserpod.io/docs/reference/TextFile/read.md): Read text from a TextFile in a BrowserPod Pod, returning the requested length of data as a decoded string. - [getSize](https://browserpod.io/docs/reference/TextFile/getSize.md): Get the size in bytes of a TextFile stored in a BrowserPod Pod's virtual filesystem, returned as a promise. - [close](https://browserpod.io/docs/reference/TextFile/close.md): Close a TextFile handle in a BrowserPod Pod to flush pending writes and release the file once you have finished reading or writing. - [Terminal](https://browserpod.io/docs/reference/Terminal.md): A handle to a terminal emulator running inside a Pod - [Process](https://browserpod.io/docs/reference/Process.md): A handle to a process running inside a Pod ## More - [FAQ](https://browserpod.io/docs/more/FAQ.md): Answers to common BrowserPod questions about API keys, backend servers, COOP and COEP headers, native binaries, browser support, and security. - [Licensing](https://browserpod.io/docs/more/licensing.md): BrowserPod is free for any use under the BrowserPod Community Licence. Edge plans for networking; Edge Pro includes the Community Licence without attribution; the BrowserPod Enterprise Licence covers self-hosting and redistribution. - [Privacy for integrators](https://browserpod.io/docs/more/privacy-for-integrators.md): What happens to your users' data when your page runs BrowserPod, and what to mention in your own privacy policy. ## Optional - [Glossary](https://browserpod.io/docs/more/glossary.md): Key terms and definitions used in BrowserPod documentation - [Changelog](https://browserpod.io/docs/more/changelog.md): Release notes and version history for BrowserPod, covering new features, runtime improvements, and bug fixes across each release.