Metadata-Version: 2.4
Name: voicecast-worker
Version: 0.3.1
Summary: VoiceCast Worker: lend your Mac to VoiceCast Studio and make your own videos without limits. Speaks narration (sonic-forge) and renders videos for the studio's job queue while you are away, draws your own pictures with your Gemini key or FLUX.2 klein, saves your finished videos to ~/Movies/VoiceCast; the parrot twins in your menu bar show what it is doing.
Author: starshipagentic
License-Expression: MIT
Project-URL: Homepage, https://voicecast.studio
Project-URL: Developers, https://voicecast.studio/developers
Keywords: voicecast,worker,mflux,flux,gemini,tts,sonic-forge,apple-silicon
Classifier: Environment :: Console
Classifier: Environment :: MacOS X
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Multimedia :: Graphics
Classifier: Topic :: Multimedia :: Sound/Audio :: Speech
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: pictures
Requires-Dist: mflux>=0.20; extra == "pictures"
Provides-Extra: voice
Requires-Dist: sonic-forge[kokoro]>=0.13.0; extra == "voice"
Provides-Extra: clone
Requires-Dist: sonic-forge[clone-mlx]>=0.13.0; extra == "clone"
Provides-Extra: menubar
Requires-Dist: rumps>=0.4; extra == "menubar"
Provides-Extra: all
Requires-Dist: mflux>=0.20; extra == "all"
Requires-Dist: sonic-forge[clone-mlx,kokoro]>=0.13.0; extra == "all"
Requires-Dist: rumps>=0.4; extra == "all"
Provides-Extra: test
Requires-Dist: pytest>=8; extra == "test"

# voicecast-worker

VoiceCast Worker lends your Mac to [VoiceCast Studio](https://voicecast.studio). It pulls bite-size jobs from the studio's
one job queue, does them on your GPU, and hands the results back:

- **your own pictures** (only yours, never anyone else's): with your own Gemini key, or FLUX.2 klein on Apple silicon
  with [mflux](https://github.com/filipstrand/mflux), the model kept loaded (an M2 Ultra draws a picture in about 6 s,
  an M2 Max in about 20 s);
- **narration**: one paragraph at a time with [sonic-forge](https://pypi.org/project/sonic-forge/) (Kokoro, and cloned
  voices on the Apple GPU), assembled by the studio with the same seeded pauses as a whole narration;
- **picture checks** and **whole renders**: only on machines the studio owner trusts (renders need a checkout of the studio app).

Your own Mac makes your own videos first: the worker alternates one job for someone else, one of yours
("give one, take one"). It never opens a port: it calls the studio over HTTPS, and files travel by short-lived
presigned URLs.

## Make your own videos with your Mac

While your Mac is lent to the studio (online in the fleet), you get:

- **No weekly limit**, and videos up to **2 minutes long on Free**.
- **Your pictures drawn your way**: with your own Gemini API key (Google bills you directly, about 3¢ a
  picture with Nano Banana 2 Lite), or free on this Mac with FLUX.2 klein. Your Mac only ever draws
  your own pictures. With pictures off, the studio draws them as usual.
- **A fair share**: your Mac does one job for the studio for each one of yours (the studio sets the ratio; the menu bar
  shows it: "Share with the studio: 1 for 1").
- **Your videos saved**: each finished video lands in `~/Movies/VoiceCast` as "<title> (<date>).mp4", and stays
  online for 30 days.

```sh
voicecast-worker settings --pictures gemini --gemini-key AIza…   # your own key (aistudio.google.com/apikey)
voicecast-worker settings --pictures mac                          # FLUX.2 klein on this Mac (pip install 'voicecast-worker[pictures]')
voicecast-worker settings --pictures off                          # the studio draws them
voicecast-worker settings --save-videos on --videos-dir ~/Movies/VoiceCast
voicecast-worker videos                                           # save new videos now
```

Or from the menu bar: **Settings ▸** Pictures: My Gemini key / This Mac (free) / Off, Set Gemini key…, Save my videos,
Open my videos folder. Your Gemini key stays in `~/.voicecast/worker/config.json` (readable only by you); it goes to
Google only, never to the studio, and is shown as `AIza…last4`.

## Install

```sh
pipx install 'voicecast-worker[pictures,voice,menubar]'
voicecast-worker join <join-token> --server https://voicecast.studio
```

Get the join token from the studio's Developers page ("Join a Mac"), or with `voicecast worker join`. Then run it in a
terminal (`voicecast-worker run`) or from the menu bar (`voicecast-worker menubar`: Pause/Resume, Start at login).

Extras: `pictures` (mflux), `voice` (sonic-forge + Kokoro), `clone` (sonic-forge cloned voices on the Apple GPU),
`menubar` (rumps), `all`.

## When it works

```sh
voicecast-worker settings --gpu-max 35        # only while the GPU is quiet (someone else's model, a game)
voicecast-worker settings --user-idle 300     # only when you've been away 5 minutes
voicecast-worker settings --gpu-share 0.5     # rest as long as it worked
voicecast-worker settings --hours "22:00-08:00"
voicecast-worker pause / resume
voicecast-worker status
voicecast-worker doctor                       # which engines this Mac can run
voicecast-worker leave
```

State lives in `~/.voicecast/worker/` (an older `~/.video-maker-worker/` is still read) (`config.json` with the machine token
and your Gemini key, `status.json`, `videos.json` (which videos were saved), `worker.log`).

## Privacy

What a machine may see depends on its trust, set by the join token: a person's own Mac (`self`) only takes their own
jobs; a community Mac only takes public, bite-size jobs, never a cloned voice's reference, a real person's portrait,
a presenter's take or a whole render. Work on a Mac is not encrypted while it runs there; that is why private and
personal work only goes to machines that may see it.
