#!/usr/bin/env bun /** * CLI entry point for @sleep2agi/commhub-server * * Usage: * npx @sleep2agi/commhub-server * npx @sleep2agi/commhub-server --port 9200 * npx @sleep2agi/commhub-server --port 9200 --token my-secret * npx @sleep2agi/commhub-server --dev-open * npx @sleep2agi/commhub-server --db ~/.commhub/commhub.db */ const args = process.argv.slice(2); for (let i = 0; i < args.length; i++) { if (args[i] === "--port" || args[i] === "-p") process.env.PORT = args[++i]; if (args[i] === "--host") process.env.HOST = args[++i]; if (args[i] === "--token" || args[i] === "-t") process.env.COMMHUB_AUTH_TOKEN = args[++i]; if (args[i] === "--db") process.env.COMMHUB_DB = args[++i]; if (args[i] === "--cors") process.env.COMMHUB_CORS_ORIGINS = args[++i]; if (args[i] === "--dev-open") process.env.COMMHUB_DEV_OPEN = "1"; if (args[i] === "--help" || args[i] === "-h") { console.log(` CommHub MCP Server — AI Agent 通信中枢 Usage: commhub-server [options] Options: --port, -p Port to listen on (default: 9200, env: PORT) --host Host to bind (default: 127.0.0.1, env: HOST) --token, -t Auth token (env: COMMHUB_AUTH_TOKEN) --db SQLite database path (default: ~/.commhub/commhub.db, env: COMMHUB_DB) --cors CORS origins, comma-separated (env: COMMHUB_CORS_ORIGINS) --dev-open Explicit unauthenticated local development mode --help, -h Show this help Environment Variables: PORT Server port (default: 9200) HOST Bind address (default: 127.0.0.1) COMMHUB_AUTH_TOKEN Bearer token for authentication (required unless --dev-open) COMMHUB_DEV_OPEN Set to 1 to allow unauthenticated dev mode COMMHUB_DB SQLite database file path COMMHUB_CORS_ORIGINS Allowed CORS origins (comma-separated) COMMHUB_ENABLE_TMUX Set to 1 to enable tmux HTTP/WebSocket endpoints COMMHUB_TMUX_ALLOWLIST Additional comma-separated client IPs allowed for tmux Examples: commhub-server --port 9200 --token my-secret-token commhub-server --port 9200 --dev-open PORT=9200 COMMHUB_AUTH_TOKEN=secret commhub-server `); process.exit(0); } } // Opt into the default production DB path before loading the server graph. // Ordinary imports / bun -e probes do not receive this capability. process.env.COMMHUB_SERVER = "1"; // Load the server module (side-effect-free since the #438 corrective: // importing binds nothing) and start the hub EXPLICITLY. Never rely on // import side effects or import.meta.main here — this bin is a dynamic // importer, where import.meta.main is false inside the module. const { startHub } = await import("../src/server.js"); startHub();