Skip to content

Cookie preferences

We use cookies for our own analytics, to see how our campaigns perform and, if you allow it, to load content from other services such as the Google site search. We never sell your data. Necessary cookies keep the site working and cannot be switched off. See our Cookie Policy for details and our Privacy Policy for how we handle personal data.

Security, load balancing and remembering your cookie choice.

Show us which pages people read, how they find the site and where they get stuck, so we can improve it (Google Analytics, Microsoft Clarity).

Show us which of our ad campaigns bring visitors to the site and remember the campaign or partner link you arrived from (Google Ads, LinkedIn, Meta, partner program). We do not use these cookies to build advertising profiles.

Load the site search from Google when you use it. Google sets its own cookies and shows ads in the search results.

© 2026 The ThingsBoard Authors
22.5k Try for free

ThingsBoard Cloud

Choose your data region

Your data stays in the region you choose, for residency and compliance. No credit card required.

Rather run it yourself? Install on your own servers

Import an existing solution

You can bring entities that you made in the ThingsBoard UI under the CLI. Pull them into a solution. Then change them with your agent and push them back. Push updates the original entities. It does not make copies.

  • ThingsBoard CLI and a working profile for the server that has the entities. See Getting Started.
  • A project folder. If you do not have one, run tb init in an empty folder.

In this guide, the entities monitor HVAC units, and the solution is hvac.

Select one option. Both options write the entity files to solutions/hvac/.

  1. Start the agent in the project folder.

  2. Send this prompt:

    Pull my HVAC solution from ThingsBoard into a solution named hvac.
  3. Check the list. The agent finds the matching entities and adds the related ones: profiles, owner customers, entity groups, roles, and user groups. Then it asks Is this the right set?

  4. Select Pull all. To change the list, select Adjust the matches and name the entities to add or remove.

The agent pulls the entities into solutions/hvac/.

The picker shows one section for each entity type. Each section lists the entity groups first, then the entities.

Key What it does
Up, Down Move between rows.
Right, Left Open or close a section.
Space Select or clear the row.
m On a group row: select the group and all its members.
a Select all rows that match the search. Press again to clear them.
c Clear all selections.
/ Go to the search field.
Enter Pull the selected entities.
q Quit without a pull.

Type in the search field to filter the rows by name. Two filters are available:

  • owner:<name>: Show only rows of this owner and its sub-customers, like owner:Acme. Use quotes for names with spaces, like owner:"Water Plant". Separate hierarchy levels with >, like owner:Acme>East. Add a word after the filter to also match the name, like owner:Acme HVAC.
  • server:<query>: Search on the server. Use it when a section has too many entities to list.

To add one entity, pull it by its ID. Copy the ID from the entity details in ThingsBoard:

Terminal window
tb pull device <uuid> --solution hvac

The types are device, device-profile, asset, asset-profile, dashboard, customer, user, role, entity-group, and rule-chain. You can give several IDs in one command.

The pull also brings the entities that are connected by relations. It does not bring the device profile, the owner customer, or the groups of the entity. Pull these too, or ask the agent. The agent finds them for you.

After a partial pull, tb pull and tb validate show a warning for each missing entity, like the device profile. The validation still passes. Pull the missing entities before you push the solution to a new server.

Options for every pull:

  • --dry-run: Show the files that the pull will write. No files change.
  • --with-credentials: Also pull the device credentials. They are off by default.
  • --force: Overwrite files that have uncommitted git changes.

Without --with-credentials, the files have no device credentials. When you push the solution to a new server, each device gets a new random access token. Update the token on the physical devices.

  1. Describe the change to the agent:

    In hvac, add an alarm when the supply air temperature goes above 30 °C.
  2. Answer the questions. The agent can ask Refresh from instance? Select the Yes option if someone changed the entities in the UI after your pull.

  3. Approve the design. For entities made in the UI, the agent first writes a design from them and asks Does it look right before I apply your change?

  4. Approve the plan. The agent asks Does this plan look right? Select Approve and apply.

  5. Deploy. The agent asks Deploy to ThingsBoard and stream live demo data for 5 minutes? Select Deploy only.

The push updates the original entities in ThingsBoard. It does not create copies.