From d040722d1d201683dafa2ad7b4d38c0dba47c0c1 Mon Sep 17 00:00:00 2001 From: arkon Date: Thu, 29 Jan 2026 11:47:24 +0100 Subject: [PATCH] docs: clarify HTTP is fine for localhost, HTTPS only for remote Localhost is treated as a secure context by browsers, so notifications and all browser APIs work without HTTPS. Updated README, CLI help, install script, and systemd service to default to HTTP. Co-Authored-By: Claude Opus 4.5 --- CLAUDE.md | 4 ++-- README.md | 8 +++++--- install.sh | 6 +++--- package.json | 2 +- scripts/claudeman-web.service | 4 ++-- scripts/postinstall.js | 4 ++-- src/cli.ts | 2 +- 7 files changed, 16 insertions(+), 14 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 9b19f3ed..b7a567f1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -16,7 +16,7 @@ When user says "COM": 1. Increment version in BOTH `package.json` AND `CLAUDE.md` 2. Run: `git add -A && git commit -m "chore: bump version to X.XXXX" && git push && npm run build && systemctl --user restart claudeman-web` -**Version**: 0.1423 (must match `package.json`) +**Version**: 0.1424 (must match `package.json`) ## Project Overview @@ -35,7 +35,7 @@ Claudeman is a Claude Code session manager with web interface and autonomous Ral ```bash # Development npx tsx src/index.ts web # Dev server (RECOMMENDED) -npx tsx src/index.ts web --https # With TLS for notifications +npx tsx src/index.ts web --https # With TLS (only needed for remote access) npm run typecheck # Type check # Testing diff --git a/README.md b/README.md index 685b6774..6c81a4f1 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Real-time desktop notifications when sessions need attention — never miss a pe - Tab blinking alerts: red for action-required, yellow for idle - Notifications include actual context (tool name, command, question text) - Hooks are auto-configured per case directory (`.claude/settings.local.json`) -- Requires `--https` flag for browser notification API support +- Works on HTTP for local use (localhost is a secure context) --- @@ -298,11 +298,13 @@ npm install -g claudeman ## Getting Started ```bash -claudeman web --https -# Open https://localhost:3000 +claudeman web +# Open http://localhost:3000 # Press Ctrl+Enter to start your first session ``` +> **Note:** HTTP works fine for local use since `localhost` is treated as a secure context by browsers. Use `--https` only when accessing from another machine on your network. + --- ## Keyboard Shortcuts diff --git a/install.sh b/install.sh index 15f8cbf0..599bd60f 100755 --- a/install.sh +++ b/install.sh @@ -612,7 +612,7 @@ After=network.target [Service] Type=simple -ExecStart=$node_path $INSTALL_DIR/dist/index.js web --https +ExecStart=$node_path $INSTALL_DIR/dist/index.js web WorkingDirectory=$HOME Restart=always RestartSec=10 @@ -863,11 +863,11 @@ main() { echo -e " ${CYAN}# Start the web server${NC}" echo -e " claudeman web" echo "" - echo -e " ${CYAN}# Start with HTTPS (enables browser notifications)${NC}" + echo -e " ${CYAN}# Start with HTTPS (only needed for remote access)${NC}" echo -e " claudeman web --https" echo "" echo -e " ${CYAN}# Open in browser${NC}" - echo -e " https://localhost:3000" + echo -e " http://localhost:3000" echo "" if [[ "$os" == "linux" ]] && [[ -f "$HOME/.config/systemd/user/claudeman-web.service" ]]; then diff --git a/package.json b/package.json index bbd4b01a..d97e6f96 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "claudeman", - "version": "0.1423", + "version": "0.1424", "description": "The missing control plane for Claude Code - run 20 autonomous agents with real-time monitoring and session persistence", "type": "module", "main": "dist/index.js", diff --git a/scripts/claudeman-web.service b/scripts/claudeman-web.service index 8a11d0d0..5564b993 100644 --- a/scripts/claudeman-web.service +++ b/scripts/claudeman-web.service @@ -1,11 +1,11 @@ [Unit] -Description=Claudeman Web Server (HTTPS) +Description=Claudeman Web Server After=network.target [Service] Type=simple WorkingDirectory=/home/arkon/default/claudeman -ExecStart=/usr/bin/node dist/index.js web --https +ExecStart=/usr/bin/node dist/index.js web Restart=always RestartSec=5 KillMode=process diff --git a/scripts/postinstall.js b/scripts/postinstall.js index 876600eb..9aa8ce58 100644 --- a/scripts/postinstall.js +++ b/scripts/postinstall.js @@ -185,8 +185,8 @@ if (hasErrors) { console.log(colors.bold('Next steps:')); console.log(colors.dim(' 1. Build: ') + colors.cyan('npm run build')); -console.log(colors.dim(' 2. Start: ') + colors.cyan('claudeman web --https')); -console.log(colors.dim(' 3. Open: ') + colors.cyan('https://localhost:3000')); +console.log(colors.dim(' 2. Start: ') + colors.cyan('claudeman web')); +console.log(colors.dim(' 3. Open: ') + colors.cyan('http://localhost:3000')); if (hasWarnings) { console.log(''); diff --git a/src/cli.ts b/src/cli.ts index f0316739..df43f83e 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -493,7 +493,7 @@ program .command('web') .description('Start the web interface') .option('-p, --port ', 'Port to listen on', '3000') - .option('--https', 'Enable HTTPS with a self-signed certificate (enables browser Notifications API)') + .option('--https', 'Enable HTTPS with self-signed certificate (only needed for remote access, not localhost)') .action(async (options) => { const { startWebServer } = await import('./web/server.js'); const port = parseInt(options.port, 10);