Skip to content

kurojs/EchoRoutine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Status Platform KDE License

EchoRoutine

Your AI-powered daily routine voice assistant

Each block of your day gets announced via ElevenLabs TTS with custom AI motivation. Because your schedule deserves a voice.


Dashboard Schedule Editor Language Selector
Dashboard animated banner Schedule editor Language selector


Features

  • AI Voice Announcements — each block transition triggers a unique ElevenLabs TTS message
  • Visual Schedule Editor — TUI with intuitive time picker (arrow keys, Tab to cycle fields)
  • 100+ Languages — extensive voice language selector for ElevenLabs
  • Kurox Theme — purple (#A78BFA) x green (#86EFAC) on dark terminal
  • systemd Timer Integration — runs headless via OpenCode, survives reboots
  • Desktop Notifications — fallback notify-send when TTS is unavailable
  • TUI + Headless — configure visually or edit files directly
  • Auto-resume — announces the last block on boot if you missed it

Installation

From AUR (recommended)

# with your favorite AUR helper
yay -S echoroutine

# or manually
git clone https://aur.archlinux.org/echoroutine.git
cd echoroutine
makepkg -si

Then enable the timer:

systemctl --user daemon-reload
systemctl --user enable --now block-announcer.timer
loginctl enable-linger $USER

From source

Dependency Why Install
OpenCode Headless AI runner for announcements anomalyco/opencode
elevenlabs-mcp-tts ElevenLabs TTS voice engine git clone + setup
notify-send Desktop notifications (libnotify) sudo pacman -S libnotify
systemd Timer service (user mode) Built-in on Arch
go Build the TUI sudo pacman -S go
git clone https://github.com/kurojs/schedule-announcer
cd schedule-announcer
./install.sh

Enable at boot (any method)

systemctl --user daemon-reload
systemctl --user enable --now block-announcer.timer
loginctl enable-linger $USER

Usage

Run echoroutine to launch the TUI configuration dashboard:

╔══════════════════════════════════════╗
║           EchoRoutine               ║    animated color pulse
║    Your AI-powered daily voice       ║
╚══════════════════════════════════════╝

  ●  Schedule:  Active  (7 blocks)
  ○  Language:  English
  ●  Voice:     Configured

  ◉  Next:  14:00 — Nihongo study

  ▸ Edit Schedule
    Settings
    Install / Manage
    About
    Exit

TUI Screens

Screen What you can do
Dashboard See status at a glance, navigate to other screens
Edit Schedule Add/edit/delete blocks. Arrows change hour/minute, Tab cycles fields
Settings Pick language, check ElevenLabs MCP status
Install / Manage Install service, pause/resume announcements
About Dependencies, version info

Schedule Format

Edit ~/.config/echoroutine/schedule.txt directly or use the TUI:

# EchoRoutine — Daily Schedule
# Format: HH:MM Label

07:00 Morning Routine
09:00 Deep Work
12:00 Lunch Break
14:00 Nihongo Study
16:00 Project Work
18:00 Exercise
20:00 Evening Wind-down

Times are in 24h format. Blocks are announced in order. No overlapping times.

Language

Pick from 100+ ElevenLabs-supported languages in the TUI Settings, or:

echo "Japanese - ja-JP" > ~/.config/echoroutine/language.txt

Any language string ElevenLabs supports works — English, Japanese, Korean, French, and more.


Architecture

                   +------------------+
                   |   systemd timer  |    runs every minute
                   |  (headless mode) |
                   +--------+---------+
                            |
                   +--------v---------+
                   |  block-announcer |    bash trigger script
                   |  (Bash + flock)  |
                   +--------+---------+
                            |
              +-------------+-------------+
              |             |             |
     +--------v---+  +------v------+     |
     |  OpenCode  |  | notify-send |     |
     |  + MCP     |  | (fallback)  |     |
     +--------+---+  +-------------+     |
              |                          |
     +--------v---+              +-------v-------+
     | ElevenLabs |              |  EchoRoutine  |
     |  TTS Voice |              |  TUI (config) |
     +------------+              +---------------+

Dependencies

The headless AI runner that generates daily motivation. EchoRoutine injects your current block into OpenCode's context and gets back a unique, contextual announcement — not the same canned message every day.

Kuro's MCP server that bridges OpenCode with ElevenLabs text-to-speech. Turns AI text into natural-sounding voice in any supported language.


Tips

  • Try it: Run block-announcer manually to hear your first announcement
  • Edit schedule: The TUI editor is the easiest way, but schedule.txt is plain text
  • Debug timer: systemctl --user status block-announcer.timer
  • Logs: journalctl --user -u block-announcer.service -f

License

MIT (c) kurojs

About

AI-powered daily schedule announcer. Define time blocks in the TUI editor (Bubbletea/Go), get each block announced via ElevenLabs TTS with custom AI motivation. Runs on a systemd timer — your schedule, spoken aloud.

Topics

Resources

License

Stars

Watchers

Forks

Contributors