# 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
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