# postgres-wasm **Repository Path**: LucasDot/postgres-wasm ## Basic Information - **Project Name**: postgres-wasm - **Description**: No description available - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-19 - **Last Updated**: 2025-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Postgres WASM

A PostgreSQL server instance running in a virtual machine running in the browser
by Supabase & Snaplet

Snaplet, Supabase and friends

Demo   •   Discord   •   Snaplet   •   Supabase

## The future is now Since we worked on this project, awesome and more usable solutions exist: - [PGlite by ElectricSQL](https://github.com/electric-sql/pglite) which is a native WASM build of Postgres - [pgmock by Stackframe](https://github.com/stackframe-projects/pgmock) which is using the same approach as this project, emulating the Postgres server in an x86 emulator While `postgres-wasm` was more of a proof of concept, both the above solutions can be used to run PostgreSQL in the browser or getting in-memory PostgreSQL databases! ## Quickstart ```terminal cd packages/runtime && npx serve ``` Go to http://localhost:3000 and have fun! ## Packages This repo is split into three packages that build up the environment for running PostgreSQL in the browser. - [runtime](/packages/runtime): The v86 emulator that starts the `buildroot` image - [Buildroot](/packages/buildroot): Scripts to build the CPU and memory snapshot run by v86. - [Websockproxy](/packages/websockproxy): Networking ## Acknowledgements - [v86](https://github.com/copy/v86) which is **the** emulator for running x86 operating systems in the browser, without it none of the following projects would be possible - [crunchydata playground](https://www.crunchydata.com/developers/playground) for leading the way and showing the world that it was possible to run PostgreSQL in the browser - [browser-shell](https://github.com/humphd/browser-shell) which was already way ahead of its time, especially on the filesystem part - [browser-linux](https://github.com/Darin755/browser-linux) for showing us how we can make the pieces fit together - [Websockets Proxy](https://github.com/benjamincburns/websockproxy) the ingenious workaround that opened up the world for **v86** emulators everywhere