Skip to content

lorb-studio/deploy-once

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lorb.studio

@lorb/deploy-once

A URL that works exactly once, then self-destructs.

One visit. First person to open the link sees your site. Everyone after gets 410 Gone. No cleanup, no lingering deployments.

Public URL. A Cloudflare tunnel gives you a shareable https:// URL — no account needed, no DNS setup.

Self-destruct. After the visit (or when the TTL expires), the process exits. Nothing left running.

$ npx @lorb/deploy-once ./dist

  deploy-once
  URL: https://random-words.trycloudflare.com
  Waiting for visitor... (expires in 24h)

  Visited! Shutting down.

Install

npm install -g @lorb/deploy-once

Or run directly with npx:

npx @lorb/deploy-once ./dist

What you can do

Share a preview for code review

deploy-once ./dist --message "PR #42 preview"

Send the URL in Slack. Reviewer opens it, sees the site, done. The link dies after.

Send a disposable demo

deploy-once ./dist --ttl 1h

One-hour window. If nobody visits, it shuts down automatically.

Serve a single HTML file

deploy-once index.html

Single files must be .html. For other file types, put them in a directory.

Pipe the URL into another command

URL goes to stdout, everything else to stderr. Pipe-friendly.

url=$(deploy-once ./dist 2>/dev/null)
echo "Send this to the client: $url"

Use without a tunnel (local only)

deploy-once ./dist --local
# Serves on localhost only — no public URL

Use programmatically

import { createOneShotServer } from '@lorb/deploy-once';

const server = await createOneShotServer({
  path: './dist',
  ttlMs: 60 * 60 * 1000,
});

console.log(server.url);    // https://....trycloudflare.com
console.log(server.port);   // local port

server.events.on('visited', ({ time, ip }) => {
  console.log(`Visited from ${ip}`);
});

const reason = await server.done; // 'visited' | 'ttl'

Prerequisites

Public URLs require cloudflared installed. No Cloudflare account needed — it uses Quick Tunnels.

Use --local to skip this requirement.

Options

deploy-once <path> [options]

--ttl <duration>   Auto-expire (default: 24h). Examples: 30m, 1h, 6h
--message <text>   Display in terminal when someone visits
--local            Skip tunnel, localhost only
-h, --help         Show help

License

𖦹 MIT — Lorb.studio

About

A URL that works exactly once, then self-destructs

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors