Bitfocus AS
logo
logo
Bitfocus AS
logo
logo
Sign upSign in

Loading...

Bitfocus

Subscribe to our newsletter

The latest news, articles, and resources, sent to your inbox.

FacebookInstagramGitHubYouTubeLinkedIn

Products

  • Buttons
  • Companion

Integrations

  • Supported Devices
  • Developer Community
  • Connection Development

Support

  • Support Overview
  • Documentation
  • Video Tutorials
  • Community Forum

Sales

  • Resellers & Integrators
  • Buttons Pricing

Updates

  • Case Studies
  • Events & Trade Shows
  • Press Releases
  • Product Updates
  • Webinars

Legal

  • Legal Overview
  • Privacy Policy
  • Buttons EULA
  • Terms & Cookie Policy

Company

  • About us
  • Press kit
  • Careers

© 2026 Bitfocus AS. All rights reserved.

Built-in Registry Server
Docs for
Overview
Getting started
What is Bitfocus Buttons?
Install Buttons and get started
Manage your Buttons license
Activate Buttons offline
Find your way around Buttons
Create your first backup
Add an ATEM connection
Choose a control method
Choose an installation path
Install Buttons on Debian or Ubuntu
Understand HA clustering
Kubernetes HA
Update or remove Buttons
Positions
Understand positions
Create a position
Add controls and sections to a position
Create your first button
Use a connection's presets
Build more capable button actions
Add more feedback to a button
Organize controls in a section
Shift Section
Organize controls with a Folder Section
Add a Popover Section
Build and reuse a Shared Section
Build a Router Section
Understand Custom Routers
Custom Router panel
Surfaces
Surface compatibility
Add and attach a surface
Device orientation
Connections
Update a connection's module safely
Monitor and troubleshoot a connection
Router integrations
VideoHub and AJA KUMO
Utah Scientific BPS
Generic SW-P-08
Nevion VideoIPath
Arkona BLADE//runner
Routing
Physical routing
Configure ports and labels
Take a physical route
Understand route status
Topology graph
Routing Presets
Get started with virtual routing
Configure Nested Shapes
Reverse routing
Tielines
Routing Projects
Routing settings
Troubleshoot a route
Tally
Understand the Tally system
Send ATEM tally and labels to a UMD
Interpret Active Tally state
TSL/UMD connections
Diagnose tally problems
NMOS
Understand NMOS in Buttons
Connect Buttons to an NMOS Registry
Built-in Registry Server
Configure NMOS connections
Discover and adopt
Browse the NMOS inventory
Manage NMOS multicast addresses
Diagnose NMOS problems
Understand Cuelists
Build a Cuelist
Read and advance a running Cuelist
Control a Cuelist from a Position
Workflows
Understand workflows
Build your first workflow
Reuse a group of workflow nodes safely
Troubleshoot a workflow
Recipes
Sequence a timed automation
Call an HTTP endpoint from a workflow
REST endpoint
Use variables
Understand variable scope
Understand nested variables
Update expressions for v1.8
Plan and use Tags
Access
Create and manage users
Create roles and assign permissions
Grant access to specific resources
Show different controls by role
Sessions
Set up PIN and NFC sign-in
SSO
Get started with SSO
Connect a generic OIDC provider
Connect LDAP or Active Directory
Map identity claims to roles
Secure a Buttons deployment
Integrations
External control
Connect to Bitfocus Listener
USB Relay
Install USB Relay on Windows
Install USB Relay on macOS
Install USB Relay on Linux
Install USB Relay on a Raspberry Pi
Get started with the Control API
Secure and monitor the Control API
Control API reference
API reference
Administration
Enable and manage installable features
Services and health
Configure and monitor scheduled backups
Restore a backup and verify it
Export or import Buttons configuration
Store and rotate connection secrets
Replace the HTTPS certificate
HA backup and recovery
Settings
Collect support information
Reference
Glossary
Button Inspector reference
Network ports reference
Expressions
Internal actions reference
Routing Presets panel reference
Startup configuration reference
Workflow nodes
Connection workflow nodes
Workflow workflow nodes
Internal workflow nodes
Position workflow nodes
API workflow nodes
Utility workflow nodes

Loading...

Previous
← Connect Buttons to an NMOS Registry
Next
Configure NMOS connections →
Contact support →
You are viewing documentation for Buttons 1.8.See the docs for Buttons 1.6
Buttons/NMOS/Built-in Registry Server

Built-in Registry Server

Running the built-in Registry Server lets Buttons act as the shared directory that NMOS nodes on your network register into, so devices can be found by anything that queries the registry (including Buttons itself) without entering an address for every device by hand.
This is useful when you don't already have a separate registry appliance, or when you want Buttons to be the source of truth for a facility's NMOS resources.

Before you begin#

You need:
  • The NMOS feature enabled (on by default).
  • Access to Settings → NMOS.
  • Awareness of which network interface and port the registry should be reachable on, and whether the nodes that need to register can reach it.

Turn on the Registry Server#

  1. Open Settings → NMOS.
  2. Under Registry server, turn on Enable NMOS Registry server.
  3. Set Registry instance 1 port, the TCP port the IS-04 Registration and Query API listens on.
  4. Select Save.
Once enabled, Buttons accepts NMOS node registrations and serves the IS-04 Query API. In stand-alone mode, Buttons supports a single registry instance: running more than one requires Kubernetes.

Let nodes find the registry automatically#

Turn on Announce NMOS Registry instances on mDNS so enabled registry instances are advertised via the _nmos-register, _nmos-registration, and _nmos-query mDNS records nodes look for. Two further fields shape that advertisement:
  • Registry instance 1 mDNS service name: the base instance name published in the discovery records.
  • Registry instance 1 advertised host or IP: an optional hostname or address to expose instead of this machine's default mDNS host. Leave it blank to use the machine's default.
  • Registry instance 1 priority: the mDNS priority (pri TXT record) advertised for this instance. Lower values are preferred, which matters if more than one registry is reachable on the network.
If a node can't use mDNS (for example, because it sits on a different subnet), you can still point it at the registry manually using its own configuration, using this instance's port and address instead of relying on discovery.

Expose public endpoints for a NAT or multi-interface host#

If Buttons is reachable at a different address than the one nodes would otherwise detect (behind NAT, or on a host with more than one network interface), add one or more entries under Registry instance 1 public endpoints. These optional HTTP or HTTPS endpoints are advertised by the Node API instead of the request host, so nodes register using an address that's actually reachable for them.

Confirm nodes can register#

  1. Point a node's own registration configuration at this registry, either through its own mDNS discovery or by entering this instance's address and port directly.
  2. Open Settings → NMOS and select Inspect registry under Inspect Registry.
  3. Confirm the node's resources appear, and that further changes on the node are reflected as live updates.
Inspect registry is available once the Registry Server is enabled; it shows the NMOS resources currently stored by the registry and watches for live changes, which is the most direct way to confirm a node actually registered rather than just attempted to.
Deregistering a node's device, source, or flow also removes everything registered underneath it (its child sources/flows/senders/receivers), per the IS-04 spec: you won't see orphaned child resources lingering in Inspect registry after a parent is removed.

Optional: serve IS-09 system parameters#

IS-09 lets registered nodes pull global timing and heartbeat configuration from Buttons instead of needing it configured on every device individually.
  1. Under Registry server, turn on Enable IS-09 System API endpoints to serve the /x-nmos/system/v1.0 endpoints.
  2. Set IS-09 heartbeat interval: how often nodes should heartbeat to the Registration API, in seconds.
  3. Set IS-09 PTP announce receipt timeout: the number of PTP announce intervals allowed before a timeout.
  4. Set IS-09 PTP domain number: the PTP domain number advertised in the System API's global configuration.
  5. Select Save.

Decide how Buttons itself adopts from this registry#

Running the registry doesn't automatically make Buttons treat every node registered into it as adopted: that's a separate choice, made under NMOS Controller discovery on the same Settings → NMOS page. Setting Registry adoption strategy to Use Internal Registry has Buttons treat its own built-in registry as its adoption source automatically. Leaving it at Only manual adoption lets you add a Registry connection yourself and choose exactly which nodes to adopt, see Connect Buttons to an NMOS Registry.
A Registry connection that an NMOS setting creates for you is marked in the NMOS connection list, so you can tell it apart from one you added yourself:
  • Internal: the connection to the built-in registry, created by Use Internal Registry. Its setup page explains this and has an Open NMOS settings button. Its Connection Mode reads Internal Registry, and Registry UUIDs from Discovery Records isn't shown, because it always follows the built-in registry.
  • Managed: a connection created by the global Registry adoption strategy setting.
Hover the badge to see which setting created it. On either kind you can turn the connection off and on, and change its node adoption settings. Everything else is controlled by the NMOS setting that created it, so change it there instead.

If you get stuck#

What you see
What to try
A node never appears in Inspect registry.
Confirm the node is actually configured to register with this instance's address and port, and that mDNS or your manual configuration reaches it. If it's reaching the registry but still not appearing, the registry service's own logs record a "Rejected NMOS registration" warning with the specific reason (for example, a resource missing a required IS-04 field) whenever it refuses a registration attempt outright.
Inspect registry is unavailable.
Enable the Registry server first: the inspector only works once registration is active.
A node on another subnet can't find the registry via mDNS.
Configure that node with this instance's address and port directly rather than relying on discovery.
Nodes register, but Buttons never adopts them.
Check Registry adoption strategy under NMOS Controller discovery: manual adoption strategies require you to add a Registry connection or adopt nodes yourself.

Where to go next#

  • Connect Buttons to an NMOS Registry, to adopt specific nodes a registry already knows about.
  • Configure NMOS connections, for endpoint and behavior settings once nodes are adopted.

Was this helpful?

Was this helpful?

0 of 0 users found this page helpful