<div align="center" <img src=".github/assets/logo.svg" alt="Rinnegan logo" width="250" <h1Rinnegan</h1
<a href="https://github.com/Tanq16/rinnegan/actions/workflows/release.yaml"<img alt="Build Workflow" src="https://github.com/Tanq16/rinnegan/actions/workflows/release.yaml/badge.svg"</a <a href="https://github.com/Tanq16/rinnegan/releases"<img alt="GitHub Release" src="https://img.shields.io/github/v/release/Tanq16/rinnegan"</a<br<br <a href="#features"Features</a • <a href="#install"Install</a • <a href="#cli"CLI</a • <a href="#configuration"Configuration</a • <a href="#security"Security</a </div
---
Rinnegan is a self-hosted web terminal. One password gets you a real interactive shell on the host, in your browser.
It exists to reach a CLI Productivity Suite setup from anywhere, on a homelab box or a VPS. It is not an IDE or a tmux manager, and it is a terminal frontend for a machine you already own.
Features
- Password in, shell out: one password on the login page gives you a real interactive shell over WebSocket, sized to your window.
- A shell per connection: every browser connection spawns its own shell, which dies when the socket closes.
- Pick your shell: rinnegan starts zsh, bash, or fish.
- Fifteen themes: the control panel switches between the same palettes cps theme deploys to kitty, and each browser remembers its own choice.
- Port tunnel: rinnegan forwards a local port to the server over an authenticated WebSocket, the way ssh -L does without SSH.
- File transfer: you upload files, folders, or a clipboard image to /tmp, and download any host path.
- Self-contained tarball: every release bundles its own Node runtime, so the host needs no Node, Python, or compiler.
Screenshots
<details <summaryClick to expand</summary
There are no screenshots yet.
</details
Install
Download the tarball for your platform from Releases. Builds cover Linux and macOS on x64 and arm64.
tar xf rinnegan-<os>-<arch>.tar.gz
cd rinnegan-<os>-<arch>
./bin/rinnegan passwd # set the login password
./bin/rinnegan # serve on 127.0.0.1:8442Open http://127.0.0.1:8442 and log in. No password is seeded on first run, and serve refuses to start until you set one. Passing --no-auth skips the login page entirely, which hands a shell to anyone who reaches the port.
Updating: run ./update.sh from the install directory. It verifies the download before swapping it in, and it leaves ~/.config/rinnegan untouched.
macOS: Gatekeeper may block the bundled node. The launcher clears the quarantine flag on startup, and you can clear it yourself with xattr -dr com.apple.quarantine rinnegan-<os-<arch.