Midnight Shrike
A terminal-based habit RPG that rewards balance, not streaks.
[!] Pre-release v0.1.0 CLI TUI [~] Launches

[?] What is Strix?

Strix is a deterministic habit RPG that runs in your terminal. Every day is a fresh run. Complete tasks across 6 domains of life, build meaningful chains between related activities, and discover patterns you never noticed - all without a chatbot, without streaks pressure, and without friction.

Named after the genus of owls that includes the Tawny Owl - silent observers, keen-eyed, patient. Strix watches your habits and surfaces what matters.

[#] At a Glance

6
Domains
42
Templates
16
Intents
1
Binary

[$] Platforms

  • [LIN] Linux (x86_64, arm64)
  • [MAC] macOS (Intel + Apple Silicon)
  • [WIN] Windows (x86_64)
  • One binary. Zero dependencies.

[+] Core Features

Domain Classification
Chain Building
Intelligent Companion
Rhythm Phases
Pattern Insights
Thought Process

[~] Intelligent Companion

A deterministic in-app companion that observes silently, prompts sparingly, and reveals its thinking.

  • 16 intent types across 4 priority tiers
  • 42 template variants - no two messages the same
  • [?] expandable thought process shows every decision
  • [h]/[j] training - rate messages as helpful or not
  • Optional LLM enrichment via local Ollama (disabled by default)
  • Configurable verbosity, intent subscriptions, and full disable

[*] 6 Domains

  • Body - Exercise, nutrition, sleep
  • Learning - Reading, coding, skills
  • Creative - Writing, art, design
  • Career - Work, projects, goals
  • Social - Connection, community
  • Recovery - Rest, mindfulness, self-care

[=] Chain System

Complete same-domain tasks close together to form chains and earn XP multipliers:

  • 2 tasks → 1.25× XP
  • 3 tasks → 1.50× XP
  • 4 tasks → 1.75× XP
  • 5+ tasks → 2.00× XP (capped)
  • Cross-domain chains unlock bonus names

[-] Functionality

[>] How It Works

Strix runs as an interactive TUI (Terminal User Interface) or via direct CLI commands from your shell.

# Interactive mode
./strix

# CLI commands
strix add "Gym"           # Create a task
strix done "Gym"          # Complete it
strix today               # See today's progress
strix review              # Weekly review + insights
strix export              # Export data (JSON/CSV/MD)
strix config set companion.verbosity concise

The companion observes your completions and surfaces milestones, neglected domains, streak celebrations, and time-of-day greetings - all deterministically, with visible reasoning.

[#] Architecture

  • Go - Compiled to a single binary
  • SQLite - Local, no server needed
  • Bubble Tea - TUI framework
  • Lip Gloss - Styling
  • Ollama - Optional LLM enrichment (local only)

[!] Stability & Known Issues

[!] Pre-Release Software

Strix is in active development. The database schema, CLI interface, and companion behavior may change between releases. Data loss is possible on upgrade - always back up ~/.strix/strix.db before updating.

[!] Known Limitations

  • Domain classification uses substring matching - some tasks may be misclassified (e.g., "Meditate" → Creative instead of Recovery)
  • Chain detection is order-dependent within a session
  • Cross-session state is not fully synced (companion resets on app close)
  • Pattern insights require 7+ days of data to be meaningful
  • Reminder system (scheduled reminders) is not yet wired to the trigger pipeline

[+] Coming Soon

  • Reminder scheduler (time-based + condition-based)
  • Cross-session companion persistence
  • Improved domain classification (embedding-based)
  • Config profiles (export/import settings)
  • Export formats: CSV, Markdown tables, JSON

[*] Testing Status

88+
Unit Tests
100%
Build Pass
Partial
Integration
None
E2E Tests

Core inference pipeline is unit-tested. No end-to-end or cross-session tests yet. Companion is tested offline (no DB dependency for inference).

[~] LLM Enrichment

[*] Optional - Disabled by Default

Strix includes an optional LLM enrichment layer that rephrases companion messages using a local Ollama instance. The LLM is not bundled with the binary - you must run Ollama separately if you want enrichment.

When disabled (default), the companion is fully deterministic: same inputs always produce the same output. When enabled, only 3 intent categories are enrichable: congratulations, observations, and reflections. Greetings, suggestions, and reminders are never sent to the LLM.

[$] Enable LLM

# Install Ollama (if not installed)
curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3.2:1b

# Configure Strix
strix config set llm.enabled true
strix config set llm.model llama3.2:1b

[#] Safety

  • LLM sees only the filled template
  • Structural integrity validation prevents hallucination
  • 5-second timeout with graceful fallback
  • No data leaves your machine
  • All enrichment is local via Ollama API

[*] Enrichable Intents

  • [✓] congratulate.*
  • [✓] observe.*
  • [✓] greeting.reflect
  • [–] Greetings
  • [–] Suggestions
  • [–] Reminders

[$] System Requirements

Requirement Minimum Recommended Notes
OS Linux kernel 4.15+ / macOS 12+ / Windows 10 1809+ Linux 6.x / macOS 14+ / Windows 11 NixOS, Alpine, WSL2 all supported
Architecture x86_64, arm64, armv7 x86_64 or Apple Silicon AArch64 builds available
Terminal 256-color capable TrueColor (24-bit) + Unicode Kitty, iTerm2, Windows Terminal, foot, alacritty
RAM 50 MB 100 MB Go runtime + SQLite cache + TUI rendering
Disk 25 MB 100 MB ~15 MB binary + SQLite DB (grows with use)
LLM (Optional) Ollama 0.3+ + 1 GB system RAM 4 GB system RAM (for 7B models) Runs on CPU via Ollama. 1B models need ~1 GB, 7B models ~4 GB
Dependencies None. Single static binary. No Python, Node, or Docker needed

[!] Bug Reports

[#] Report Format

All bug reports must include the following sections. Reports that don't follow this format will be closed without review.

## Environment
- Strix version: [e.g. Midnight Shrike]
- OS: [e.g. Linux 6.8.0, macOS 14.5]
- Terminal: [e.g. Kitty 0.35, Windows Terminal 1.21]
- Architecture: [e.g. x86_64, arm64]

## Summary
[One sentence describing the bug]

## Steps to Reproduce
1. [First step]
2. [Second step]
3. [Third step]

## Expected Behavior
[What should happen]

## Actual Behavior
[What actually happens - include error messages]

## Screenshots / Logs
[If applicable, paste terminal output or attach screenshots]

## Database
[Run: sqlite3 ~/.strix/strix.db ".dump" | head -50]
[Or describe what data was present]

## Additional Context
[Any other relevant information]

[+] Submission

  • Open a GitHub Issue with the format above
  • Label your issue: bug, crash, data-loss, or regression
  • Include midnight-shrike in the title
  • Response time: 24-72 hours
  • Data-loss bugs: priority 1
  • Crash bugs: priority 2
  • Feature gaps: priority 3

[✓] Before Filing

  • Check ~/.strix/strix.db exists and has data
  • Run with STRIX_DEBUG=1 ./strix for verbose logs
  • Try strix config list to confirm settings
  • Search existing issues for duplicates
  • Reproduce with a fresh DB: mv ~/.strix/strix.db{,.bak}

[§] License

[i] Free for Personal Use - Not for Commercial Use

Strix is provided free of charge for personal, non-commercial use only. Commercial use, including but not limited to using Strix in a business, organization, or revenue-generating context, is strictly prohibited without explicit written permission.

This software is provided "as is," without warranty of any kind, express or implied. The authors are not liable for any damages, data loss, or other issues arising from the use of this software. Use at your own risk.

This notice is persistent and non-revocable. It will always be displayed on application startup.