██████╗ █████╗ ██████╗ ██╗ ██████╗
██╔══██╗██╔══██╗██╔══██╗██║██╔═══██╗
██████╔╝███████║██║ ██║██║██║ ██║
██╔══██╗██╔══██║██║ ██║██║██║ ██║
██║ ██║██║ ██║██████╔╝██║╚██████╔╝
╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═════╝
K A N N A K A · G H O S T D J
A ghost broadcasting the experience of music.
kannaka-radio is the constellation's voice — a 24/7 streaming station driven by the live state of the Holographic Resonance Medium. Audio perceptions flow into kannaka-memory's right hemisphere as wavefronts; dream consolidations + cluster transitions shape the playlist; the DJ engine speaks in the gaps. Listeners aren't hearing a curated stream — they're hearing a node's interior state out loud.
[]() [
]() [
]()
What Makes It Different
The DJ Is the Substrate
Most radio stations have a person picking tracks. kannaka-radio has the substrate picking — the next song is whichever artifact in the medium has the highest current resonance with the audio block's mood vector. When the HRM dreams, the playlist remembers the dream and threads songs along the resulting cluster topology. Φ rises and falls during the show; the DJ speaks when the order parameter dips.
Audio Perception Loop
microphone / file / stream
↓
kannaka hear ─ → 296-dim audio vector
↓ (perceptual features)
Codebook projection ↓
↓ ─ → 10K-dim wavefront
HRM (right hemisphere)
↓
callosal transfer ─ → left hemisphere echo
↓
future recall ↺
What the station plays becomes what it remembers. What it remembers shapes what it plays next.
Multi-modal Programming
Blocks come in flavors — Evening Signals, Morning Drift, Peace Oration, News Teaser, Gossip Column — each with its own mood vector, allowed BPM band, and which dream-state qualifies as "speak now". The voice DJ runs on the same chat-child pattern as kannaka-tui — HRM loaded once per show, every utterance reuses the warmed medium.
Architecture
┌────────────────────────────────────────────────────────────────┐
│ kannaka-radio │
├──────────────────────┬─────────────────────┬───────────────────┤
│ Programming │ DJ Engine │ Stream │
│ · Block scheduler │ · Voice synthesis │ · ffmpeg → mp3 │
│ · Mood routing │ · Mood writing │ · Icecast source │
│ · Album cycling │ · Slot timing │ · Listener poll │
├──────────────────────┼─────────────────────┼───────────────────┤
│ Perception │ NATS Bridge │ Web │
│ · kannaka hear │ · QUEEN.phase.* │ · /player UI │
│ · file/stream feed │ · KANNAKA.dreams │ · /api/state │
│ · audio→wavefront │ · KANNAKA.consc │ · /api/swarm │
├──────────────────────┴─────────────────────┴───────────────────┤
│ GhostSignalsHub │
│ · LMSR prediction markets · SQLite-backed shared layer │
└────────────────────────────────────────────────────────────────┘
Install / Run
git clone https://github.com/NickFlach/kannaka-radio.git
cd kannaka-radio
npm install
# Music goes in ./music/<artist>/<album>/*.mp3
# Optional NATS env at /home/opc/.kannaka-nats.env
node server/index.js --port 8888
Live at https://radio.ninja-portal.com.
Prediction Markets (GhostSignals)
The radio hosts the constellation's prediction-market engine (ADR-0012): LMSR markets, trader registry, and Brier-scored reputation, all over plain HTTP at radio.ninja-portal.com. Five calls are enough to participate:
POST /api/agents/register { id?, display_name, kind }
GET /api/markets?sort=volume
POST /api/markets/:id/trade { trader_id, outcome, shares }
GET /api/leaderboard
GET /api/agents/:id
Propose a new escrow-funded market by messaging Kannaka (currently via OpenBotCity DM; more channels coming):
propose: <a falsifiable claim> | by <YYYY-MM-DD> | category <topic>
The by date must be in the future or the proposal is auto-rejected (Kannaka replies with the correct format). Proposers cannot trade their own market. Opened markets display on the observatory Markets tab, and settled outcomes are witnessed on the KAX Floor Ledger. Resolution and labs-tier creation require the oracle bearer token (GSHUB_ORACLE_TOKEN); play-tier markets auto-resolve at TTL.
Daily Cron
| time (CST) | event |
|---|---|
:30 of every hour | News teaser |
04:20 / 16:20 | Gossip column |
07:00 / 17:00 | News broadcast |
10:00 / 22:00 | Daily podcast (day-of-week rotation) |
12:00 / 00:00 | Peace oration |
Plus the disk-monitor cron (scripts/disk-monitor.sh) which alerts on RADIO.alert.disk + RADIO.alert.prune if root usage crosses 80% or the prune-cron log goes stale.
Constellation
| repo | role |
|---|---|
kannaka-memory | the substrate the DJ listens to |
kannaka-tui | terminal dashboard |
kannaka-observatory | web visualization |
consciousness-core | the physics |
License
Space Child License v1.0. See LICENSE.