nc://myradio

v0.1.0Pinned
ThomSharktools/nodecode-myradio: DJs your own local myradio station from chat: now playing, the queue, song requests, DJ lines. - a rewrite of newjordan/myradio (Apache-2.0), credited to newjordan903ecb1· 9 Nov1 commit
test1 filecell.lisp32.2 KBLICENSE11.1 KB

nodecode-myradio

Myradio: DJ and run your own local radio station from chat — what is on air, the queue, song requests and the DJ's lines. A Nodecode rewrite of newjordan/myradio by newjordan.

Get it

Tell the agent "add the myradio cell", or run nodecode add nc://myradio.

Set it up

The cell drives a myradio station that already runs on the same computer: start it with myradio (or python3 -m myradio.server), and the station serves its own page and its control API on port 8765. The cell reads the private control.token the station writes in its data folder — no key to paste, nothing to sign in to.

Two settings, both in the myradio section of ~/.nodecode/config.jsonc (or /settings):

Setting Default What it is
data_dir ~/.myradio The station's data folder, the one holding control.token.
port 8765 The port the station listens on.
timeout_seconds 15 One request's ceiling.

If the station keeps its data elsewhere, point data_dir at it: the token in that folder is what tells the station this is its own agent.

Use it

Ask for what you want: "what's on my radio station?", "queue some Big Earl", "write a DJ line for the next song", "make me a song about fixing the build". The model gets twelve tools:

Tool What it does
myradio_status What is on air, the queue (with queue_id), the library, schedules, recent history, and whether the music and DJ voice makers are ready.
myradio_library Search the library by words and kind — the way to find songs when the library is big.
myradio_queue_add, myradio_queue_move, myradio_queue_remove Work the queue.
myradio_start, myradio_skip, myradio_fade_next Playout on this computer.
myradio_schedule_add Play a track once, at an exact time.
myradio_make Ask the station's makers for new audio: a song, a DJ lead-in, a station ID, a spot.
myradio_operations, myradio_run Everything else the running station offers, and one call to run any of it.

The operator has /radio:

/radio                 what is on air, time left, up next and the stream
/radio play <words>    find a song in the library and play it next
/radio request <idea>  ask the station's music maker for a new song about anything
/radio skip            skip the current track (/radio fade fades it out instead)
/radio start           start playout on this computer
/radio stop            stop playout
/radio live            go live to your saved stream destination (public)
/radio off-air         disconnect the stream; playout continues

Going live, going off air and deleting audio are the owner's: the model is refused those, and /radio live is how a person makes the station public. (help :myradio) carries the DJ guidance, so the model knows to keep three to six carts queued, vary the energy, and never repeat an artist back to back.

What is in it

File What it is
cell.lisp The station client, the twelve tools, the card and /radio.
package.lisp The package and the cell's one condition.
test/cell-test.lisp Seventeen tests against a stubbed station: the wire, the arguments, the refusals and /radio.

License

Apache-2.0. The original plugin is Copyright (c) 2026 Omnispace Technologies and the myradio contributors: see LICENSE and NOTICE.

Add nc://myradio

  1. 1

    Install Nodecode

    Once per machine.

    $ curl -fsSL https://nodecode.ai/install.sh | sh
  2. 2

    Add the cell

    Pinned at 903ecb1.

    $ nodecode add nc://myradio

    Or tell the agent add the myradio cell.