Hi there @Sodapop
Interesting scenario. Are you able to provide any more details about it, such as;
How much users / concurrent users is the scenario expected to support? This has implications for the sizing, proxying and redundancy of both the user agent layer of this n-layer architecture, as well as for the Mycroft instance, and the Management Server.
What is the geographic distance or network topology between the user agent (browser) and the Mycroft Server? This has implications for elements like the RTT time of a cloud-based STT request, and for authentication using the Management Server.
In terms of what is currently possible:
Browser or web-based Mycroft
AFAIK there is no browser or web-based client for Mycroft. Like many things with Mycroft, it is possible to do, but would require some work. At the moment the mycroft-core instance is architected to expect input from only one user, so you would need to find a way for multiple users to access a mycroft-core instance from a browser, possibly by running multiple mycroft-core backends - but that has limits of scalability.
Similarly, the use of Skills is tied to a single, authenticated user. The mycroft-core instance is paired with an account on the Management Server (home.mycroft.ai). You would need some form of authentication mechanism to pair the web user with the mycroft-core instance. The mycroft-core instance also gathers Skill Settings which have a 1:1 cardinality with each user - another reason that the web user would need to be authenticated.
thank you for your quick reply, the hints and questions!
Answer 1: Later there will be up to 40 employees (hotline) and approx. annother 400 concurrent connections (customers).
Answer 2: Webserver and MyCroft Server will be separated in in different firewall perimeter, the webserver will be avialable from the internet and intranet, the MyCroft server will be avialble from the managment systems via a performant MPLS construct and the webserver only. The management servers are located all over the world, but do not have high packet runtimes (TTL) due to high bandwidth in the company WAN.
Question A: As I understood, there is the possibilty to host a local “MyCroft Management Server” instead of connectting to home.mycroft.ai for authentication. Am I right?
Question B: Is it possible to inherit skills to a set of user/groups? For example customers will have a limited skillset and employees have the full skill set.
Mycroft is not currently set up to handle this unfortunately. It’s something that would be possible for us to develop, but it would need to be part of an enterprise-type agreement.
Again, we don’t have this sort of distributed architecture currently. The microservices hosts which make up home.mycroft.ai - the “Management Servers” in this scenario - are all on the same local network within our data centre region - we don’t have geographic resilience currently.
Even with MPLS I suspect this architecture would add significant RTT delays to any sort of cloud-based request, like STT. Even with some sort of QoS implementation, it’s unlikely to give you the performance that would be required in an enterprise environment - because you can do QoS on your own WAN, but can’t implement it once it’s in the public internet.
This might be workable if;
The STT was hosted internally - using something like DeepSpeech
Some sort of caching proxy was set up for the external requests
The biggest issue though with this architecture is that Mycroft isn’t currently architected for multiple concurrent users.
Not yet. We have started some discussions around what a host-it-yourself solution might look like for home.mycroft.ai, which you can read more about here, but it’s not under active development yet. This is also for a personal version of home.mycroft.ai - it’s unlikely to scale to the user base required for your scenario.
What we’ve done in the past though for corporate / enterprise clients is essentially clone home.mycroft.ai for that organisation - ie “home.mycroft.ai in a box” - so it’s possible, but would require significant gap development.
I think what you’re asking here is like object-oriented inheritance - for example “user A is of Class A, inherit properties for user A from Class A”. This is not currently possible - the properties have a 1:1 cardinality per-user. At the moment we have no groups functionality within Mycroft - for example AD group mappings or integration with *nix groups are not currently possible.
Knowing the internal data structure of home.mycroft.ai, and the planned entity relationship structure, this will be possible in the future, but is not currently possible.
Hope this helps, and please do let me know if you have other questions.
thank you for responding to my questions and reflections. Here are my comments:
Explanation answer 1: I’m guessing that requirement isn’t on your roadmap?
Explanation answer 2: I understand, thank you for the new explanation!
Answer 1: Ok, I prefer standards, so an individual development is not so important for me. I will have a look at your standard way!
Answer 2:I understand and of course I can’t wait to find the perfect solution so, yet thank you for your support.
I find your business model, especially the value proposition towards Alexa, etc., very exciting and thanks to you the support is overwhelmingly good. Even if I don’t come to my solution yet, I will gain some experience with MyCroft and think about investing some money in your company. Merry Christmas to you. Let’s stay in touch!