Supabase Edge Runtime
A web server based on Deno runtime, capable of running JavaScript, TypeScript, and WASM services. Edge Runtime is built and maintained by the Supabase team. For more details, read the intro blog post.
You can use it to:
- Locally test and self-host Supabase's Edge Functions (or any Deno Function)
- As a programmable HTTP Proxy: You can intercept / route HTTP requests
WARNING: Beta Software. There will be breaking changes to APIs / Configuration Options
Architecture
The edge runtime can be divided into two runtimes with different purposes.
- Main runtime:
- An instance for the main runtime is responsible for proxying the transactions to the user runtime.
- The main runtime is meant to be an entry point before running user functions, where you can authentication, etc. before calling the user function.
- Has no user-facing limits
- Has access to all environment variables.
- User runtime:
- An instance for the user runtime is responsible for executing users' code.
- Limits are required to be set such as: Memory and Timeouts.
- Has access to environment variables explictly allowed by the main runtime.
How to run locally
To serve all functions in the examples folder on port 9000, you can do this with the example main service provided with this repo
./scripts/run.sh
Test by calling the hello world function
curl --request POST 'http://localhost:9000/hello-world' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "John Doe"
}'
To run with a different entry point, you can pass a different main service like below
./scripts/run.sh start --main-service /path/to/main-service-directory -p 9000
using Docker:
docker build -t supabase/edge-runtime .
docker run -it --rm -p 9000:9000 -v ./examples/:/examples supabase/edge-runtime start --main-service /examples/main
How to run tests
./scripts/test.sh [TEST_NAME]
How to update to a newer Deno version
- Select the Deno version to upgrade and visit its tag on GitHub (eg: https://github.com/denoland/deno/blob/v1.30.3/Cargo.toml)
- Open the
Cargo.toml
at the root of of this repo and modify alldeno_*
modules to match to the selected tag of Deno.
Contributions
We welcome contributions to Supabase Edge Runtime!
To get started either open an issue on GitHub or drop us a message on Discord
Edge Runtime follows Supabase's Code of Conduct.