{
    "archive_path": "archive/1792015701.192241",
    "base_url": "github.com/tunr-dev/tunr",
    "basename": "tunr",
    "bookmarked_date": "2026-10-14 22:08",
    "canonical": {
        "archive_org_path": "https://web.archive.org/web/github.com/tunr-dev/tunr",
        "dom_path": "output.html",
        "favicon_path": "favicon.ico",
        "git_path": "git/",
        "google_favicon_path": "https://www.google.com/s2/favicons?domain=github.com",
        "headers_path": "headers.json",
        "htmltotext_path": "htmltotext.txt",
        "index_path": "index.html",
        "media_path": "media/",
        "mercury_path": "mercury/content.html",
        "pdf_path": "output.pdf",
        "readability_path": "readability/content.html",
        "screenshot_path": "screenshot.png",
        "singlefile_path": "singlefile.html",
        "warc_path": "warc/",
        "wget_path": "github.com/tunr-dev/tunr.html"
    },
    "domain": "github.com",
    "extension": "",
    "hash": "1BEPH3HXAS3TJ05PR7SK",
    "history": {
        "archive_org": [],
        "dom": [],
        "favicon": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--max-time",
                    "120",
                    "--output",
                    "favicon.ico",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://www.google.com/s2/favicons?domain=github.com"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-10-14T22:14:02.441089+00:00",
                "index_texts": null,
                "output": "favicon.ico",
                "pwd": "/data/archive/1792015701.192241",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-14T22:14:01.792884+00:00",
                "status": "succeeded"
            }
        ],
        "git": [],
        "headers": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--head",
                    "--max-time",
                    "120",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://github.com/tunr-dev/tunr"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-10-14T22:14:03.346363+00:00",
                "index_texts": null,
                "output": "headers.json",
                "pwd": "/data/archive/1792015701.192241",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-14T22:14:02.447150+00:00",
                "status": "succeeded"
            }
        ],
        "htmltotext": [],
        "media": [],
        "mercury": [
            {
                "cmd": [
                    "/app/node_modules/@postlight/parser/cli.js",
                    "https://github.com/tunr-dev/tunr"
                ],
                "cmd_version": "1.0.0",
                "end_ts": "2026-10-14T22:14:29.332769+00:00",
                "index_texts": null,
                "output": "mercury",
                "pwd": "/data/archive/1792015701.192241",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-14T22:14:23.088818+00:00",
                "status": "succeeded"
            }
        ],
        "pdf": [],
        "readability": [
            {
                "cmd": [
                    "/app/node_modules/readability-extractor/readability-extractor",
                    "/tmp/tmp2wa3y_vm",
                    "https://github.com/tunr-dev/tunr"
                ],
                "cmd_version": "0.0.11",
                "end_ts": "2026-10-14T22:14:23.080941+00:00",
                "index_texts": [
                    "$ tunr deploy --name sprint\n  \u25b2 Uploading 41 files, 210 KB\n  \u25b2 building (nixpacks auto-detect)\n  \ud83d\ude80 Live: https://sprint.tunr.sh\n     (sleeps when idle, wakes on request)\nOr don't type anything \u2014 tell your agent:\n\n\"deploy this to tunr\"\n\n\u2026and it calls tunr_deploy over MCP and hands you back the URL.\n\nWhy\nCoding agents produce a lot of small software: the internal dashboard, the\none-off scraper, the tool that does exactly one annoying thing for your team.\nAlmost all of it dies on localhost, because the gap between \"it works on my\nmachine\" and \"my colleague can open it\" is still an afternoon of Dockerfiles,\nDNS and IAM.\ntunr closes that gap to one command. The app builds with Nixpacks (no\nDockerfile), gets an HTTPS URL, sleeps when nobody's using it and wakes on the\nnext request \u2014 so hosting a dozen barely-used internal tools costs about what\nhosting one does.\nThe 3-second tunnel tunr started as is still here, still free \u2014 and it's the\nsafest way to demo work-in-progress to a client: read-only mode, crash\nprotection and a feedback button, one flag each (Client demos).\n\nInstall\n# macOS / Linux \u2014 Homebrew\nbrew install tunr-dev/tap/tunr\n\n# macOS / Linux \u2014 install script\ncurl -fsSL https://raw.githubusercontent.com/tunr-dev/tunr/main/install.sh | sh\n\n# Go\ngo install github.com/tunr-dev/tunr/cmd/tunr@latest\n\n# From source\ngit clone https://github.com/tunr-dev/tunr.git && cd tunr && make build\nA single static binary. macOS, Linux and Windows, amd64 and arm64, no runtime\ndependencies. Verify it with tunr doctor.\nSDKs \u2014 for driving tunnels from code rather than the shell:\npip install tunr          # Python\nnpm install @tunr/cli     # Node.js\n\nCloud \u2014 deploy & host\ntunr login                        # magic-link, token goes to your OS keychain\ntunr deploy --name my-app         # build + run; prints the live URL\ntunr apps                         # list your apps\ntunr apps logs my-app --follow    # stream build + runtime logs\ntunr apps delete my-app           # remove it, free the subdomain\n\n\n\n\n\n\n\n\n\nBuild\nNixpacks auto-detect \u2014 Node, Python, Go, Ruby, Rust, PHP, Java. A Dockerfile is used if present.\n\n\nIsolation\nEvery app runs in its own gVisor sandbox with CPU, memory and disk quotas.\n\n\nScale to zero\nIdle \u2192 paused with its memory reclaimed (~20 MB resident), then stopped. Wake p50 is ~150 ms.\n\n\nSecrets\n.env files are never uploaded. Pass them with --env KEY=VALUE.\n\n\nStays up\nClose your laptop. The app keeps serving.\n\n\n\ntunr deploy --name sprint --port 3000 --env DATABASE_URL=postgres://\u2026\n\nStatus: preview. Deploy works end to end and is what the MCP tools drive.\nRole-based sharing, per-app SQLite and tunr rollback are not built yet \u2014\nsee Roadmap for what's real and what isn't.\n\n\nAgent-native (MCP)\nThe CLI and the MCP server are two faces of the same control plane. Anything\nyou can do in a terminal, your agent can do in a tool call.\nClaude Code:\nclaude mcp add tunr -- tunr mcp\nClaude Desktop (~/.claude/claude_desktop_config.json) / Cursor (.cursor/mcp.json):\n{\n  \"mcpServers\": {\n    \"tunr\": { \"command\": \"tunr\", \"args\": [\"mcp\"] }\n  }\n}\nTools\n\n\n\nTool\nWhat it does\n\n\n\n\ntunr_deploy\nBuild & host a directory on the tunr cloud, return the live URL\n\n\ntunr_list_apps\nList deployed apps with URL and status\n\n\ntunr_app_logs\nRead an app's build + runtime logs (for debugging a bad deploy)\n\n\ntunr_delete_app\nDelete an app and free its subdomain\n\n\ntunr_share\nOpen a temporary public tunnel to a running local port\n\n\ntunr_status\nList active tunnels\n\n\ntunr_inspect\nList HTTP requests captured by a tunnel\n\n\ntunr_replay\nReplay a captured request against your local server\n\n\ntunr_stop\nClose a tunnel\n\n\n\ntunr_deploy and tunr_share are deliberately distinct, and the tool\ndescriptions say so: deploy means \"host this, it should outlive my laptop\",\nshare means \"expose what's running on :3000 right now\". Cloud tools need\ntunr login first.\n\nClient demos \u2014 for freelancers and vibecoders\nShowing a client something that still runs on your laptop? Three flags make the\nfree tunnel safe to hand to someone who isn't a developer.\n\n  \n\ntunr share -p 3000 --demo --freeze --inject-widget --qr\n\n\n\nFlag\nWhat the client sees\nWhat actually happens\n\n\n\n\n--demo\nButtons work \u2014 \"Order deleted \u2713\"\nPOST/PUT/PATCH/DELETE are answered by tunr with a fake success (JSON bodies are echoed back) and never reach your app. GraphQL queries still go through. Messages the visitor sends over WebSockets are dropped. Tune it with --demo-allow / --demo-block (details).\n\n\n--freeze\nThe page, as it was a second ago\nYour dev server crashed or returned a 5xx; tunr serves the last good response (X-Tunr-Freeze-Cache: HIT) while you fix it.\n\n\n--inject-widget\nA \ud83d\udcac Feedback button on every page\nTheir message, page URL and screen size land in your terminal. No code changes \u2014 tunr injects it into the HTML.\n\n\n--auto-login\nAlready signed in to a demo account\ntunr adds your session cookie (or Bearer \u2026 header) to every request: --auto-login \"session=demo-token\".\n\n\n--qr \u00b7 --password \u00b7 --ttl 1h\nA QR code to open it on their phone; a password; a link that expires\nAccess control that takes one flag each.\n\n\n\n\nTunnels\nStill free, still unlimited, still 3 seconds.\ntunr share --port 3000\n#  \ud83d\ude80 https://abc1x2y3.tunr.sh\nHTTP/HTTPS with WebSocket (HMR works), plus experimental raw TCP, UDP\nand TLS tunnels \u2014 all multiplexed over one connection.\nTraffic is served from a single EU relay today; more regions are planned.\n\nAccess control \u2014 password, bearer token, IP whitelist, TTL, QR\n\n# Basic auth (user optional)\ntunr share -p 8080 --password \"secret\"\ntunr share -p 8080 --password \"client:secret\"\n\n# Bearer token \u2014 Authorization: Bearer <token> or ?token=<token>\ntunr share -p 3000 --auth-token \"my-super-secret-key\"\n\n# IP whitelist (CIDR)\ntunr share -p 3000 --allow-ip \"203.0.113.0/24\"\ntunr share -p 3000 --allow-ip \"10.0.0.0/8,172.16.0.0/12\"\n\n# Auto-expire \u2014 the tunnel closes itself\ntunr share -p 3000 --ttl 1h30m\n\n# QR code, for opening it on a phone\ntunr share -p 3000 --qr\n\n\nRouting & headers \u2014 path routing, regions, header rewriting, CORS, proxies\n\n# Path routing \u2014 one public URL, several local ports\ntunr share --route /=3000 --route /api=8080\n\n# Region hint \u2014 accepted today, takes effect once more regions launch\n# (tunr currently runs a single relay in the EU)\ntunr share --port 3000 --region ams\n\n# Header rewriting\ntunr share -p 3000 --header-add \"X-Debug: true\"\ntunr share -p 3000 --header-replace \"Host: internal.local\"\ntunr share -p 3000 --header-remove \"X-Powered-By\"\n\n# Forwarded headers \u2014 X-Forwarded-For (real client IP), X-Original-URL\ntunr share -p 3000 --x-forwarded-for --original-url\n\n# CORS preflight without touching your server\ntunr share -p 3000 --cors-origin \"https://myapp.com\"\n\n# Behind a corporate proxy\ntunr share -p 3000 --proxy http://proxy:8080\n\n# Custom domain (Pro)\ntunr share -p 3000 --domain demo.client.com\n\n\nTCP / UDP / TLS \u2014 experimental raw tunnels\n\ntunr tcp --port 5432\ntunr udp --port 53\ntunr tls --port 8443   # a local TLS port over the same raw transport\nExperimental, and narrower than the names suggest. The relay exposes a raw\ntunnel only as a WebSocket stream at wss://<subdomain>.tunr.sh/tunnel/tcp\n(binary frames carry the bytes). There is no raw TCP/UDP port on the relay yet,\nso psql, ssh or a game client can't connect directly \u2014 you need a client\nthat speaks that WebSocket. tunr tls is not SNI passthrough: the relay\nterminates TLS for *.tunr.sh. --allow-ip isn't enforced on raw tunnels, so\nit returns an error rather than silently leaving the port open.\n\n\nDaemon, service & multi-tunnel\n\n# Background daemon\ntunr start --port 3000\ntunr status\ntunr stop\n\n# Several tunnels from .tunr.json\ntunr up\ntunr down\n\n# Install as a system service (systemd / launchd) \u2014 starts on boot\ntunr service install --port 3000\ntunr service status\ntunr service uninstall\n\n\nInspect & replay \u2014 the local HTTP inspector\n\ntunr open           # dashboard at http://localhost:19842\ntunr logs --follow  # stream requests in the terminal\ntunr replay <id>    # re-send a captured request to your local server\nLive request/response stream, headers, body, timing, one-click replay, export\nas a curl command. Everything stays on your machine.\n\n\nFull CLI reference\n\n\n\n\nCommand\nDescription\n\n\n\n\nCloud\n\n\n\ntunr deploy [dir]\nBuild & host a project; --name, --port, --env KEY=VAL\n\n\ntunr apps\nList your cloud apps\n\n\ntunr apps logs <name>\nStream logs; --follow, --tail N\n\n\ntunr apps delete <name>\nDelete an app\n\n\nTunnels\n\n\n\ntunr share -p PORT\nExpose a local port over HTTPS\n\n\ntunr share -p PORT -s NAME\nCustom subdomain (Pro)\n\n\ntunr share --route /PATH=PORT\nMap URL paths to local ports\n\n\ntunr share -p PORT --password PASS\nBasic authentication\n\n\ntunr share -p PORT --ttl 1h\nAuto-close after a duration\n\n\ntunr share -p PORT --demo\nRead-only demo mode\n\n\ntunr share -p PORT --freeze\nServe last-good response on crash\n\n\ntunr share -p PORT --inject-widget\nInject the feedback widget\n\n\ntunr share -p PORT --auto-login \"Cookie: s=demo\"\nAuto-inject an auth cookie\n\n\ntunr share -p PORT --domain HOST\nCustom domain\n\n\ntunr share -p PORT --qr\nPrint a QR code for the URL\n\n\ntunr share -p PORT --auth-token TOKEN\nBearer token protection\n\n\ntunr share -p PORT --allow-ip CIDR\nIP whitelist\n\n\ntunr share -p PORT --header-add/-replace/-remove\nRewrite headers\n\n\ntunr share -p PORT --x-forwarded-for --original-url\nProxy headers\n\n\ntunr share -p PORT --cors-origin ORIGIN\nCORS preflight\n\n\ntunr share -p PORT --proxy URL\nHTTP/SOCKS5 proxy\n\n\ntunr share -p PORT --region ams\nRelay region hint (single EU relay today)\n\n\ntunr share -p PORT --json\nJSON output for CI\n\n\ntunr tcp -p PORT / tunr udp -p PORT / tunr tls -p PORT\nRaw tunnels over WebSocket (experimental)\n\n\ntunr up / tunr down\nStart/stop everything in .tunr.json\n\n\ntunr start / tunr stop / tunr status\nDaemon mode\n\n\ntunr service install|status|uninstall\nSystem service\n\n\nEverything else\n\n\n\ntunr login / tunr logout\nAuthentication\n\n\ntunr open / tunr logs / tunr replay <id>\nInspector\n\n\ntunr mcp\nStart the MCP server (stdio)\n\n\ntunr config init / tunr config show\n.tunr.json\n\n\ntunr doctor\nDiagnose your setup\n\n\ntunr update / tunr uninstall / tunr version\nMaintenance\n\n\n\nGlobal flags: --relay URL (point at your own relay), --verbose.\n\n\nSDKs\n\nPython \u2014 pip install tunr\n\nfrom tunr import TunrClient, TunnelOptions\n\nclient = TunrClient()\n\ntunnel = client.share(port=3000)\nprint(tunnel.public_url)\n\ndb_tunnel  = client.tcp(port=5432)\ndns_tunnel = client.udp(port=53)\ntls_tunnel = client.tls(port=8443)\n\nopts = TunnelOptions(\n    subdomain=\"myapp\",\n    password=\"demo123\",\n    allow_ips=[\"10.0.0.0/8\"],\n    freeze=True,\n    inject_widget=True,\n    proxy=\"http://proxy:8080\",\n    ttl=\"2h\",\n)\ntunnel = client.share(port=8080, opts=opts)\n\nrequests = client.get_requests(tunnel.subdomain)\nclient.replay_request(tunnel.subdomain, requests[0][\"id\"], port=3000)\n\nmetrics = client.get_metrics()   # Prometheus text\nhealth  = client.health_check()  # {\"status\": \"ok\"}\n\ntunnel.close()\n\n\nNode.js \u2014 npm install @tunr/cli\n\nimport { TunrClient } from '@tunr/cli'\n\nconst client = new TunrClient()\n\nconst tunnel = await client.share(3000)\nconsole.log(tunnel.publicUrl)\n\nconst dbTunnel  = await client.tcp(5432)\nconst dnsTunnel = await client.udp(53)\nconst tlsTunnel = await client.tls(8443)\n\nconst appTunnel = await client.share(8080, {\n  subdomain: 'myapp',\n  password: 'demo123',\n  allowIps: ['10.0.0.0/8'],\n  freeze: true,\n  injectWidget: true,\n  proxy: 'http://proxy:8080',\n  ttl: '2h',\n})\n\ntunnel.on('ready', () => console.log('Tunnel live'))\ntunnel.on('error', (err) => console.error(err))\ntunnel.on('exit',  () => console.log('Tunnel closed'))\n\nconst requests = await client.getRequests('myapp')\nawait client.replayRequest('myapp', requests[0].id, 3000)\n\nawait tunnel.close()\n\n\nConfiguration (.tunr.json)\n\n{\n  \"$schema\": \"https://tunr.sh/schema/.tunr.schema.json\",\n  \"port\": 3000,\n  \"inspectorEnabled\": true,\n  \"dashboardPort\": 19842,\n  \"mcp\": { \"enabled\": true }\n}\n\nArchitecture\nBrowser \u2500\u2500\u25b6 relay.tunr.sh \u2500\u2500\u252c\u2500\u2500 [WebSocket] \u2500\u2500\u25b6 tunr CLI \u2500\u2500\u25b6 localhost:PORT   (tunnel)\n                            \u2502\n                            \u2514\u2500\u2500 control plane \u2500\u2500\u25b6 tunr-runner \u2500\u2500\u25b6 gVisor sandbox   (cloud app)\n                                     \u2502\n                                Postgres + route cache\n\nTunnels. The CLI starts a local proxy with an embedded inspector and opens\none WebSocket to the relay. The relay issues a *.tunr.sh subdomain and\nterminates HTTPS. HTTP, WebSocket, TCP, UDP and TLS all multiplex over that\nsingle connection \u2014 a typed message discriminator routes them.\nCloud. tunr deploy uploads a tarball to the control plane, which hands it\nto tunr-runner. The runner builds with Nixpacks and runs the result in a\ngVisor sandbox with cgroup quotas. The relay routes the subdomain straight at\nthe container, waking it if it's asleep.\nScale to zero. Apps move HOT \u2192 WARM \u2192 STOPPED on an idle timer. WARM is a\ncgroup memory reclaim followed by a pause, which cuts real memory cost by ~55%\nwhile keeping wake latency around 150 ms. Health-check probes are answered at\nthe edge so a monitored app can still fall asleep; search crawlers get the real\npage but can't keep the app awake.\nObservability. Prometheus metrics at /metrics, K8s probes at /healthz\nand /readyz on the inspector port.\nSelf-hosting. docker-compose.yml runs the tunnel stack (relay + Caddy +\nPostgres); docker-compose.runner.yml adds the cloud runner. Point the CLI at\nit with --relay https://tunnel.yourcompany.com or TUNR_RELAY_URL. See\ndocs/SELF_HOSTING.md.\n\nSecurity\n\nAuth tokens live in the OS keychain, never in a dotfile\nAll relay traffic over TLS 1.3. HTTP tunnels terminate TLS at the relay, like any hosted tunnel; self-host the relay (--relay) if that matters to you\nCloud apps run under gVisor, not bare containers\n.env files are excluded from deploy uploads by default\nThe CLI ships no telemetry, no analytics, no phone-home\nSupply chain: go mod verify + govulncheck in CI, cosign-signed checksums\n\nFound a vulnerability? Don't open a public issue \u2014 see SECURITY.md.\n\nRoadmap\nHonest status. \"Preview\" means it works but the edges are sharp; \"planned\"\nmeans there is no code yet.\n\n\n\n\nStatus\n\n\n\n\nHTTP/WS, TCP, UDP, TLS tunnels\n\u2705 Stable\n\n\nDemo features (freeze, demo, widget, auto-login)\n\u2705 Stable\n\n\nAccess control (password, token, IP, TTL)\n\u2705 Stable\n\n\nInspector + replay, Prometheus, service install\n\u2705 Stable\n\n\nPython / Node SDKs\n\u2705 Stable\n\n\nSelf-hosted tunnel relay\n\u2705 Stable\n\n\ntunr deploy + tunr apps + logs (v0.6.1+)\n\ud83d\udea7 Preview\n\n\nMCP cloud tools (tunr_deploy, tunr_app_logs, \u2026) (v0.6.1+)\n\ud83d\udea7 Preview\n\n\nScale-to-zero (sleep/wake)\n\ud83d\udea7 Preview\n\n\nSelf-hosted cloud runner\n\ud83d\udea7 Preview\n\n\nRole-based sharing (viewer/commenter/editor, --org acme.com)\n\ud83d\udccb Planned\n\n\nPer-app SQLite + snapshots\n\ud83d\udccb Planned\n\n\ntunr rollback (code and data)\n\ud83d\udccb Planned\n\n\nMulti-region relay (--region is accepted; one EU relay today)\n\ud83d\udccb Planned\n\n\nPersistent TCP/UDP ports\n\ud83d\udccb Backlog\n\n\nGUI desktop app\n\ud83d\udccb Backlog\n\n\n\nComparing tunr's tunnel against ngrok, Cloudflare Tunnel, LocalXpose and\nlocaltunnel: docs/compare-tunnels.md.\n\nContributing\nContributions are welcome \u2014 read CONTRIBUTING.md first.\nGood places to start are issues labelled\ngood first issue\nand help wanted.\nmake check      # vet + lint + test + govulncheck\nmake pre-push   # the above, plus a build\nThe relay is a separate Go module and isn't covered by the Makefile:\ncd relay && go build ./cmd/server && go test ./...\n\nCommunity & support\n\n\n\n\n\n\n\n\n\nBugs & feature requests\nGitHub Issues\n\n\nQuestions & ideas\nGitHub Discussions\n\n\nSecurity reports\nPrivate advisory or dev@tunr.sh\n\n\nDeveloper / contributor contact\ndev@tunr.sh\n\n\nEverything else (billing, partnerships, press)\ncontact@tunr.sh\n\n\n\nPlease follow our Code of Conduct.\n\nLicense\nThis repository is dual-licensed by directory:\n\n\n\nPath\nLicence\n\n\n\n\n\ncmd/, internal/, sdk/ \u2014 the CLI and SDKs\nApache-2.0\nOSI-approved open source. Use it, fork it, ship it commercially.\n\n\nrelay/ \u2014 relay, control plane, runner\nPolyForm Shield 1.0.0\nSource-available, not open source. Read it, modify it, run your own instance \u2014 but don't use it to compete with tunr.\n\n\n\nRunning the whole stack yourself, for yourself or inside your company, is\nallowed under both. See NOTICE for the exact boundary."
                ],
                "output": "readability",
                "pwd": "/data/archive/1792015701.192241",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-14T22:14:18.538611+00:00",
                "status": "succeeded"
            }
        ],
        "screenshot": [],
        "singlefile": [],
        "title": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--max-time",
                    "120",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://github.com/tunr-dev/tunr"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-10-14T22:14:18.533325+00:00",
                "index_texts": null,
                "output": "GitHub - tunr-dev/tunr: Ship the apps your agent builds. One command (or one MCP call) turns localhost into a live HTTPS URL \u2014 tunnels, deploys, scale-to-zero. \u00b7 GitHub",
                "pwd": "/data/archive/1792015701.192241",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-14T22:14:18.408801+00:00",
                "status": "succeeded"
            }
        ],
        "wget": [
            {
                "cmd": [
                    "wget",
                    "--no-verbose",
                    "--adjust-extension",
                    "--convert-links",
                    "--force-directories",
                    "--span-hosts",
                    "--no-parent",
                    "-e",
                    "robots=off",
                    "--reject=js,mjs,woff,woff2,ttf,otf,eot,mp4,m4v,mov,webm,ogv,mkv,avi,flv",
                    "--timeout=120",
                    "--restrict-file-names=windows",
                    "--page-requisites",
                    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) wget/GNU Wget 1.21.3",
                    "--compression=auto",
                    "--timestamping",
                    "https://github.com/tunr-dev/tunr"
                ],
                "cmd_version": "GNU Wget 1.21.3",
                "end_ts": "2026-10-14T22:14:18.402497+00:00",
                "index_texts": null,
                "output": "github.com/tunr-dev/tunr.html",
                "pwd": "/data/archive/1792015701.192241",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-14T22:14:03.353669+00:00",
                "status": "succeeded"
            }
        ]
    },
    "icons": null,
    "is_archived": true,
    "is_static": false,
    "latest": {
        "archive_org": null,
        "dom": null,
        "favicon": "favicon.ico",
        "git": null,
        "media": null,
        "pdf": null,
        "screenshot": null,
        "singlefile": null,
        "title": "GitHub - tunr-dev/tunr: Ship the apps your agent builds. One command (or one MCP call) turns localhost into a live HTTPS URL \u2014 tunnels, deploys, scale-to-zero. \u00b7 GitHub",
        "warc": null,
        "wget": "github.com/tunr-dev/tunr.html"
    },
    "link_dir": "/data/archive/1792015701.192241",
    "newest_archive_date": "2026-10-14T22:14:23.088818+00:00",
    "num_failures": 0,
    "num_outputs": 6,
    "oldest_archive_date": "2026-10-14T22:14:01.792884+00:00",
    "path": "/tunr-dev/tunr",
    "schema": "Link",
    "scheme": "https",
    "snapshot_id": "5cb4d205-249a-4ada-9fce-cd103c0ea8eb",
    "sources": [
        "/data/sources/1792015701-import.txt"
    ],
    "tags": null,
    "tags_str": "",
    "timestamp": "1792015701.192241",
    "title": "GitHub - tunr-dev/tunr: Ship the apps your agent builds. One command (or one MCP call) turns localhost into a live HTTPS URL \u2014 tunnels, deploys, scale-to-zero. \u00b7 GitHub",
    "updated": "2026-10-14T22:14:01.792382+00:00",
    "updated_date": "2026-10-14 22:14",
    "url": "https://github.com/tunr-dev/tunr"
}