{"_id":"@animametaverse/termi","_rev":"2-e04d11ea56f5b1f98933ca20d6eb0444","name":"@animametaverse/termi","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@animametaverse/termi","version":"0.1.0","license":"UNLICENSED","_id":"@animametaverse/termi@0.1.0","maintainers":[{"name":"aubreyliu","email":"aubrey@animametaverse.com"}],"bin":{"termi-agent":"termi-agent.mjs"},"dist":{"shasum":"df922d6eb31e3e9664abf5574dd87c43b77c18b5","tarball":"https://registry.npmjs.org/@animametaverse/termi/-/termi-0.1.0.tgz","fileCount":3,"integrity":"sha512-qGlQ+5VLJR4BONVQj0j8WGkOFadTDHXNHpW1TWQnlvM1QaPCVRED7IiOFqOSPLI36iWlNvMqpmzZGPPa7zRylw==","signatures":[{"sig":"MEUCIEIYBG2nEfR5KqjM2uAYQ2O9Lvyddzl7GwyV2fwMbpi3AiEAqygIjj4oQeGcXHbripBVFz9OAVwLgSBg0PBYjMhVRa0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23573},"type":"module","engines":{"node":">=22"},"scripts":{"check":"node --check termi-agent.mjs","status":"node termi-agent.mjs status"},"_npmUser":{"name":"aubreyliu","email":"aubrey@animametaverse.com"},"_npmVersion":"11.15.0","description":"Termi customer-side backend agent","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/termi_0.1.0_1782786324715_0.6664184666906605","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@animametaverse/termi","version":"0.2.0","description":"Termi customer-side backend agent","bin":{"termi-agent":"termi-agent.mjs"},"type":"module","engines":{"node":">=22"},"publishConfig":{"access":"public"},"scripts":{"check":"node --check termi-agent.mjs","status":"node termi-agent.mjs status"},"license":"UNLICENSED","_id":"@animametaverse/termi@0.2.0","_nodeVersion":"24.15.0","_npmVersion":"11.15.0","dist":{"integrity":"sha512-US6n+CLvGH/jl4k+15KN0C3nlURr7inyL44E3/I3DTGsNVEWn7yWzA94MYee/f1JHmyo/Ewf9jxnSOu2qtD1oA==","shasum":"526d539090f5ed38e5fc971d21ce45811c723852","tarball":"https://registry.npmjs.org/@animametaverse/termi/-/termi-0.2.0.tgz","fileCount":3,"unpackedSize":27838,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD3iurf2/RZSAJggvE4fotxHR9jKxSL1Ry75gHEnOtzKAIgD8CV7YbbBp+dEt9VOKq1Hoz31BGntiXge0MaG2uzLk4="}]},"_npmUser":{"name":"aubreyliu","email":"aubrey@animametaverse.com"},"directories":{},"maintainers":[{"name":"aubreyliu","email":"aubrey@animametaverse.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/termi_0.2.0_1782806990388_0.9255995464162592"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-30T02:25:24.518Z","modified":"2026-06-30T08:09:50.609Z","0.1.0":"2026-06-30T02:25:24.858Z","0.2.0":"2026-06-30T08:09:50.515Z"},"license":"UNLICENSED","description":"Termi customer-side backend agent","maintainers":[{"name":"aubreyliu","email":"aubrey@animametaverse.com"}],"readme":"# @animametaverse/termi\n\nTermi customer-side backend. Runs on the user's computer, stores device login\ninformation, and connects outward to Termi Cloud Relay.\n\nNo inbound port is required on the user's machine.\n\n## Install\n\n```bash\nnpm install -g @animametaverse/termi\n```\n\nRequires Node.js >= 22.\n\n## Quick start\n\n```bash\n# 1. bind this machine to your Termi account (opens a browser confirm page)\ntermi-agent login --server https://termi.example.com --device my-laptop\n\n# 2. run the agent (stays connected to the relay)\ntermi-agent run\n\n# 3. optional: install as a systemd user service so it starts on login\ntermi-agent install-user-service --enable\n```\n\nThe first step uses a device-code flow: the CLI prints a short code and a\nverification URL. Open the URL, confirm, and the agent receives a long-lived\ntoken saved to:\n\n```text\n~/.config/termi/agent.json\n```\n\n## Commands\n\n```bash\ntermi-agent status                          # show saved config and token status\ntermi-agent login --server URL [--device N] # device-code bind flow\ntermi-agent login --server URL --token T    # paste a token from the website\ntermi-agent token --server URL [--device N] # generate a token + bind URL\ntermi-agent run                             # connect to relay and serve terminals\ntermi-agent install-user-service [--enable] # create systemd user service\n```\n\n## How it works\n\n```\nBrowser -> Termi Cloud Relay -> termi-agent (this package) -> local tmux / shell\n```\n\nThe agent opens a WebSocket to the relay using the saved token. When a browser\nopens a terminal, the relay asks the agent to spawn a tmux session and streams\ninput/output back and forth. The agent never listens on a port — it only makes\noutbound connections.\n","readmeFilename":"README.md"}