Product
March 12, 2025

Scaling with Viam using fragment versions: Safer configuration management

Gain full control over machine configurations with structured versioning, safer rollouts, and easy rollbacks.
Natalia Jacobowitz
Product Manager

Introduction: Why fragment versions matter

Managing machine configurations at scale is complex. Without version control, updates can quickly become unmanageable, and reversing mistakes can be challenging.

That’s why we built fragment versions.

What are fragment versions?

If you’ve worked with fragments, you know they simplify configuration management by enabling modular, reusable setups across machines. But what happens when you need to iterate on a fragment, test changes, or roll back to a previous version?

That’s where fragment versions come in.

Fragment versions allow teams to track changes, maintain machine stability, and deploy updates with confidence. They also work seamlessly with nested fragments, making it easy to manage complex, layered configurations while maintaining version control across all dependencies. Instead of modifying a live fragment and risking unintended consequences, you can create new versions, test them in isolation via tags, and roll them out when ready.

Managing fragment versions with tags

To provide even greater control over updates, fragment versions support tagging. Tags allow you to reference specific fragment versions in your machine configurations and provide flexibility in managing updates.

How to create and apply tags:

  • When managing a fragment version, you can create and assign a tag (e.g., stable, testing, beta).
  • Tags can be applied to any version of a fragment to organize updates.
  • If a tested fragment version is successful, you can move a tag (e.g., stable) to that version, ensuring all machines using that tag update automatically.
  • If an issue arises, you can roll back by moving the tag to a previous, known-good version.

Once you've assigned tags to different versions of a fragment, the next step is deciding how machines reference them.

Choosing how to use fragment versions

When you add a fragment to a machine, you can choose how the machine updates to new versions:

  • Latest version (default) – The machine always updates to the latest version of the fragment as soon as a new version becomes available.
  • Specific version – The machine stays on a fixed version of the fragment and does not update automatically.

Tag-based versioning – The machine always uses the version of the fragment associated with a selected tag, such as stable.

A diagram illustrating different update strategies for machine configurations. It presents a table comparing three approaches: "Latest Version," "Specific Version," and "Tag-Based Versioning." Each strategy is described in terms of its update behavior, suitability, advantages, and disadvantages, helping teams choose the best method for managing machine configurations.
This flexibility ensures teams can balance stability and iteration based on their needs.
Sign Up

Why fragment versions matter and who benefits

Fragment versions provide structured version control, reducing risk and improving efficiency for a wide range of users:

  • Companies managing fleets – Safe, gradual updates across machines with tracked version history and easy rollbacks.
  • Developers iterating frequently – Enables fast prototyping while maintaining stability via A/B testing.
  • Collaborators & open-source users – Allows controlled updates without affecting production environments.

To see how this works in practice, let's look at RoboHaul, a company using fragment versions to safely deploy updates across a fleet of robots.

Real-world example: Optimizing RoboHaul's fleet

RoboHaul, a logistics automation company, operates a fleet of 200 heavy-duty transport robots in warehouses across the country. Their lead engineer, Alex, needs a structured way to introduce updates without disrupting operations. He uses fragment versions and tags to manage updates:

A diagram illustrating a real-world example of how RoboHaul, a logistics automation company, utilizes fragment versions and tagging to manage updates across their fleet of 200 transport robots. The diagram depicts the process of assigning 'stable' and 'canary' tags to different fragment versions, testing updates on a subset of machines, and rolling out stable versions to the entire fleet, ensuring controlled and safe deployment of configuration changes.
  1. All machines use the latest fragment – By default, all 200 robots are assigned to the latest version of the navigation fragment.
  2. Preparing for a test – Alex wants to test new changes while keeping most machines stable.
  3. Setting up version tags – He tags the current fragment version as stable and also assigns canary to the same version. Then, he configures 195 machines to use stable and 5 machines to use canary.
  4. Creating a new version – Alex makes updates to the navigation fragment, creating a new version.
  5. Testing with canary – Once he feels the new version is ready to test, he moves the canary tag to this updated fragment version. The 5 canary machines now receive the latest changes for testing.
  6. Validation and full rollout – If the new version performs well, Alex moves the stable tag to the same version, updating the remaining 195 machines.
  7. Rollback if needed – If issues arise at any stage, Alex can move canary or stable back to the previous version, instantly reverting affected machines to a working state.

This structured approach ensures smooth, low-risk updates, allowing RoboHaul to test and deploy changes with confidence.

Smarter updates, greater reliability

Fragment versions provide structured version control, helping teams manage updates efficiently, minimize risk, and keep their machine configurations organized. Whether rolling out improvements to a single machine or a global fleet, this feature ensures a smooth and controlled process.

Start using fragment versions today and take the guesswork out of managing configurations at scale.

twitter iconfacebook iconlinkedin iconreddit icon

Find us at our next event

Mar 25, 2025
Mar 25, 2025
,
07:30 - 09:30 PM EST

NYC AI Users March 2025 MeetUp

In Person
1900 Broadway Floor 6 New York, NY
Join us at the Viam office for March tech talks and social, featuring Sudheer Gaddipati on how Machine Learning and LLMs complement each other, and Xavier Huang on how to effectively increase the accuracy of Gen AI's response. No technical background required—just curiosity. Free drinks, food, and great conversations.
Sign Up
Apr 3, 2025
Apr 3, 2025
,

DotJS

In Person
Paris, France
JavaScript developers are invited to join Viam in Paris to learn how to overcome challenges of working with code in the physical world.
Join Us
Apr 17, 2025
Apr 17, 2025
,
06:30 - 09:30 PM EST

NY Hardware April 2025 MeetUp

In Person
1900 Broadway Floor 6 New York, NY
Join us at the Viam office for the next NY Hardware Meetup! Viam Product Manager, Esha Maharishi, will be doing a live demo, and there will be plenty of time to connect with fellow hardware enthusiasts. Whether you're deep in the industry or just curious, come by for great conversations, hands-on tech, and free food and drinks!
Sign Up