acue studio
A small server and a browser dashboard that turn prompt files into text, pictures, narration and clips, using the model servers you point it at, and keep each result as a bundle on disk.
- Status
- Being rewritten; in the archive
- Package
- acue-studio
- Licence
- Business Source License, GPL-3.0 from 1 May 2033
- Built with
- amber-acueEnchantOdinodin-pdfodin-web
- Part of
- Acue Media
- Source
- acue-studio

acue studio takes a prompt file and gives back media. Drop a file on the
dashboard at http://127.0.0.1:5193, and it queues the file, sends each request
to the server you named for it, and collects what comes back into a bundle: a
story’s text, its pictures, a narration with a Kokoro voice and quiet music
underneath, and a short video with captions, made with ffmpeg. Clips come from
an animator.
The model servers are your own, each speaking the same API the big hosted services use. acue studio does no inference itself. It is the part that knows what a prompt file means and what to do with the answers.
Prompt files
A prompt file is plain text with a few directives: this is a scene, this is a
picture, this line is narration, this is the voice to read it in. The same
format is read by acue, and the two share one parser,
amber-acue. A
finished bundle downloads as one .acue book, which Pinax
opens too, or as a PDF.
The prompt panel counts words as you type and checks spelling when you ask; it
can also ask the model server how many tokens a prompt is. Everything the
dashboard does is also a small JSON API, described at /openapi.yaml.
The rewrite
acue studio is a rewrite in Odin of an earlier Go program. A scoreboard measures both the same way, including the rows Go wins. These are from the same machine, and the Go program still does more, so a smaller number here is not yet a win:
| Go original | Odin rewrite | |
|---|---|---|
| lines of code, server part only, no tests | 11,184 | 4,586 |
| stripped binary | 16.0 MB | 2.1 MB |
| start-up | 25 ms | 15 ms |
| memory at idle | 15.6 MB | 8.9 MB |
| prompt files parsed per second | 8,700 | 24,100 |
Go wins some rows: it builds in less than half the time, the Go binary links two shared libraries and the Odin one twenty-eight, nearly all of them libsoup’s, and Go takes more uploads a second at sixteen at once.
The rewrite is not finished. Every kind of job has so far been tested only against stand-in servers.
How it is built
The server runs over libsoup, and the pages are htmx served from the binary
itself, with nothing loaded from another host. Spelling comes from enchant,
music beds are decoded with libmpg123 loaded at run time, and ffmpeg makes the
movie. It runs as a per-user service that does not start at login:
systemctl --user start acue-studio when you want it. It listens on this
machine only by default, and a change asked for from another website is
refused, so a page elsewhere cannot drive it.
Install
Once the Amber Linux archive is set up (it takes three commands, on the packages page):
sudo apt install acue-studio