HomeProjectsacue studio
Service

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.

Being rewritten; in the archive
acue-studio
Business Source License, GPL-3.0 from 1 May 2033
amber-acueEnchantOdinodin-pdfodin-web
Acue Media
acue-studio
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.

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):

bash
sudo apt install acue-studio