100 lines
2.7 KiB
Markdown
100 lines
2.7 KiB
Markdown
# limen
|
|
|
|
> *Latin: "threshold". The doorsill one crosses when entering.*
|
|
|
|
A two-stage terminal launcher TUI for tmux and SSH. The first thing you see when opening a new terminal: pick a host, pick a session, get to work.
|
|
|
|
**Status**: Active implementation. The TUI launches host and session pickers. See [`docs/DESIGN.md`](docs/DESIGN.md) for the canonical architecture specification.
|
|
|
|
---
|
|
|
|
## What It Does
|
|
|
|
`limen` replaces tmux's default name-prompt-on-launch with an interactive, keyboard-driven TUI:
|
|
|
|
1. **Host Picker**: Choose `localhost` or one of your declared SSH targets. Live status indicators show reachability and active session counts.
|
|
2. **Session Picker**: Pick an existing tmux session to attach to, or spawn a new named session. Behaves consistently across local and remote targets.
|
|
|
|
Pressing `Esc` at any stage drops you into a fresh unnamed tmux session at the selected host with zero deliberation tax.
|
|
|
|

|
|
|
|
---
|
|
|
|
## Tech Stack & Architecture
|
|
|
|
- **Language & Runtime**: Go 1.22+
|
|
- **TUI Engine**: [Charm Bubble Tea](https://github.com/charmbracelet/bubbletea) (Elm Architecture) & [Lip Gloss](https://github.com/charmbracelet/lipgloss) styling
|
|
- **Orchestration**: `tmux` IPC & native OpenSSH background client stream
|
|
- **Configuration**: Single JSON fleet declaration at `~/.config/limen/hosts.json`
|
|
|
|
---
|
|
|
|
## Installation
|
|
|
|
### Homebrew (macOS / Linux)
|
|
```bash
|
|
brew install KofTwentyTwo/tap/limen
|
|
```
|
|
|
|
### Nix Flake Run
|
|
```bash
|
|
nix run github:KofTwentyTwo/limen
|
|
```
|
|
|
|
### Binary Releases
|
|
Pre-built binaries are available on the [Releases](https://github.com/KofTwentyTwo/limen/releases) page:
|
|
|
|
| Platform | Architecture | Binary Name |
|
|
| :--- | :--- | :--- |
|
|
| **Linux** | x86_64 | `limen-linux-amd64` |
|
|
| **Linux** | ARM64 | `limen-linux-arm64` |
|
|
| **macOS** | Intel | `limen-macos-amd64` |
|
|
| **macOS** | Apple Silicon | `limen-macos-arm64` |
|
|
|
|
---
|
|
|
|
## Local Build & Verification
|
|
|
|
### Build from Source
|
|
```bash
|
|
# Build binary
|
|
go build -ldflags="-s -w" -o bin/limen ./cmd/limen
|
|
|
|
# Or build via Nix
|
|
nix build
|
|
```
|
|
|
|
### Quality Gates & Verification
|
|
```bash
|
|
# 1. Run Unit & Integration Tests
|
|
go test -v ./...
|
|
|
|
# 2. Run Go Linter & Vet
|
|
go vet ./...
|
|
```
|
|
|
|
---
|
|
|
|
## Fleet Configuration
|
|
|
|
Declare target hosts in `~/.config/limen/hosts.json`:
|
|
|
|
```json
|
|
{
|
|
"hosts": [
|
|
{ "name": "prod", "hostname": "prod-server-01.example.com", "user": "deploy" },
|
|
{ "name": "dev", "hostname": "dev-box.lan", "user": "james" },
|
|
{ "name": "builder", "hostname": "builder.lan" }
|
|
]
|
|
}
|
|
```
|
|
|
|
`localhost` is implicit and managed automatically by `limen`. See [`docs/DESIGN.md`](docs/DESIGN.md) for full schema specifications.
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
[GPL-3.0](LICENSE).
|