원클릭으로
icey-server-operator
Safely build, validate, package, release, and operate the icey-server CLI and media server surface.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Safely build, validate, package, release, and operate the icey-server CLI and media server surface.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | icey-server-operator |
| description | Safely build, validate, package, release, and operate the icey-server CLI and media server surface. |
This is a portable skill document for agents working in nilstate/icey-cli.
Use it to preserve the repo's build, validation, packaging, and operator bring-up conventions.
The file is useful as plain project documentation. Tools that understand SKILL.md, including runx, can optionally pair it with execution, verification, and receipts.
This workflow is grounded in these repo files:
README.md: native quick start, Docker demo path, repo workflow, runtime modes, endpoints, browser smoke notes, and bring-up order.CMakeLists.txt: C++20 project shape, ICEY_SOURCE_DIR, icey component requirements, install layout, and web UI install destination.CMakePresets.json: dev and release configure/build presets using a sibling ../icey checkout.Makefile: canonical wrapper targets for configure, build, web, install, package, release, Docker, package-manager validation, and the macOS-only facetime-demo helper.web/package.json: Vite build and Playwright smoke commands for Chromium, Firefox, WebKit, and Docker smoke..github/workflows/ci.yml: Linux CI contract using Ubuntu 24.04, GCC 13, pinned ICEY_VERSION, web build, staged install, browser smoke, and package-manager cutover..github/workflows/release.yml: release package, Docker image, GitHub release assets, and optional package-manager publication flow..github/workflows/publish-package-managers.yml: Homebrew, AUR, APT, and rendered manifest publication gates.packaging/README.md: package-manager model, artifact names, generator scripts, and validation expectations.docker/README.md: fastest demo path, host-networking assumptions, runtime overrides, and Compose source path.docs/facetime-on-macbook.md: macOS realtime path. Single-process bring-up via the avfoundation: URL scheme dispatched by MediaCapture::openFile. Covers permission prompts, audio resampler bring-up, and the speaker default-mute.scripts/facetime-demo.sh: one-command single-process bring-up of icey-server --source 'avfoundation:0:none' on macOS, fronted by the make facetime-demo target.VERSION and ICEY_VERSION: release context for this repo and the pinned core nilstate/icey dependency.For the current versions, read VERSION (icey-server) and ICEY_VERSION (the pinned core icey dependency) rather than relying on numbers in this file.
Use this skill when an agent needs to:
icey-server C++ server behavior, CLI flags, config handling, operator endpoints, or install layoutnilstate/icey checkoutstream, record, relay, TURN, RTSP, or TLS paths without mixing failure domainsDo not use this skill to change core media primitives in nilstate/icey; that belongs in the core repo. This repo consumes the pinned core release through ICEY_VERSION.
Always inspect these before planning changes:
README.md for the public operator contract and CLI option listMakefile for preferred local commandsCMakePresets.json and CMakeLists.txt for build shape and dependency wiringICEY_VERSION before assuming core API behavior.github/workflows/ci.yml before changing validation expectationsweb/package.json before changing browser smoke behaviorpackaging/README.md and scripts/*release* before changing release or package-manager outputdocker/README.md and docker/* before changing demo behaviorIf a requested change touches release output, inspect VERSION, CHANGELOG.md, scripts/validate-release-metadata.sh, and scripts/package-manager-check.sh in the same pass.
docker run --rm --network host 0state/icey-server:latest, then http://localhost:4500.stream without TURN, then record, then relay, then TURN-enabled external or NAT testing.--doctor as the first machine-readable preflight for operator-facing runtime changes.ICEY_VERSION model. Do not silently float to nilstate/icey main in release or CI paths.Map the request to one or more surfaces:
server: C++ server, CLI flags, config, endpoints, runtime modesweb: Vite UI, Symple client/player integration, browser smokedocker: published image, Compose source path, host-networking demopackaging: staged layout, tar/zip/deb/APT/package-manager manifestsrelease: VERSION, ICEY_VERSION, changelog, GitHub release assets, Docker Hubdocs: README, docker README, packaging README, operator instructionsIf the change crosses surfaces, plan validation for each touched surface before editing.
Preferred source-backed path with the sibling icey checkout:
cmake --preset dev
cmake --build --preset dev
Equivalent Makefile path:
make configure
make build
If the sibling checkout is not at ../icey, pass ICEY_SOURCE_DIR=/path/to/icey explicitly.
Use --doctor before claiming the server is runnable:
./build-dev/src/server/icey-server --doctor
For RTSP paths, start from the tracked example:
cp config.rtsp.example.json config.local.json
$EDITOR config.local.json
./build-dev/src/server/icey-server --config config.local.json --doctor
./build-dev/src/server/icey-server --config config.local.json
For a browser-visible local app, build the web UI first:
make web-install
make web-build
./build-dev/src/server/icey-server --web-root web/dist --source /path/to/video.mp4
For UI changes or media-path claims, run the Chromium smoke path that CI treats as authoritative:
npm --prefix web ci
npm --prefix web run build
npm --prefix web run test:smoke:chromium
For the published-image demo contract, keep the public command stable:
docker run --rm --network host 0state/icey-server:latest
For local source-backed Docker validation:
docker compose -f docker/compose.yaml up --build
For the macOS realtime FaceTime path, exercise the dedicated helper. It runs a single icey-server process that opens AVFoundation directly via the avfoundation: URL scheme; Ctrl-C tears it down:
make facetime-demo
That target wraps scripts/facetime-demo.sh. macOS-only because of the avfoundation input. Setup details, including the device permission prompt, the audio capture default, and the speaker default-mute, are documented in docs/facetime-on-macbook.md.
For staged app layout changes:
make install
For release metadata only:
make release-metadata-check
For the full package-manager cutover contract:
make package-managers
This must validate Linux tar/zip archives, Debian package contents, APT repo archive, Homebrew formula, AUR PKGBUILD, Nix expression, SHA256SUMS, and Windows-facing manifests only when real Windows artifacts exist.
A useful agent result should report:
ICEY_VERSION was relevantstream, record, relay, TURN, RTSP, or TLSDo not collapse failures into generic language. If a check fails, preserve the exact command, exit behavior, and likely surface.
For implementation work, produce a concise change summary plus validation evidence. For operator help, produce an ordered bring-up path with the first command the operator should run next. For packaging or release work, name every artifact family affected.
This file is a portable SKILL.md. Agents and tools that understand SKILL.md can use it as repo workflow context. runx can optionally pair it with a registry binding for execution, verification, and receipts, but this repo does not require runx to use the file.