Different Skill settings across devices

Hey all, following some discussions on Github, I wanted to get broader input on how Skill settings across multiple devices might work in the future.

Skill settings are currently universal across all devices. So you’ve likely seen that in your Skill settings all your registered devices pull the same settings down. This is beneficial for many use cases because you set your preferences once and the same thing is synced across all devices. Eg if I have a premium music service I most likely want that available on all my devices without having to authorize each device one by one.

There is a small caveat to this. To be more accurate, all Skills with the same settings definition are synced together. If you modify a Skills settings definition you’ll find that it shows up as a separate tab under the settings block, but there is no clean way to do this at the moment. It looks like so:

There are a number of cases where it may be beneficial or even necessary for Skills to have different settings on different devices. There are two main cases I can see:

  1. As a Skill developer, I want each installed instance of my Skill to have unique settings
    eg an inter-device VOIP Skill may require unique credentials for each device. The developer of such a Skill should be able to set a flag to enforce that each device gets its own tab under that settings block

  2. As a User, I want to provide different settings for specific Skills on a specific device
    eg by default use these Netflix credentials, but in the kids room use these instead

Do they seem to cover all the main use cases?

Particularly as an end-user, would you prefer to have:

  • all your settings to be synced universally
  • a default settings with the ability to modify the settings for individual devices
  • settings to be grouped based on their “placement” (eg Kitchen, bedreem etc - this is an existing optional field that is in your device settings)
  • all devices to have their own settings
  • something else??

Be great to hear your thoughts on this, or if you have completely different ideas on how this could work.

1 Like

Having the ability for different skill settings across devices would indeed be a big plus. The kids might want to wake up to a different alarm tune than us, and an alarm in the kitchen does not need a fade in for example.
Default settings with the ability to modify the settings for individual devices seems the best of both worlds to me.

1 Like

I think I’d like a menu that lets me select which settings to sync TO a particular device (c.f. your browser’s sync thing, or a cloud service’s integration with your OS, where you have tickboxes for the various things it can sync.)

This could be cumbersome, with a long enough list of installed/configured skills, but if it lived in its own UI tab, a checklist is a checklist.

Bonus if those settings could be saved as part of some kind of device profile, so that, if I set up a new Mycroft device in my dining room, I can tell it to configure itself exactly like my last three “on a table in a room” devices.


I am not entirely sure that I understand the settings mechanism and its scope right.

  • In principle, each user should be able to change his/her own settings to personalize using Mycroft. Changes can be applied per device, for device groups, or all devices.
  • An “administrator” (parents, or in B2B also service providers) may need to change settings in the same way for the users. These changes may require overriding the settings of a user. It also requires a role-based access to settings.
  • A developer may need to change settings in the same way for the users and admins (e.g. if an endpoint changes?). These changes may require overriding the settings of a user or admin. This case may be solved by delivering a full skill update.

In my planned use cases, I have one Mycroft that many users can interact with via the Andoid App. Those users would like to modify aspects of the skill. On the other hand, I (administrator) need to configure the skill for my users or user groups because they can’t do some things themselves. And as a developer I may need to continuously adjust some settings (in the background) to improve the user experience.

Something that would be beneficial in this context is a change history for settings. That increases transparency if multiple people change settings.

1 Like

Nice ideas @ChanceNCounter - I think we’ll need to do some UX design around this and test some options.

@ScienceGuy - some really interesting use cases there that we should definitely be considering.
A note on the developer dotpoint. Currently any Skill that updates their settings definition will update the settings for all users of that Skill. However this actually causes some issues as we currently treat the whole settings as one block so even if you only add a new setting, the rest of the users settings will be blank with the update. This really needs to change so that we are updating individual settings, or pulling compatible settings forward with any changes.

I’ve also been chatting with Jarbas and wanted to document a further use case. There may be some Skills that have global settings and per device settings. Eg a VOIP Skill may be better having a global ring tone, but per device credentials. Alternatively this could be achieved by being able to change a single setting value (ring tone) and having the option to apply this to all devices.

In this case, do we give the Skill developer control of how that setting is used, or the user?