# Repository channels Hosted Chopin keeps channel metadata in the selected storage adapter and uses GitHub as the current authorization source. A repository must appear in the authenticated user's owner, collaborator or organization-member repository listing. Merely being public is not enough to expose its Chopin channels. GitHub read access may list and open channels. Push or admin access may create a channel and mutate its plan, chat and decisions. The HTTP API and WebSocket upgrade both recheck those permissions; open hosted sockets revalidate their session and repository access periodically. ```text GET /api/repositories/:owner/:repository/channels POST /api/repositories/:owner/:repository/channels GET /api/channels/:channelId ``` Channel IDs are random lowercase UUIDs. The stored repository node ID is the authority; owner and name are retained to resolve the repository and are never trusted as substitutes for that ID. The web client uses ordinary document navigation: ```text / repository list /repositories/:owner/:repository channel list and creation /channels/:channelId chat, plan and decisions workspace ``` This stage still projects a channel's live plan through the existing `DATA_DIR/` sink. Moving that document, transcript and sidecar onto `StorageAdapter.collaboration` is the next persistence stage. The prototype agent is deliberately disabled in hosted mode. It has one global working directory and credential, which cannot safely serve repository-scoped users. Hosted agent turns resume only after Copilot runs with the channel owner's OAuth session and repository-scoped GitHub tools.