ⵜⵉⵜ (Tit) Amazigh for "eye." System monitor built for Raspberry Pi 5 w/ Argon V3 NVMe case
# ⵜⵉⵜ (Tit)
> **Disclaimer:** A small project born from a vibecoding session, expanding on an older handcoded system monitor. Not production software — run it, hack it, break it.
---
Amazigh for "eye." System monitor built for **Raspberry Pi 5** inside an Argon V3 NVMe case.
Terminal UI + web dashboard. Monitors CPU, RAM, disk, network, SSD health, and controls the Argon V3 fan via I2C. Stores history in SQLite. Sends alerts via ntfy.
---
## Screenshots
| Live Dashboard | Reporting |
|---|---|
| | |
| SSD Health | ntfy Alerts |
|---|---|
| | |
**Terminal UI**
---
## Requirements
- Raspberry Pi 5
- Argon V3 NVMe case (fan control via I2C)
- NVMe SSD at `/dev/nvme0n1`
- I2C enabled on the Pi
- Docker (recommended) or Python 3.11+
**Enable I2C:**
```bash
sudo raspi-config
# Interface Options → I2C → Enable
```
**Install Docker:**
```bash
curl -fsSL
get.docker.com | sh
sudo usermod -aG docker $USER
# log out and back in
```
---
## Install (Docker)
```bash
git clone
github.com tit
cd tit
cp .env.example .env
nano .env # set your password, adjust if needed
docker compose up -d
```
Web dashboard: `http:// :8080`
Default credentials: `admin` / `changeme` — **change these in `.env` before exposing externally.**
---
## Manual run (no Docker)
```bash
pip install -r requirements.txt
sudo apt install smartmontools
# Web server + background collector
TIT_DB_PATH=./tit.db TIT_DISK_PATH=/ python -m tit web
# Terminal UI only
python -m tit tui
# Both at once (web in background thread, TUI in foreground)
TIT_DB_PATH=./tit.db TIT_DISK_PATH=/ python -m tit
```
> `TIT_DISK_PATH` should point to your root filesystem (`/`). The Docker default is `/host` (a bind mount of the Pi's root).
When running manually, `smartctl` needs either `sudo` access or a sudoers rule:
```bash
echo "$USER ALL=(root) NOPASSWD: /usr/sbin/smartctl" | sudo tee /etc/sudoers.d/tit-smartctl
sudo chmod 440 /etc/sudoers.d/tit-smartctl
```
---
## En …