If you have a Claude Pro or Max login, you have everything DeckTrail needs to write a deck. No API key to create, no billing to wire up, no model to choose. One command installs it, one command writes the deck, and your content never leaves your machine on the way.
DeckTrail does not care which model writes your deck, so you are not locked to one. Everything after the writing is identical, and switching later is a flag rather than a migration.
That is the whole install. It checks Docker, generates its own database password,
starts the stack, waits until the portal actually answers rather than guessing at a delay,
builds the command line tool, and hands you the link that finishes setup. Run it again any
time: it will not overwrite a .env you have edited, and it leaves a running stack
alone.
Port 3000 already taken? Pass another and it is used end to end.
# one command, and it does the rest
git clone https://github.com/orbitqube-tech/decktrail
cd decktrail
./scripts/up.sh
# identical on macOS
git clone https://github.com/orbitqube-tech/decktrail
cd decktrail
./scripts/up.sh
# PowerShell git clone https://github.com/orbitqube-tech/decktrail cd decktrail .\scripts\up.ps1 # or from cmd.exe, same thing scripts\up.bat
DeckTrail Docker is running pnpm is available Port 3000 is free Wrote .env with a generated database password Starting the stack, which pulls images the first time Waiting for the portal, which sets itself up on a first boot Portal is healthy on http://localhost:3000 Building the command line tool Installed the decktrail command on your PATH Ready. Open this once to name yourself and set your brand: http://localhost:3000/setup?token=zPJ9074oR7G28PP8DSRbsl88Fb25ail-
Meeting notes, a PDF, a PowerPoint deck, a Word document, or a page you photographed. The text comes out on your machine, and a scan is read as a picture only when it carries no text of its own. Nothing is converted: the substance comes across and the original's layout does not.
# notes, a PDF, a deck, a document or a scan decktrail generate discovery-call.pdf --client acme \ --prompt "lead with the cost, and keep it to five slides" no voice configured, using the neutral default with your prompt generating with claude (your own Claude Code login) read discovery-call.pdf as text wrote deck.json
No template to fill in, no configuration file to write. Say what matters and the deck is rebuilt around it. Same notes, same route, one sentence of difference.
Each recipient gets their own link behind a passwordless sign in. No public URL, no anonymous forwarding, and every open ties to a person, which is what makes the record afterwards worth having.
decktrail push deck.json --recipient cfo@acme.example published: acme-logistics-qpr shared with cfo@acme.example
Generation runs through the Claude Code login already on your machine. DeckTrail never handles the credential, never stores one, and never puts one on a command line.
It costs nothing beyond the subscription you already pay for. Usage counts against your own plan, and the tool says so rather than hiding it.
This is the default. No provider to name, no model to pick, no gateway to run. If you have Claude, the first command is the entire setup.
This route reaches the model that handles a long, messy source document best, which is what you want the first time you point it at a real client PDF.
The deck is written on your machine and served from your server. The portal never sees your source document, and nothing reaches us at any point.
A free model or a routing gateway are the same commands with a different flag. Decks you have already sent are untouched.
There is no account to make here, because there is nothing here to sign into. You clone it, you run it, and your clients' decks live on your server where they belong. We could not read them if we wanted to.