Loading duckdb-wasm...
this browser β remote
This link points at a DuckDB someone is running. Attaching it lets this tab query that machine directly, over an encrypted relay.
A database on a laptop, a VM or a sandbox has no address the internet can reach. quackhole gives it one, and this browser tab queries it directly: nothing installed here, no ports opened there.
this tab a public relay your DuckDB
Start DuckDB somewhere with the quackhole extension. Whichever way you start it, it prints a ticket which connects this browser tab to it.
Hand this to the agent that has access to DuckDB (it's a small binary that runs everywhere).
It sends the agent to llms.txt β this project's docs written for one β rather than spelling the steps out, so it installs the signed extension instead of guessing at flags. Read it yourself if you would rather know what you are asking for.
For a DuckDB you already have open. quackhole_serve waits for the endpoint to learn its home relay and returns the link to open.
quackhole_serve
INSTALL β¦ FROM community fetches the signed build, so no flags and no downloads.
INSTALL β¦ FROM community
Paste the ticket the other machine printed. Opening the link it printed does this for you.
A ticket grants this tab query access to that machine, and grants it nothing on yours β DuckDB runs in this tab. It carries an access token that does not expire, so treat it like a password.
This page hands its own tools to any agent in the browser with WebMCP, so one calls them directly instead of reading the screen and guessing where to click.
Checking this browserβ¦
list-connections
attach-remote
qh1_β¦
run-sql
run-sql types into the terminal you are looking at and returns only that the statement ran, so an agent has to ask you what it said. A page that queried somebody's machine invisibly, beside a terminal showing nothing, is the version of this nobody should ship.
Hand this to an agent that can browse β ChatGPT in a browser that speaks WebMCP, or anything else that does. The link carries a prompt that sends the agent here and says what is waiting.
Worth copying rather than clicking if you would rather it did not travel in a URL at all β and worth having either way, because prefilling a chat from a link is undocumented and the mobile app ignores it.
The button puts that prompt in the URL, so it goes to OpenAI and stays in your chat history. It carries no ticket and no token β an agent that should reach a machine you are serving has to be handed the qh1_β¦ ticket by you.