moodbeat: a music player creating playlists from your mood

moodbeat is a desktop music player that builds a playlist from a mood you describe. You type something like “90s rock”, “rainy day in New York” or “Polish summertime”, and moodbeat asks OpenAI for 10-15 matching songs, finds them on YouTube, downloads them as MP3 and plays them in order. I often know what kind of music I want to hear, but not which songs. Streaming services have mood playlists, but they’re curated for everybody, and describing a vibe in my own words is much faster than scrolling through them. LLMs turned out to be surprisingly good music curators, so I built a small player around that idea. ...

September 29, 2026 · 5 min · 873 words · Piotr Wittchen

wavo: a music processing AI agent on Telegram

wavo is an AI agent for music processing. You send it a plain-language message on Telegram - “separate vocals from Queen - Bohemian Rhapsody”, “slow that song down to 80%”, or just a YouTube link with a note about what to do with it - and it works out which audio operations that means, runs them, publishes the result and replies with a link. It’s written in Rust, it’s one binary, and it glues together two other projects of mine: demix does the actual audio work (stem separation, tempo, pitch, key detection, cutting) and plainsong stores the results. ...

September 8, 2026 · 7 min · 1411 words · Piotr Wittchen

Six weeks of agentic coding in Rust: AICTL

For the last month and a half I’ve been working on a new project called AICTL. It’s a native AI agent for the terminal and macOS desktop, written in Rust. Source code is available on GitHub. It started mostly out of curiosity. I wanted to see how far I can push agentic software engineering on a real greenfield project - not a toy example or a weekend script, but a complete piece of software with a CLI, a desktop app, a server, documentation, CI, releases and the boring stuff around it. So I picked a domain I actually use every day (AI tooling), set a few constraints (Rust, native, one config, multiple frontends) and started experimenting. ...

May 19, 2026 · 9 min · 1868 words · Piotr Wittchen