Show HN: Vessel – Portable app files (UI, FastAPI, SQLite) like .xlsx for tools

apollo_orbit2 pts1 comments

Vessel — send a tool like you'd send a spreadsheet

Open-source runtime · Chromium-first

Send a tool like you'd<br>send a spreadsheet.

The artifact format for AI-generated software : describe a tool, and the model hands you one<br>self-contained .vessel — UI, logic, and data inside — that runs the instant you open it, with<br>nothing to deploy or operate. Install the host once; any .vessel then opens by double-click,<br>runs, and saves back into the same file.

Get the host →<br>Run it yourself

Installs as a PWA — runs locally, works offline after the first load (no server). Promptless save on<br>Chromium; Firefox & Safari run degraded (open + download-to-save). ·<br>Docs →

model.vessel

ui React interface

app FastAPI · Python

data SQLite database

everything inside one passable file

The spreadsheet model, for web tech

01<br>Install the engine once

The host is a small installable PWA. You set it up a single time — like installing a spreadsheet app.

02<br>The file carries everything

A .vessel is an OPC-style ZIP (think .xlsx). UI, backend, and data travel together.

03<br>Open, edit, save in place

Double-click to run. Changes write straight back into the file — no export step, no server, no account.

What's inside the box

ui<br>React, sandboxed

The bundle's interface renders in a sandboxed, opaque-origin iframe — isolated from the host and from your machine.

app<br>Python in WASM

An ordinary FastAPI backend runs in Pyodide (CPython compiled to WebAssembly). fetch is bridged straight to ASGI.

data<br>SQLite in the file

State lives in a real SQLite database — and that database travels inside the .vessel. The file is the document.

One theme system, every tool

Tools don't hardcode colors — they style with the host's --vessel-* tokens, so every tool follows<br>the host's light/dark and chosen theme automatically. Switch them here and watch it re-theme live:

budget.vessel

Theme

Default<br>Slate<br>Warm

☾ Dark

The same tokens a bundle reads — see<br>the authoring skill.

Build one with your AI

Authoring a .vessel has a few non-obvious rules — an async-only Python backend, a single-file<br>UI, declared packages. Hand your AI agent the Vessel authoring skill and it produces valid bundles, correct<br>manifest and all.

Copy<br>Follow the Vessel authoring skill, then build me a .vessel tool:<br>https://getvessel.dev/skills/vessel-author/SKILL.md

Paste that into Claude or your agent, or<br>read the skill.<br>Prefer a CLI? npm i -g vessel-cli, then vessel new /<br>dev / build.

Run it yourself

Prefer not to depend on getvessel.dev? The host is a static app with no backend — build and serve it<br>yourself and it runs identically (and offline). Same code, your origin.

Copy<br>git clone https://github.com/apollo-orbit-dev/vessel.git<br>cd vessel<br>npm install<br>npm run build -w @vessel/host<br>npm run preview -w @vessel/host

Then open the printed http://localhost:4173/app/ in Chromium and install the PWA —<br>localhost is a secure context, so file handling + install work. Full guide in the<br>docs.

The safety claim

Opening a .vessel is no more dangerous than opening a web page.

Bundle code is boxed twice — a sandboxed iframe around the UI, a WASM sandbox around the Python — with<br>default-deny network egress and a manifest allowlist. The host never hands its writable file handle to bundle<br>code. Bundles can be Ed25519-signed so you can see who published them.

Fifteen example tools

Real .vessel files — each a FastAPI + SQLite backend and a self-contained UI, with full<br>create / edit / delete. Download one and open it in the host. The last five are aimed at developers.

Budget<br>unsigned

Local-first money — transactions, categories, a trend + forecast chart.

Download .vessel ↓

Flashcards<br>unsigned

SM-2 spaced repetition — edit the deck, study, and rate.

Download .vessel ↓

CSV Explorer<br>signed · Tabula Labs

Real SQL filter/sort over thousands of rows; import your own CSV.

Download .vessel ↓

Invoice<br>signed · Ledgerleaf

A fully editable invoice template with live totals and print-to-PDF.

Download .vessel ↓

Recipe Planner<br>unsigned

Recipes plus a weekly plan; a shopping list built from the plan.

Download .vessel ↓

Habits<br>unsigned

A 21-day habit grid with streaks you tick off day by day.

Download .vessel ↓

Personal CRM<br>unsigned

Contacts with a genuine “haven’t talked in 90 days” SQL query.

Download .vessel ↓

Job Tracker<br>unsigned

A pipeline board: Applied → Screen → Onsite → Offer.

Download .vessel ↓

Workout Log<br>unsigned

Sets, PRs, reusable routines, and a training-volume chart.

Download .vessel ↓

Journal<br>unsigned

A dated journal with SQLite full-text search and match highlighting.

Download .vessel ↓

SQLite Playground<br>unsigned

Open any .sqlite file — browse tables, run SQL, see an auto-generated ER diagram.

Download .vessel ↓

Regex Tester<br>unsigned

Test patterns with the real Python re engine; save a pattern library that travels in the file.

Download .vessel ↓

JWT Inspector<br>unsigned

Decode and verify JWTs (HMAC + RSA/ECDSA) locally — the token never leaves the...

vessel download host file unsigned sqlite

Related Articles