Zero to Hero (Hybrid Mode, UI)
First installation
Section titled “First installation”Initialise norsk-ctl
Section titled “Initialise norsk-ctl”Run norsk-ctl init to create the configuration file. Hybrid mode puts studio on the Docker bridge (proxied) and media on the host network for low-latency ingest.
$ norsk-ctl init --network-mode hybrid --working-directory /tmp/workspace --proxy-user admin --proxy-password testpass1Proxy user "admin" createdConfig written to ~/.norsk-ctl/config.yamlRegister the Studio product
Section titled “Register the Studio product”Register Norsk Studio as a product so its template is available to launch from the dashboard. Run this once from the command line.
$ norsk-ctl product add --image norskvideo/norsk-studio-product:2026-07-21-a3d4d173 --license-file ~/norsk-license.jsonname: norsk-studiospec: kind: container image: norskvideo/norsk-studio-product:2026-07-21-a3d4d173port: 14321containerId: 669ac996e25a54f49da830476f55b402bbb77c89e47cb685e9b4b46de292f4b3addedAt: 2026-08-04T19:21:41.946Zrunning: truehealth: unknownmanifest: manifestSchemaVersion: 1 name: norsk-studio version: 0.0.1 minRunnerVersion: 0.1.0 api: basePath: /api proxyPaths: - /api/* - /configure - /configure/* openapiFragmentPath: /api/openapi.yaml mcpPath: /mcp healthCheckPath: /healthz productMcpPath: /mcp ui: configScreenUrl: /configure sidebarEntries: [] dashboardWidgets: [] productTemplateActions: - label: Add examples product template configScreenUrl: /configure?template=examples - label: Add dev product template configScreenUrl: /configure?template=dev cli: subcommandTree: - name: plugin description: Scaffold and build Norsk Studio plugins flags: [] subcommands: - name: create description: "Scaffold a new plugin into the working directory's components/" flags: - name: name description: Plugin package name required: true - name: workingDirectory description: Working directory to scaffold into required: true - name: studioTag description: Studio image tag to scaffold against request: method: POST path: /api/plugins/create - name: list description: List plugins discovered in the working directory flags: - name: workingDirectory description: Working directory to inspect required: true request: method: GET path: /api/plugins - name: install description: Install an npm package as a plugin into the working directory flags: - name: pkg description: npm package to install required: true - name: workingDirectory description: Working directory to install into required: true - name: studioTag description: Studio image tag to install against request: method: POST path: /api/plugins/install - name: build description: "Bake the working directory's plugins into a studio image" flags: - name: tag description: Tag for the baked image required: true - name: workingDirectory description: Working directory whose plugins to bake required: true - name: fromImage description: Base studio image to bake onto - name: fromTag description: Base studio image tag - name: push description: Push the baked image to its registry type: boolean request: method: POST path: /api/plugins/build targets: - docker-compose components: [] runtime: sharedWorkingDirectory: false defaultProductTemplates: - name: studio-examples url: /api/product-templates/examples - name: studio-dev url: /api/product-templates/dev export: include: - studio-save-files/** - dashboards/** - components/** - assets/** - "*.yml" - "*.yaml" exclude: - "**/node_modules/**" - recordings/** - logs/** - "**/*.mp4" - "**/*.ts3"license: mode: byol file: ~/.norsk-ctl/licenses/norsk-license.jsonwarnings: - license is marked NON-PRODUCTION — not valid for production deploymentsGetting started
Section titled “Getting started”Sign in
Section titled “Sign in”Navigate to the proxy URL. Unauthenticated requests are met with a sign-in form backed by the user you configured during init.

Enter your username and password and click Sign in.
Open the dashboard
Section titled “Open the dashboard”
Navigate to the Instances page
Section titled “Navigate to the Instances page”Click Instances in the sidebar to manage instances.

Launch an instance
Section titled “Launch an instance”

Switch to Custom and open Advanced launch options to put media on the host network for low-latency ingest.


View instance details
Section titled “View instance details”The instance card shows its product, version, and launch parameters inline.

Open Norsk Studio
Section titled “Open Norsk Studio”In hybrid mode, the studio is accessed through the proxy — just like Docker mode.

Clean up
Section titled “Clean up”Navigate back to the Instances page, then Terminate the instance to delete it and free its resources.



The proxy is needed whenever instances are running — with no instances left, it can be stopped to free the port.
$ norsk-ctl proxy stopThe daemon can be stopped and restarted at any time — running instances and the proxy are unaffected.
$ norsk-ctl shutdown --daemon-onlyDaemon stopped (pid 441620)