Tesserae
Free, open-source dashboard server for e-ink displays. Compose dashboards in a browser, render dithered frames, and push them over MQTT or REST to e-ink panels. Self-hosted, AGPL-3.0, no tracking.
Beachside is a typed TypeScript API for Daytona, E2B, boxd, Boat, Runloop, Freestyle and Vercel sandboxes, with a public adapter API for other providers.
Developer toolsTypeScript · JavaScriptGitHub @pandemicsynOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Like OpenRouter but for sandboxes and its just a sdk?
Loading the full README.
Read the full README ↗One SDK. Every sandbox.
A TypeScript API to create, run code in, and tear down sandboxes on providers like boxd, Freestyle, Daytona, E2B, Boat, Runloop, Archil, exe.dev and Vercel (and more). Keep application workflows consistent while configuring each provider explicitly.
Get started → · Run an agent · beachside.run
Each provider is a separately installed adapter, and you can bring your own.
| Provider | Package |
|---|---|
| boxd | @beachside/boxd |
| Freestyle | @beachside/freestyle |
| Daytona | @beachside/daytona |
| E2B | @beachside/e2b |
| Boat (exp) | @beachside/boat |
| Runloop (exp) | @beachside/runloop |
| Archil (exp) | @beachside/archil |
| exe.dev (exp) | @beachside/exe-dev |
| Vercel (exp) | @beachside/vercel |
| Modal (exp) | @beachside/modal |
| Your adapter | @beachside/adapter |
"exp" marks experimental adapters that are less tested. See Provider support for what each one can do.
npm install beachside @beachside/daytona
import { Beachside, Image } from "beachside";
import { daytonaAdapter } from "@beachside/daytona";
const client = await Beachside.connect({
adapter: daytonaAdapter,
credentials: { apiKey: process.env.DAYTONA_API_KEY! },
config: {
target: "us",
environment: Image.prepared("daytona-small"),
network: "daytona-default",
},
});
await client.sandboxes.with({}, async (box) => {
const run = await box.exec(["printf", "ready"]);
console.log(run.stdoutText());
});
await client.close();
Switching providers only changes the adapter, credentials and config you pass to connect. Your create, exec, files and destroy calls stay the same. See Getting started for every provider.
Using a coding agent? npx skills add pandemicsyn/beachside --skill beachside -g teaches it the SDK.
Same sandboxes, straight from your shell. beachside creates, runs in and removes sandboxes on any provider with an adapter. It never prompts for input, every command has a --json form, and exit codes clearly indicate what to do next, so your coding agent can drive it as easily as you can.
npm install -g @beachside/cli
beachside adapter add e2b
export BEACHSIDE_PROVIDER=e2b E2B_API_KEY=...
beachside create --name web
beachside cp ./app.py web:/tmp/app.py
beachside exec web -- python3 /tmp/app.py
beachside ls
beachside rm web
Teach your agent to use it with beachside skill setup, which installs a skill that always matches the installed CLI. See Agent skills for every option. See the Command line docs.
defineAdapter. Implement create and destroy to start, then add exec, files and recovery as your provider supports them. See Writing an adapter.