Live Nov 18 · Cohort 3Nov 18, 19:00 MSK — free hands-on AI agents live workshop · Live Cohort 3 starts Nov 23Join Nov 18 Live →Cohort 3 (Nov 23)
ReleaseInsight · On RadarHabr AI→ original

Developer uses AI agents to recreate Winamp for Mac with 2–3% CPU usage

After putting off his Winamp-style Mac player for several years, its creator finally shipped it with help from AI agents. MacAmp uses Swift, SwiftUI and AppKit, without Electron: on an M1, it uses about 0,01% CPU when paused and 2–3% during playback with the spectrum analyzer running. Agents wrote most of the code; the human handled the concept, architecture and final approval. The project is open source under the MIT license.

AI-processed from Habr AI; edited by Hamidun News
Developer uses AI agents to recreate Winamp for Mac with 2–3% CPU usage
Source: Habr AI. Collage: Hamidun News.
Listen to article
Article Fact Sheet & Key Figures
ParameterDetails
Primary sourceHabr AI ↗
Editor-in-Chief
Key metric #1The agent reads the product vision, plan and Winamp 2.x reference before starting work
Key metric #2AGENTS.md, skills and a single test command, ./build.sh test, keep the agent within bounds
Agents cannot judge how something feelscrossfade and dragging need hands-on testing

It’s a familiar story: an abandoned folder holds a personal project that stalled three or four years ago at the first screen and basic playback. Developer Alexrel wanted a simple Winamp-style player for Mac, but modern alternatives had either become sprawling apps with streaming services or used Electron and wasted CPU cycles. AI agents finally helped him finish his own player. The result is MacAmp: an open-source recreation of Winamp 2.95 built with Swift, SwiftUI and AppKit, without web views. It ships as a universal build for Apple Silicon and Intel and requires macOS 14 or later.

What the finished player offers

The player recreates the original down to its windows, menus and keyboard shortcuts. The main window, equalizer and playlist snap together, and Shade and Double Size modes are available. It supports any Winamp 2.x skin, plays MP3, AAC, FLAC, Ogg, MIDI and other formats, and supports internet radio, CD ripping and a ten-band equalizer. Modern features work behind the scenes: audio automatically switches to a new output device, for example.

Resource use is the key metric for a utility meant to sit in a corner of the screen. On an M1, the player uses about 0,01% CPU when paused and 2–3% during playback with the spectrum analyzer running. When nothing is playing, the engine stops, and the analyzer stops sending frames after two seconds of silence.

Engineering details worth borrowing

Three separate borderless NSWindow instances need to move as one, but macOS offers no way to group them. The developer calculates each window’s position from its location at the start of the drag plus a shared offset. Adding small increments with every mouse movement would accumulate rounding errors and pull the seams apart. Edge snapping is calculated once using the proposed window bounds, then applied to the entire group.

The second detail concerns skins. These are BMP bitmaps designed for older, low-density displays, and standard rendering on Retina makes the text and timer digits blurry. The windows therefore draw themselves with interpolationQuality = .none, and sprites are cropped using the original pixel coordinates. The equalizer uses AVAudioUnitEQ: its bands are parametric filters, while globalGain provides the preamp.

How the agents worked

According to the developer, AI agents wrote most of the code. He came up with ideas, assigned tasks, reviewed the results and decided what to release. The approach worked because the human understood what the product should be and could spot architectural drift, while the agent knew the specific AppKit calls.

Three things helped:

  • Documentation in the repository. A product vision, phased plan, checklist, reference guide to Winamp 2.x dimensions and behavior, and screenshots of the original. The agent reads all of this before starting work, so there is no need to explain each time that “like Winamp” means literally.
  • AGENTS.md and skills. Rules and instructions for safely changing the equalizer and playlist keep the agent from breaking working features.
  • Tests with a single command. ./build.sh test makes it quick to check every change.

The agents could not take over judging how things feel: how dragging responds, whether a field jitters, whether a color is right, or how crossfade sounds with actual tracks. Those checks require hands and ears.

Limitations and the practical takeaway

The project has clear gaps. It lacks Milkdrop visualizations, MP3 and Ogg encoders for CD ripping, tracker module support and a Last.fm scrobbler. The app deliberately has no Developer ID signature: the player replaces file icons inside its own bundle and signs itself again locally, so Gatekeeper will display a warning on first launch. Users can bypass it through security settings or with the command xattr -dr com.apple.quarantine. The developer also tested the player on just one Mac and one music library, so he is asking for reports on crossfade, CUE, radio after a network interruption, Bluetooth, Mac sleep and large playlists.

The practical lesson is straightforward. Give agents a project with documentation, rules and automated checks instead of an abstract instruction to “build a player.” They can then handle implementation with their knowledge of APIs, while product decisions and final approval stay with you. The source code and DMG build are on GitHub under the MIT license.

Story

Key Questions Answered

What the finished player offers?

The player recreates the original down to its windows, menus and keyboard shortcuts. The main window, equalizer and playlist snap together, and Shade and Double Size modes are available. It supports any Winamp 2.x skin, plays MP3, AAC, FLAC, Ogg, MIDI and other formats, and supports internet radio, CD ripping and a ten-band equalizer. Modern features work behind the scenes: audio automatically switches to a new output device, for example.

What are the key details on Engineering details worth borrowing?

Three separate borderless NSWindow instances need to move as one, but macOS offers no way to group them. The developer calculates each window’s position from its location at the start of the drag plus a shared offset. Adding small increments with every mouse movement would accumulate rounding errors and pull the seams apart. Edge snapping is calculated once using the proposed window bounds, then applied to the entire group. The second detail concerns skins.

How the agents worked?

According to the developer, AI agents wrote most of the code. He came up with ideas, assigned tasks, reviewed the results and decided what to release. The approach worked because the human understood what the product should be and could spot architectural drift, while the agent knew the specific AppKit calls. Three things helped: Documentation in the repository. A product vision, phased plan, checklist, reference guide to Winamp 2.x dimensions and behavior, and screenshots of the original.

ZK
Zhemal Khamidun — CPO at Alpina Digital, product manager of AlpinaGPT. Building AI products since 2019. Hamidun News is a pet project that grew into a production aggregator with 6,000+ readers.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
What do you think?
Loading comments…