惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
G
Google Developers Blog
L
LangChain Blog
Y
Y Combinator Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
V
Visual Studio Blog
小众软件
小众软件
月光博客
月光博客
A
About on SuperTechFans
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
美团技术团队
量子位

HN's home page

Rainbow Query Language | Hacker News Exec into Node via Kubectl An AI native hedge fund The Seven-Action Documentation Model | Hacker News Package Manager for Kubectl Plugins Tongan Castaways | Hacker News Tech overlords plan for conscious AI to conquer the cosmos. What could go wrong? Data Breach Disclosure Lag Is Getting Worse How LLMs Work | Hacker News I Dropped PRDs for Shape Up Go Experiments Explained | Hacker News FCA's Palantir deal could expose UK financial data to Trump's US, critics fear WebXR BCI for Neural-Adaptive Avatar Control in Mixed Reality The first murder conviction via DNA analysis Tom Interviews Theo de Raadt of the OpenBSD Project (2019) [video] Show HN: Replace shell commands with bun shell typescript scripts Quay.io Is Down | Hacker News AI driven analysis of brokerage account fees in the UK Bill Gates Spent Years Crafting His Image. Now It's Cracking Using LLMs to secure source code Wi-Fi 8 in the Lab [video] The household battery revolution that could change energy bills and the world Is Python Becoming Pinyin? | Hacker News Livia – Executive Assistant | Hacker News FindMyPipe – Query Apple Find My from Linux for AI Agents Show HN: Agent skill for creating product launch videos with Remotion RecruitMyself – AI job search copilot for resumes and applications AI coding agents and the erosion of system understanding The 'Resting' Generation and South Korea's Youth Recession AMD Computex 2026: 10 Years of AM4, AM5 Support Through 2029
Show HN: Vessel – Portable app files (UI, FastAPI, SQLite...
apollo_orbit · 2026-06-18 · via HN's home page

What I have for you today is a single-file tool I call Vessel. A .vessel is a file that contains a tool’s entire UI, a Python (FastAPI) backend, and an SQLite database. All the data lives inside this single file.

Currently, I have a Vessel Host that is an installable PWA and opens any .vessel file locally.

The purpose behind this was simple: In my career and everyday life, I create a lot of tools in spreadsheets. Spreadsheets are okay, but they’re not always the most user-friendly from a UI perspective. I’ much rather use web technologies, but it’s not as easy for the everyday-person to use them if they need a real backend and database. So, I ran with the spreadsheet model (zipped file with data and manifest) to create .vessel. And it worked.

How it works: the Python backend runs in the browser with Pyodide. FastAPI is dispatched through a fetch->ASGI bridge, so the UI talks to the backend with no network involved. The SQLite DB travels inside the .vessel. Saving the edited tool (like saving a spreadsheet) writes back to the original file via the File Handling API’s writable handle.

One use case that turned out to matter more than I expected is this is a good format for AI-generated tools. Most AI “artifacts” aren’t great. I’ve tried to rewrite some of my spreadsheet tools to have a better UI, and it just hasn’t worked out. AI is good with web tech, but it’s usually multiple files and not something non-technical people feel comfortable with. But with .vessels, everything is different. They look great, they function great, they’re one file.

Security was a large design constraint since you're running code from files other people hand you (basically the Office-macro issue). What I wanted was that opening a .vessel should be no more dangerous than opening a web page. That rests on a few things. The .vessel runs in a sandboxed iframe inside the Pyodide/WASM sandbox, network egress is default-deny (a .vessel can only reach the https origins it declares in its manifest), and the host never hands its writable file handle to .vessel code. .vessel’s can optionally be Ed25519-signed to show the code behind the tool hasn't changed from the original author.

You can try out everything at https://getvessel.dev/

I have a gallery of 15 example tools (a budget tracker, a SQLite playground, a regex tester, a JWT inspector, and an API workbench that makes its calls from the Python side so there's no CORS wall, among others). There is a SKILL.md file in the repo if you want to try AI-generated .vessels. Lastly, ‘npm i -g vessel-cli’ for sdk tools.

Honest caveats: the full double-click-and-save-in-place experience needs a Chromium-based browser (the File Handling API). Firefox and Safari fall back to open-from-the-app plus save-by-download. The first open downloads the Pyodide runtime, which is cached after that. It's early. This is v0.2.

Source (Apache-2.0): https://github.com/apollo-orbit-dev/vessel

I'd love feedback, especially on the security model and the .vessel format.