> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vpod.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> a vpod is a lightweight, portable sandbox that gives an untrusted process an instant Linux environment.

## What is a vpod?

A `vpod` is a lightweight, portable sandbox that gives an untrusted process an instant Linux environment. It uses a RISC‑V architecture and runs entirely inside WebAssembly.

<CardGroup cols={3}>
  <Card title="Fast startup" icon="bolt">
    A vpod boots from a snapshot — a saved state with libraries already installed — in under a second.
  </Card>

  <Card title="Portable" icon="globe">
    The entire machine is a WASM component, so it runs on any OS and architecture, including CI pipelines and containers where virtualization isn't available.
  </Card>

  <Card title="Isolated" icon="shield">
    CPU, memory and filesystem live entirely inside the sandbox. The host is only reachable through access you explicitly grant.
  </Card>
</CardGroup>

## How it works

A `vpod` runs a RISC‑V virtual machine compiled to WebAssembly, implementing the RV64GC specification. When you start a `vpod`, it boots from a snapshot, a saved state, in under a second.

Pure instruction-by-instruction emulation is slow, and WebAssembly rules out a runtime JIT. So at snapshot build time, the hottest guest code paths are translated ahead of time from RISC‑V into native code that gets compiled into the WASM module itself. Translated code goes through the same MMU and memory checks as emulated code, so isolation is unchanged; CPU-bound work runs roughly 5× faster than pure emulation.

The WASM component communicates with the host through WASI 0.2, providing controlled access to filesystem, networking, and standard I/O while keeping all execution state (CPU registers, memory, filesystem) isolated inside the sandbox.

### RV64GC specification

**G — general-purpose extensions**

| Extension | Purpose                                                                                      |
| :-------- | :------------------------------------------------------------------------------------------- |
| `I`       | Base 64-bit integer instruction set                                                          |
| `M`       | Hardware multiply and divide, useful for hashing and cryptography                            |
| `A`       | Atomic operations for thread-safe programs                                                   |
| `F/D`     | Single and double-precision floating-point, suited for scientific computing and ML inference |

**C — compressed instructions**

Reduces code size by 30%, improving instruction fetch speed and memory efficiency. This matters when running a full Linux userspace inside a memory-constrained WASM environment.

<Note>
  The V (vector) extension is not implemented. RVV instructions would execute as emulated RISC-V; there is no SIMD passthrough to the host CPU. Adding V would increase emulation overhead without any performance benefit for vectorized workloads.
</Note>

## Next steps

<CardGroup cols={3}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Install the CLI or either SDK and boot your first sandbox.
  </Card>

  <Card title="Python SDK" icon="python" href="/sdk/python/sandbox">
    Run commands and Python code in an isolated sandbox from your own code.
  </Card>

  <Card title="TypeScript SDK" icon="js" href="/sdk/typescript/sandbox">
    The same sandbox from Node, or from a browser tab with no server at all.
  </Card>
</CardGroup>
