{"_id":"@company-os/terminal-server","_rev":"2-a4bb6bacd398705d6cb20a1b8db3dbc9","name":"@company-os/terminal-server","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@company-os/terminal-server","version":"1.0.0","_id":"@company-os/terminal-server@1.0.0","maintainers":[{"name":"novicap97","email":"nov@company-os.ai"}],"bin":{"companyos-terminal":"dist/index.js"},"dist":{"shasum":"c4c09e480a6d78a1cf329fc8f83476c6875bb0ee","tarball":"https://registry.npmjs.org/@company-os/terminal-server/-/terminal-server-1.0.0.tgz","fileCount":3,"integrity":"sha512-Dp1amMnKq2VIn4OXU4VVERWn7VbgIEfrbfaobjiyYYfMPw49TR9d56FVxrsDlpv5aB/Izqh1V/MMqc/iXed9aw==","signatures":[{"sig":"MEUCIQDp2zDcvDmavqao0CZZfUwonnWxD131U/BKZ18ks1qeuQIgCeaqIEulMd9tYOq6Zz8VMhzAkkXH4UMBkbmbbajqAFc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35917},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"08a0c2d7322f651a905f9325555a6c95ba06b6ed","scripts":{"dev":"tsx src/index.ts","build":"tsup","start":"node dist/index.js"},"_npmUser":{"name":"novicap97","email":"nov@company-os.ai"},"_npmVersion":"11.4.2","description":"Local terminal server for CompanyOS — run on your machine, connect from app.company-os.ai","directories":{},"_nodeVersion":"24.4.0","dependencies":{"ws":"^8.18.0","node-pty":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","tsup":"^8.4.0","@types/ws":"^8.5.13","typescript":"5.9.3","@types/node":"^20","@companyos/typescript-config":"*"},"_npmOperationalInternal":{"tmp":"tmp/terminal-server_1.0.0_1770696081375_0.9583827883006315","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@company-os/terminal-server","version":"1.1.0","description":"Local terminal server for CompanyOS — run on your machine, connect from app.company-os.ai","type":"module","main":"dist/index.js","types":"dist/index.d.ts","bin":{"companyos-terminal":"dist/index.js"},"scripts":{"build":"tsc -b","dev":"npx tsx src/index.ts","start":"node dist/index.js","prepublishOnly":"tsc -b"},"dependencies":{"node-pty":"1.2.0-beta.11","ws":"^8.18.0","zod":"^4.3.6"},"devDependencies":{"@types/node":"^25.3.3","@types/ws":"^8.5.13","tsx":"^4.21.0","typescript":"^5.9.3"},"publishConfig":{"access":"public"},"_id":"@company-os/terminal-server@1.1.0","gitHead":"25d071d95802fb3abff2525a692add441add400b","_nodeVersion":"22.22.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-HScKRca14GbjVUYdRPqMogJIsnp7qX4sNPbZjB64YVPmPRoFo0r/w166V1Q4pDAEPYs7wjwdJ+e1BeCxbik72g==","shasum":"b4f8984d8812e60b9d5f7d1155021b44e518303f","tarball":"https://registry.npmjs.org/@company-os/terminal-server/-/terminal-server-1.1.0.tgz","fileCount":42,"unpackedSize":101016,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGPvFmTINlVf71EfvLlPxvArDnsi6mxNUFpLWcH4y906AiEAoRTWcml7nyWCxrdgO6loLtWNlL4Hoh+UNPKPU7BSGNI="}]},"_npmUser":{"name":"novicap97","email":"nov@company-os.ai"},"directories":{},"maintainers":[{"name":"novicap97","email":"nov@company-os.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/terminal-server_1.1.0_1774833347500_0.9376749879689963"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-10T04:01:21.223Z","modified":"2026-03-30T01:15:47.786Z","1.0.0":"2026-02-10T04:01:21.514Z","1.1.0":"2026-03-30T01:15:47.630Z"},"description":"Local terminal server for CompanyOS — run on your machine, connect from app.company-os.ai","maintainers":[{"name":"novicap97","email":"nov@company-os.ai"}],"readme":"# @companyos/terminal-server\n\nLocal WebSocket server that spawns and manages pseudo-terminal (PTY) sessions for AI CLI tools (Claude Code, Codex, Gemini) and interactive shells.\n\n## Depends On\n\n- `node-pty` -- pseudo-terminal spawning\n- `ws` -- WebSocket server\n- `zod` -- env var validation\n\n## Key Exports\n\n- `SERVER_CONFIG` -- resolved server configuration (port, origins, max sessions, idle timeout)\n- `buildSpawnConfig` / `SpawnConfig` / `CreateMessage` -- PTY spawn configuration builder\n- `ServerMessage` / `ClientMessage` -- WebSocket protocol types\n\n## Endpoints\n\n| Path         | Method | Description                                      |\n|--------------|--------|--------------------------------------------------|\n| `/health`    | GET    | Server status and active session count            |\n| `/status`    | GET    | Claude CLI availability check                     |\n| `/sessions`  | GET    | Lists Claude Code sessions from `~/.claude/`      |\n| `/clis`      | GET    | Detected CLI tools (claude, codex, gemini)        |\n| `ws://`      | WS     | Terminal PTY session (create, input, resize, ping) |\n\n## Scripts\n\n| Script  | Command              | Description                 |\n|---------|----------------------|-----------------------------|\n| `dev`   | `npx tsx src/index.ts` | Run with ts-node (dev mode) |\n| `build` | `tsc -b`             | Compile TypeScript          |\n| `start` | `node dist/index.js` | Run compiled server         |\n\n## Configuration\n\nEnvironment variables (all optional with defaults):\n\n| Variable                          | Default | Description                    |\n|-----------------------------------|---------|--------------------------------|\n| `TERMINAL_SERVER_PORT`            | `3002`  | HTTP/WS listen port            |\n| `ALLOWED_ORIGINS`                 | (list)  | Comma-separated allowed origins |\n| `TERMINAL_SERVER_MAX_SESSIONS`    | `5`     | Max concurrent PTY sessions    |\n| `TERMINAL_SERVER_IDLE_TIMEOUT_MS` | `1800000` | Session idle timeout (30min) |\n| `TERMINAL_SERVER_TOKEN`           | (none)  | Auth token for WS connections  |\n| `COMPANYOS_WORKSPACE_ROOT`        | `$HOME` | Default working directory      |\n","readmeFilename":"README.md"}