Add your description here
Project description
Vibe Reader
Read terminal output and code files on your eink device. Designed for comfortable reading during vibe coding sessions.
Features
Tmux Integration
- Browse and view tmux session/window/pane output
- 1000-line scrollback history capture (configurable)
- Smart auto-scroll: Follow content end or freeze position
- Visual scrollbar: Shows position in scrollback and viewport size
File Browser
- Navigate directories and view file contents
- Visual scrollbar showing file length and current position
- Server-side syntax highlighting for code and Markdown (tables supported)
Configuration
- Adjustable scrollback lines (100-10000)
- Font size selection (12-20px)
- Settings persist via localStorage
Eink-Optimized UI
- High contrast, large fonts, no animations
- Collapsible sidebar, compact window display
- Page up/down buttons for manual scrolling
- Single-page design that fits viewport
Quick Start
# Install dependencies
uv sync
# Start server via packaged entry point (restricts file browsing to current directory by default)
uv run vibe-reader
# Or run uvicorn directly (same behavior as above)
uv run uvicorn backend.main:app --host 0.0.0.0 --port 28000
# Optional: Set custom project root for file browser (works with either command)
VIBE_READER_ROOT=/path/to/project uv run vibe-reader
# Open on your eink device
# Navigate to: http://YOUR_SERVER_IP:28000
Usage
Tmux View
- Click ☰ to toggle sidebar
- Select session → window (→ pane if multiple)
- Click Refresh to update content
- Use Page ↑/↓ for manual scrolling
- Toggle Auto↓ to enable/disable auto-scroll to end
- Scrollbar shows your position in scrollback history
Files View
- Enter path or browse directories
- Click folders to navigate, files to view
- Page ↑/↓ for scrolling
- Scrollbar shows file length and current position
- Security: File browsing is restricted to the project root (configurable via
VIBE_READER_ROOT) - File size limit: Maximum 10MB per file
Config View
- Adjust scrollback lines (100-10000, default 1000)
- Change font size (12-20px, default 14px)
- Set auto-refresh interval (0-60 seconds, default 5s)
- Click Save Settings to persist changes
Technical Details
Backend: FastAPI + libtmux Frontend: Vanilla JS, eink-optimized CSS Package Manager: uv
Environment Variables
VIBE_READER_ROOT: Sets the root directory for file browsing (default: current working directory)- Files outside this directory cannot be accessed
- Use this to restrict file browsing to a specific project
API Endpoints
Tmux:
GET /api/tmux/tree- List all sessions/windows/panesGET /api/tmux/pane/{session}/{window}/{pane}?scrollback=1000- Get pane content with configurable scrollback
Files:
GET /api/files?path=.- List directory contents (relative to project root)GET /api/files/content?path=file.txt- Render file content (max 10MB) with fieldspath,render_mode,html, andmetadata
Design Principles
- Eink-first: No animations, high contrast, instant updates
- Minimal overhead: Direct tmux capture, simple file operations
- Space-efficient: Every pixel counts on small eink screens
- Single-page: All content fits viewport, reduces refresh artifacts
Project Structure
vibe-reader/
backend/
main.py # FastAPI app with router includes
tmux.py # Tmux endpoints
files.py # File browser endpoints
frontend/
index.html # Single-page UI (Tmux/Files/Config views)
styles.css # Eink-optimized styles
app.js # Client logic with scrollbar management
pyproject.toml # uv configuration
Requirements
- Python 3.13+
- tmux (for tmux viewing feature)
- Modern browser on eink device
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vibe_reader-0.1.5.tar.gz.
File metadata
- Download URL: vibe_reader-0.1.5.tar.gz
- Upload date:
- Size: 40.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e034ffc94f7b8ca70b293717b64bd4778ebeda91673b33b738b8c39a201871fd
|
|
| MD5 |
2f2fb67678c81f0881b798bd5d278e99
|
|
| BLAKE2b-256 |
9ef47590b4d645816375bd4e7f689e7f602af702612d5806462b510fd1fb25f7
|
Provenance
The following attestation bundles were made for vibe_reader-0.1.5.tar.gz:
Publisher:
publish.yml on PsychArch/vibe-reader
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vibe_reader-0.1.5.tar.gz -
Subject digest:
e034ffc94f7b8ca70b293717b64bd4778ebeda91673b33b738b8c39a201871fd - Sigstore transparency entry: 612594360
- Sigstore integration time:
-
Permalink:
PsychArch/vibe-reader@983aa65ca8aa836fa2d6ed0c7a7049d18bd63864 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/PsychArch
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@983aa65ca8aa836fa2d6ed0c7a7049d18bd63864 -
Trigger Event:
release
-
Statement type:
File details
Details for the file vibe_reader-0.1.5-py3-none-any.whl.
File metadata
- Download URL: vibe_reader-0.1.5-py3-none-any.whl
- Upload date:
- Size: 25.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f0d185e241e8564367750162a081352e1e4f660653cc2e08e7d6447af860c31
|
|
| MD5 |
ecb9b44630a3e6b7c43179f036b8511c
|
|
| BLAKE2b-256 |
35ddf51eb9e03a99334856bf75286b3df4db787a00caf6797b7191408829cb73
|
Provenance
The following attestation bundles were made for vibe_reader-0.1.5-py3-none-any.whl:
Publisher:
publish.yml on PsychArch/vibe-reader
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vibe_reader-0.1.5-py3-none-any.whl -
Subject digest:
8f0d185e241e8564367750162a081352e1e4f660653cc2e08e7d6447af860c31 - Sigstore transparency entry: 612594392
- Sigstore integration time:
-
Permalink:
PsychArch/vibe-reader@983aa65ca8aa836fa2d6ed0c7a7049d18bd63864 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/PsychArch
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@983aa65ca8aa836fa2d6ed0c7a7049d18bd63864 -
Trigger Event:
release
-
Statement type: