"""Hand one Claude Code session file to stacktrace.ai/try-now, from this computer, without uploading it. Serves the file once, on 127.0.0.1 only (never on your network), to the page you open, which reads it in your browser. Then it stops. Nothing is sent anywhere else. python3 share-session.py # your most recent session python3 share-session.py path/to.jsonl # a particular one """ import argparse import glob import http.server import os import secrets import threading import webbrowser parser = argparse.ArgumentParser() parser.add_argument("path", nargs="?", help="session file (default: the newest in ~/.claude/projects)") parser.add_argument("--origin", default="https://stacktrace.ai", help="the site that may read it") parser.add_argument("--no-open", action="store_true", help="print the link instead of opening it") args = parser.parse_args() path = args.path or max(glob.glob(os.path.expanduser("~/.claude/projects/*/*.jsonl")), key=os.path.getmtime) token = secrets.token_urlsafe(24) class Handler(http.server.BaseHTTPRequestHandler): def _allow(self): self.send_header("Access-Control-Allow-Origin", args.origin) self.send_header("Access-Control-Allow-Private-Network", "true") def do_OPTIONS(self): self.send_response(204) self._allow() self.send_header("Access-Control-Allow-Methods", "GET") self.end_headers() def do_GET(self): if self.path != f"/session?token={token}" or self.headers.get("Origin") != args.origin: self.send_response(404) self.end_headers() return with open(path, "rb") as f: data = f.read() self.send_response(200) self._allow() self.send_header("Content-Type", "application/x-ndjson") self.send_header("Content-Length", str(len(data))) self.end_headers() self.wfile.write(data) threading.Thread(target=self.server.shutdown).start() # once, then stop def log_message(self, *_): pass server = http.server.HTTPServer(("127.0.0.1", 0), Handler) stop = threading.Timer(120, server.shutdown) # unread after two minutes: stop anyway stop.daemon = True stop.start() link = f"{args.origin}/try-now/#local={server.server_port}&token={token}" print(f"Sharing {path} with your browser only, once. Open: {link}", flush=True) if not args.no_open: webbrowser.open(link) server.serve_forever()