{"id":13832803,"url":"https://github.com/cmdruid/nostr-terminal","last_synced_at":"2025-02-23T01:21:26.828Z","repository":{"id":62384759,"uuid":"560180097","full_name":"cmdruid/nostr-terminal","owner":"cmdruid","description":"Connect to your computer terminal remotely from the browser. Powered by Nostr.","archived":false,"fork":false,"pushed_at":"2023-02-05T02:14:53.000Z","size":61,"stargazers_count":30,"open_issues_count":2,"forks_count":6,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-04-18T12:12:03.707Z","etag":null,"topics":["nostr","remote-access","terminal"],"latest_commit_sha":null,"homepage":"https://cmdruid.github.io/nostr-terminal/web","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cmdruid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-10-31T22:53:34.000Z","updated_at":"2024-01-19T10:29:03.000Z","dependencies_parsed_at":"2023-02-18T21:15:23.428Z","dependency_job_id":null,"html_url":"https://github.com/cmdruid/nostr-terminal","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmdruid%2Fnostr-terminal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmdruid%2Fnostr-terminal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmdruid%2Fnostr-terminal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cmdruid%2Fnostr-terminal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cmdruid","download_url":"https://codeload.github.com/cmdruid/nostr-terminal/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240254982,"owners_count":19772517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nostr","remote-access","terminal"],"created_at":"2024-08-04T11:00:31.070Z","updated_at":"2025-02-23T01:21:26.809Z","avatar_url":"https://github.com/cmdruid.png","language":"HTML","funding_links":[],"categories":["Install from Source","Tools"],"sub_categories":["Nostr","Client reviews and/or comparisons"],"readme":"# Nostr Terminal\nConnect to any computer terminal remotely from the browser. NAT traversal powered by Nostr.\n\n## How to Setup\n\nOn your computer:\n\n```bash\n## Clone the repository and navigate inside.\ngit clone \u003cthis repo\u003e\ncd nostr-terminal\n\n## Install package dependencies.\nyarn install || npm install\n\n## Start the terminal server using a package manager.\nyarn start || npm start\n\n## You can also start the server directly, and provide arguments.\n./nostrTerm.js \u003cwss://relay.url.here\u003e \u003coptionalcustomsecret\u003e\n\n## If you want to specify your own defaults, \n## create an .env file with the following:\nADDRESS=\u003cwss://relay.url.here\u003e\nSECRET=\u003coptionalcustomsecret\u003e\n```\n\nThe app will give you a base64 encoded connection string to copy/paste into the browser client. This string includes the relay url and connection secret, so keep it safe!\n\nIf you do not provide a secret, the server will generate a random secret for you. This is the safest option!\n\nOn your browser:\n```ini\n## Navigate to the browser client (hosted on github):\nhttps://cmdruid.github.io/nostr-terminal/web\n\n## Or host your own web client! The files are here:\nnostr-terminal/web\n```\n\n## How to Use\n\nThe browser client will connect to your terminal server, using the same user account running the server. Be careful running this app as a sudo or administartor user!\n\nThere are two modes for the terminal: `buff mode` or `live mode`. You can toggle modes by clicking the `[ mode ]` button located near the top-right of the terminal window.\n\n **buff mode**:\n Most keyboard input is buffered locally, then sent to your machine when you press enter. This is the fastest mode, plus it prevents flooding the relay with every keystroke. Certain features do not work in this mode, such as Up/Down (for scrolling command history) and Tab (for auto-completion). I'm looking to implement them in the future!\n\n **live mode**:\n All keyboard input is streamed in real-time. This is nessecary when using a text editor (like vim or nano), but it will flood the relay with traffic. This app uses ephemeral events, so we are flooding in the most friendly way possible. However not all relays may handle this traffic properly, so please use this mode wisely and consider running your own relay if you plan to use it frequently.\n\n## Tips on Usagefas\n\n```bash\n## Start the terminal server as a background process, \n## and save the connection string to a local file.\n./nodeTerm.mjs \u003e secrets.txt \u0026\ncat secrets.txt\n```\n\n## Disclaimer\n\nThis is a demo project that opens a remote terminal connection into your machine. The connection is end-to-end encrypted with a secret, and uses a modern cryptography library (webcrypto) with best-practices. That being said, please review the code being used (NostrEmitter is just 500 lines), and take your own precautions!\n\n## Known Issues\n\nIf you open a text editor (or any TUI application) while using `buff mode`, the screen may not draw properly. Switch to `live mode` before opening the application.\n\nIf you switch to `live mode` while you still have characters in the buffer, they will not be sent to the server properly.\n\nIf you lose / close the connection while inside an editor (or any TUI application), the screen will not re-draw the application properly when you reconnect. I'm currently looking for elegant ways to fix this, and suggestions are welcome!\n\n## Bugs / Questions\n\nPlease feel free to post any bugs or questions on the issues page!\n\n## Contributions\n\nAnyone may contribute! Please feel free to open a pull request.\n\n## Resources\n\n**ANSI escape code**  \nhttps://en.wikipedia.org/wiki/ANSI_escape_code\n\n**Console Codes — Linux manual page**  \nhttps://man7.org/linux/man-pages/man4/console_codes.4.html\n\n**The Standard ASCII Character Set and Codes**  \nhttps://cs.smu.ca/~porter/csc/ref/ascii.html\n\n**ANSI Escape Sequences**  \nhttps://gist.github.com/fnky/458719343aabd01cfb17a3a4f7296797\n\n**xtermjs**  \nhttps://github.com/xtermjs/xterm.js\n\n**node-pty**  \nhttps://github.com/microsoft/node-pty\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmdruid%2Fnostr-terminal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcmdruid%2Fnostr-terminal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcmdruid%2Fnostr-terminal/lists"}