d7a17eb05421abc9f94b63effb5be5b5fd963ee8
doExtract() only checked data.message, so JSON responses with error key (e.g. 'no ISO files found') would show green success. Now checks data.error first and displays it in red.
AKAI Utils
AKAI sampler toolkit — search, download, browse, extract, and package AKAI S900/S950/S1000/S1100/S3000/CD3000 sample libraries.
Two interfaces:
- CLI (
akai-fetch) — search archive.org, download ISOs, extract WAVs - Web UI / Electron — full visual browser with disk inspection, sample preview, and disk packaging
Quickstart
Toolchain (mise)
mise trust # first time only
mise install # installs go 1.26, node 22
mise run build # → ./akai-fetch
Toolchain check
mise run check-all # checks gcc, brew, mise, go, node, docker, colima
mise run check-toolchain # core tools only
mise run check-docker-toolchain # docker + compose + colima (macOS)
Docker
mise run docker-up
# Open http://localhost:8080
Build from source
# CLI
mise run build
./akai-fetch search --filter vocal
# Web server (local)
mise run serve
# Open http://localhost:PORT (auto-assigned)
# Web server (Docker / network-accessible)
./akai-fetch serve --host 0.0.0.0 -p 8080
# Open http://<host-ip>:8080
# Electron (macOS)
mise run electron-deps
mise run electron-build-mac
CLI Usage
akai-fetch search [flags] search archive.org for AKAI sampler ISOs
akai-fetch list <identifier> list downloadable ISO files in an item
akai-fetch download [flags] download ISOs from archive.org
akai-fetch extract [flags] extract WAVs from downloaded ISOs
akai-fetch pipeline [flags] search → download → extract in one command
akai-fetch serve [flags] start HTTP server with web UI
Architecture
akai-fetch serve (Go HTTP server, embedded web UI)
├── /api/search archive.org search
├── /api/list list ISO files in an item
├── /api/download download ISOs with SSE progress
├── /api/extract extract WAVs via akaiutil
└── /api/progress SSE download progress stream
electron/ Electron wrapper (spawns akai-fetch serve as sidecar)
├── main.js main process
├── preload.js context bridge
└── package.json electron-builder config
scripts/
├── extract_wavs.sh batch WAV extraction via akaiutil
├── check-toolchain.sh verify gcc, brew, mise, go, node
└── check-docker-toolchain.sh verify docker, compose, colima
third_party/akaiutil/ Vendored akaiutil 4.6.7 (C, GPLv2)
Tech Stack
| Component | Tech | External Deps |
|---|---|---|
| CLI server | Go 1.26, stdlib | 0 |
| Web UI | HTML/CSS/JS (vanilla) | 0 |
| Electron | Electron 33, electron-builder | Node deps |
| Extraction | akaiutil (C) via Go wrappers | vendored C source |
Zero Go dependencies. The web UI uses no framework — vanilla JS, Web Audio API, Server-Sent Events.
Feature Roadmap
See open issues.
| # | Feature | Status |
|---|---|---|
| — | Search, download, extract, pipeline (CLI) | done |
| — | HTTP server + web UI + Electron shell | done |
| — | WAV extraction re-implemented in Go | done |
| — | MkdirAll error handling + parent dir creation for downloads | done |
| — | Docker compose + mise toolchain + toolchain checks | done |
| #1 | Disk Browser — browse AKAI filesystem in web UI | todo |
| #2 | Disk Inspector — detailed disk metadata | todo |
| #3 | WAV→Disk Packager — create AKAI ISOs from WAVs | todo |
| #4 | Batch S900 Compressor | todo |
| #5 | Partition Backup/Restore | todo |
| #6 | Direct-to-Disk Take Extraction | todo |
| #7 | TAR Bulk Import/Export | todo |
| #8 | Sample Tag Editor | todo |
| #9 | Audio Preview Player | todo |
License
MIT. Contains vendored akaiutil 4.6.7 (GPLv2, (c) Klaus Michael Indlekofer).
Description
Languages
Go
61.6%
JavaScript
18.1%
Shell
10%
CSS
6.7%
HTML
2.1%
Other
1.5%