skald
AI voice narrator for repo activity. Polls GitHub or GitLab feeds and narrates events like a live commentator — over your speakers.
What it sounds like
A typical morning of activity, narrated. Click ▶ to play any sample.
╭─ skald ──────────────────────────────────────────────────╮ │ Skald v0.5.0 - AI voice narrator for repo activity │ │ Source: github Feeds: oven-sh/bun Poll: 30s │ │ Personality: monotone british… Mode: full │ ╰──────────────────────────────────────────────────────────╯
╭─ Authors ──────────────────╮╭─ Projects ─────────────────╮ │ Ale 2 ││ voice-synth 2 │ │ Ragib 2 ││ audio-pback 1 │ │ Sam 1 ││ narrator 1 │ ╰────────────────────────────╯╰────────────────────────────╯
╭─ Updates ────────────────────────────────────────────────╮ │ [09:14] 1 new event(s) detected │ │ Ale - audio-playback │ │ "A modest push lands on the audio-playback branch…" │ │ │ │ [09:22] 1 new event(s) detected │ │ Ragib - voice-synth │ │ "And here, surfacing at last from weeks of work…" │ │ │ │ [09:38] 1 new event(s) detected │ │ Sam - narrator │ │ "An issue surfaces — memory leaks on long runs…" │ │ │ │ [09:51] 1 new event(s) detected │ │ Ragib - voice-synth │ │ "Quietly, forty-two slips into main. The fix takes…" │ │ │ │ [10:04] 1 new event(s) detected │ │ Ale - skald │ │ "Version one point two zero — released…" │ ╰──────────────────────────────────────────────────────────╯
╭──────────────────────────────────────────────────────────╮ │ [↑↓] select [c] copy [t] test [r] replay [m] mute │ ╰──────────────────────────────────────────────────────────╯
Quick start
# clone and install git clone https://github.com/AleBles/skald cd skald bun install # copy the example config and edit feeds + provider keys cp config.example.yaml skald.yaml # start narrating bun start
Configure GitHub or GitLab feeds and a chat + speech provider in skald.yaml. Bring your own keys for OpenAI, Gemini, Ollama, or the local claude CLI.
Features
Feed in, narration out, your speakers do the rest. Skald listens to GitHub and GitLab activity, hands each event to an LLM for a one-line story, and speaks it through a TTS provider of your choosing.
GitHub & GitLab
Polls the GitHub events API or GitLab Atom feeds with a unified event model. No webhooks, no inbound network needed.
Plug-in narration
Any OpenAI-compatible chat API — OpenAI, OpenRouter, Ollama, LM Studio — or the local claude CLI. Bring your own model.
Plug-in voice
OpenAI-compatible TTS endpoints or Google Gemini TTS. Pick the voice that fits the room.
Live commentary
Events become natural-language narrations with a tunable personality — not robotic notification pings.
Terminal dashboard
Five-panel Ink UI: author leaderboard, project distribution, the live narration feed, and a chat history log.
Catch-up on boot
Missed events from the last run get fetched and summarised aloud before live monitoring resumes.
First-run learning
Skald scans your feed history and prompts you to name authors and projects. Saved back to config for richer narration context.
Tunable run modes
Filter event types, swap providers, set personality. Run --text-only for silent text, --dry-run to fetch without narrating.