# Dual-Platform Twitch + Kick Autonomous Stream Plan

Status: `dual_platform_plan_review_only_closed_until_rotated_keys_and_human_start_yes`

This is the safe lane for running the same Sonic-Forage / Afterparty Forge signal on Twitch and Kick while keeping one autonomous content engine, one stream-ready master loop, and one operator-controlled OBS/FFmpeg cockpit.

## Immediate security note

A Twitch stream key was pasted into chat. Treat it as exposed.

**Do not use that key. Rotate/reset the Twitch stream key in the Twitch Creator Dashboard before any Twitch RTMP push.**

This repo intentionally does not store stream keys. Use protected env files outside the repo only.

## What was forked / queued

- Kick docs fork: <https://github.com/Sonic-Forage/KickDevDocs>
- Twitch CLI fork: <https://github.com/Sonic-Forage/twitch-cli>

Purpose:

- KickDevDocs: reference/track official Kick API and platform docs.
- twitch-cli: local Twitch developer tooling, EventSub testing, chat/channel-point event mocks, future automation workbench.

## Twitch simulcast posture

Current Twitch simulcasting guidance allows simulcasting, but the stream must not use Twitch to push viewers away to another live platform. Keep overlays platform-neutral:

- OK: “Sonic-Forage Intergalactic Radio is live.”
- OK: neutral proof hub QR / GitHub proof links.
- Avoid: “leave Twitch and go to Kick now.”
- Avoid: other-platform logos/links as the main Twitch CTA.

Source: <https://help.twitch.tv/s/article/simulcasting-guidelines>

## Architecture

```text
owned/generated master loop + OBS scenes + proof hub + arcade + field cam
        ↓
local dual pusher / OBS multi-RTMP plugin / restream layer
        ↓                         ↓
Twitch RTMP                 Kick RTMPS
```

Recommended first implementation:

1. Keep one stream content source: `docs/streaming/stream_ready/current_master_path.txt`.
2. Push to Twitch and Kick with two separate FFmpeg outputs or OBS multi-output.
3. Use separate protected env vars for each platform.
4. Never print stream keys in logs.
5. Keep exactly one pusher per platform key.
6. Start only after human explicitly says the new rotated Twitch key and Kick key are ready.

## Protected env shape

Create outside the repo:

```bash
/opt/data/secrets/dual_stream.env
```

Expected variables:

```bash
TWITCH_RTMP_URL=rtmp://live.twitch.tv/app
TWITCH_STREAM_KEY=[ROTATED_KEY]
KICK_RTMPS_URL=[KICK_BASE_RTMPS_URL]
KICK_STREAM_KEY=[KICK_KEY]
```

Do not commit this file. Do not paste its content into chat.

## Twitch ingest

Default Twitch RTMP target format:

```text
rtmp://live.twitch.tv/app/<stream-key>
```

Use Twitch ingest recommendations when tuning region: <https://help.twitch.tv/s/twitch-ingest-recommendation?language=en_US>

## First test ladder

1. **Local dry-run only** — decode master loop 2 minutes to null.
2. **Twitch-only private test after rotated key** — 5 minutes, verify audio/video.
3. **Kick-only retry after key/session reset** — 5 minutes, verify no RTMPS refusal.
4. **Dual push** — 10 minutes both platforms, same content.
5. **30-day run** — watchdogs, daily metrics, channel point queue, follower unlocks.

## What not to automate yet

Closed until explicit approval:

- starting Twitch RTMP with a pasted/exposed key
- starting Kick and Twitch simultaneously with unverified keys
- public posting to X/Facebook from the agent
- paid image/video generation
- public chat-to-shell
- letting viewers control Minecraft or any game directly
- rebroadcasting copyrighted streams/music/movies
- clipping other creators

## Experience upgrades to reduce repetition

The current loop cannot be “same thing forever.” Rotate lanes:

- 4:19 Intergalactic Breach Radio drop
- Retro Forge Arcade takeover
- Afterparty Oracle question queue
- Channel Points reward fulfillment cards
- Proof Hub patrol
- build wall / verifier wall
- field transmission Jimsky pop-in
- multilingual / Lake China caption mode
- AI-played game lab, starting with Minecraft sandbox
- generated clip recap cards from owned stream only

## Twitch tooling roadmap

Use the `Sonic-Forage/twitch-cli` fork to test locally before live API wiring:

- EventSub mock events
- Channel Points mock redemptions
- chat command fixtures
- safe redemption queue
- overlay payload contracts

Future Twitch API work should require OAuth/client setup and explicit approval before secrets are created or stored.
