{"slug": "show-hn-vessel-portable-app-files-ui-fastapi-sqlite-like-xlsx-for-tools", "title": "Show HN: Vessel – Portable app files (UI, FastAPI, SQLite) like .xlsx for tools", "summary": "Vessel is a new portable app file format that bundles UI, FastAPI backend, and SQLite data into a single .vessel file, enabling AI-generated tools to run locally with no deployment. The open-source runtime installs as a PWA and sandboxes code in an iframe and WebAssembly for security.", "body_md": "### React, sandboxed\n\nThe bundle's interface renders in a sandboxed, opaque-origin iframe — isolated from the host and from your machine.\n\nOpen-source runtime · Chromium-first\n\nThe artifact format for **AI-generated software**: describe a tool, and the model hands you one\nself-contained `.vessel`\n\n— UI, logic, and data inside — that runs the instant you open it, with\nnothing to deploy or operate. Install the host once; any `.vessel`\n\nthen opens by double-click,\nruns, and saves back into the same file.\n\nInstalls as a PWA — runs locally, works offline after the first load (no server). Promptless save on\nChromium; Firefox & Safari run degraded (open + download-to-save). ·\n[Docs →](https://github.com/apollo-orbit-dev/vessel)\n\nThe spreadsheet model, for web tech\n\nThe host is a small installable PWA. You set it up a single time — like installing a spreadsheet app.\n\nA `.vessel`\n\nis an OPC-style ZIP (think `.xlsx`\n\n). UI, backend, and data travel together.\n\nDouble-click to run. Changes write straight back into the file — no export step, no server, no account.\n\nWhat's inside the box\n\nThe bundle's interface renders in a sandboxed, opaque-origin iframe — isolated from the host and from your machine.\n\nAn ordinary FastAPI backend runs in Pyodide (CPython compiled to WebAssembly). `fetch`\n\nis bridged straight to ASGI.\n\nState lives in a real SQLite database — and that database travels *inside* the `.vessel`\n\n. The file is the document.\n\nOne theme system, every tool\n\nTools don't hardcode colors — they style with the host's `--vessel-*`\n\ntokens, so every tool follows\nthe host's light/dark and chosen theme automatically. Switch them here and watch it re-theme live:\n\nThe same tokens a bundle reads — see\n[the authoring skill](https://github.com/apollo-orbit-dev/vessel/blob/main/skills/vessel-author/SKILL.md).\n\nBuild one with your AI\n\nAuthoring a `.vessel`\n\nhas a few non-obvious rules — an async-only Python backend, a single-file\nUI, declared packages. Hand your AI agent the Vessel authoring skill and it produces valid bundles, correct\nmanifest and all.\n\n```\nFollow the Vessel authoring skill, then build me a .vessel tool:\nhttps://getvessel.dev/skills/vessel-author/SKILL.md\n```\n\nPaste that into Claude or your agent, or\n[read the skill](https://github.com/apollo-orbit-dev/vessel/blob/main/skills/vessel-author/SKILL.md).\nPrefer a CLI? `npm i -g vessel-cli`\n\n, then `vessel new`\n\n/\n`dev`\n\n/ `build`\n\n.\n\nRun it yourself\n\nPrefer not to depend on getvessel.dev? The host is a static app with no backend — build and serve it yourself and it runs identically (and offline). Same code, your origin.\n\n```\ngit clone https://github.com/apollo-orbit-dev/vessel.git\ncd vessel\nnpm install\nnpm run build -w @vessel/host\nnpm run preview -w @vessel/host\n```\n\nThen open the printed `http://localhost:4173/app/`\n\nin Chromium and install the PWA —\nlocalhost is a secure context, so file handling + install work. Full guide in the\n[docs](https://github.com/apollo-orbit-dev/vessel).\n\nThe safety claim\n\nOpening a `.vessel`\n\nis no more dangerous than opening a web page.\n\nBundle code is boxed twice — a sandboxed iframe around the UI, a WASM sandbox around the Python — with default-deny network egress and a manifest allowlist. The host never hands its writable file handle to bundle code. Bundles can be Ed25519-signed so you can see who published them.\n\nFifteen example tools\n\nReal `.vessel`\n\nfiles — each a FastAPI + SQLite backend and a self-contained UI, with full\ncreate / edit / delete. Download one and open it in the host. The last five are aimed at developers.\n\nLocal-first money — transactions, categories, a trend + forecast chart.\n\nDownload .vessel ↓SM-2 spaced repetition — edit the deck, study, and rate.\n\nDownload .vessel ↓Real SQL filter/sort over thousands of rows; import your own CSV.\n\nDownload .vessel ↓A fully editable invoice template with live totals and print-to-PDF.\n\nDownload .vessel ↓Recipes plus a weekly plan; a shopping list built from the plan.\n\nDownload .vessel ↓A 21-day habit grid with streaks you tick off day by day.\n\nDownload .vessel ↓Contacts with a genuine “haven’t talked in 90 days” SQL query.\n\nDownload .vessel ↓A pipeline board: Applied → Screen → Onsite → Offer.\n\nDownload .vessel ↓Sets, PRs, reusable routines, and a training-volume chart.\n\nDownload .vessel ↓A dated journal with SQLite full-text search and match highlighting.\n\nDownload .vessel ↓Open any `.sqlite`\n\nfile — browse tables, run SQL, see an auto-generated ER diagram.\n\nTest patterns with the real Python `re`\n\nengine; save a pattern library that travels in the file.\n\nDecode and verify JWTs (HMAC + RSA/ECDSA) locally — the token never leaves the file.\n\nDownload .vessel ↓Convert & validate JSON / YAML / TOML, with a path query — all on your machine.\n\nDownload .vessel ↓A mini-Postman whose Python backend makes the real calls (no CORS wall); collections live in the file.\n\nDownload .vessel ↓\nNeed the host first? [Get it →](/app/) · or\n[read the source](https://github.com/apollo-orbit-dev/vessel/tree/main/examples).\n\nSee it running\n\nReal `.vessel`\n\ntools open in the host — same chrome, your data inside the file.", "url": "https://wpnews.pro/news/show-hn-vessel-portable-app-files-ui-fastapi-sqlite-like-xlsx-for-tools", "canonical_source": "https://getvessel.dev", "published_at": "2026-06-18 12:35:19+00:00", "updated_at": "2026-06-18 12:52:51.988201+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents"], "entities": ["Vessel", "FastAPI", "SQLite", "Pyodide", "Claude", "GitHub", "Chromium"], "alternates": {"html": "https://wpnews.pro/news/show-hn-vessel-portable-app-files-ui-fastapi-sqlite-like-xlsx-for-tools", "markdown": "https://wpnews.pro/news/show-hn-vessel-portable-app-files-ui-fastapi-sqlite-like-xlsx-for-tools.md", "text": "https://wpnews.pro/news/show-hn-vessel-portable-app-files-ui-fastapi-sqlite-like-xlsx-for-tools.txt", "jsonld": "https://wpnews.pro/news/show-hn-vessel-portable-app-files-ui-fastapi-sqlite-like-xlsx-for-tools.jsonld"}}