 All right, so I guess we can get started because it's a 15 minutes on the dot So welcome everybody to the first demonstration at the hyperledger global forum here in Dublin and welcome everybody Who's online wherever you are in the world? So my name is Akif My company's petri dish development. I work as a consultant and I'm going to be demonstrating the Aries acopi controllers using different web stacks So before we talk about what controllers are let's quickly talk about acopi Or Aries cloud agent Python since acopi is the basis for what controllers are built on So acopi is an Aries implementation written in Python It's primary use cases to enable cloud-based Verifiable credential solutions like enterprise web wallets and hence the name cloud agent Acopi implements Aries protocols for issuing holding and proving verifiable credentials And it enables the trust over IP model that you see here, and you'll see frequently So every component of this trust triangle or diamond is enabled by acopi So you can stand up acopi for issuing for verifying for publishing Schemas and credential definitions on onto ledgers So it has a wide support for a lot of use cases So acopi is meant to be consumed as a service Controllers are applications that function as the business logic The controller simply executes Aries protocols by calling arrest API exposed by acopi And the controller can also listen to async events Through webhooks. So on the right here, this is kind of like the rest response request response And then this would be webhooks So this is a really simple setup with a server-side framework such as node or Dotnet and the application UI would be built in the controller and it would simply be making requests to The acopi agent that ruts standalone So here's another setup with this single page application frameworks something like angular reactor view So this would typically require an additional microservice to handle webhook callbacks Because acopi can't directly call back to the browser. So you could have a setup like this It also supports multi-tenancy meaning that one acopi instance can securely manage multiple agents So we often refer to this as an agency where each controller would create a sub-wallet That's isolated from all the other tenants and then it would use a token a JWT to make secure requests to each of the tenants within the agency So I'm going to show you a quick demonstration of a few controllers that I built That use acopi in the background So some of you may be familiar with the Alice Faber ACME interaction So in this case Alice is a Graduate from Faber College and she wants to apply for a job at ACME Inc So Faber is going to issue Alice a degree credential And then ACME is going to ask Alice to present a proof of her graduation At a credit at college for employment and then using that information if ACME Approves then they can also issue an employee credential to Alice So this is the kind of setup that we have there are technically three different acopi Instances, but they're they're one Aries framework So Alice is going to be written in Angular Faber is written in .net and ACME is written with Node.js So it's So I'm just going to stand up the the demo here. So as you can see So each one of these these services is just making a simple request our REST API request To the agents running in the background So while this is standing up so in the background what's happening is Faber and ACME are going to create a public did they're going to register it onto this Local ledger that I have running and then Faber is also going to publish a schema and a credential definition for the degree Credential so that it can then issue that to Alice So here I have Alice stood up. I Have ACME stood up and I think Faber is ready to go So once again Acopi exposes a REST API so you can access this directly Through each of the agents, but let's go ahead and create a connection request for Alice to connect to so Faber is going to create a new invitation So all we're doing is we're making a call to acopi using the REST API and let's suppose that It exposes this invitation through some kind of QR code or something that Alice would connect to or even a link so Alice is going to accept that Connection and once it does it has a active connection to Faber Faber then has already published a schema for the degree and It's created a credential definition. So now I can go ahead and issue a credential so Alice it's already connected to We select our schema and credential definition and This is the attributes of the credential that it will issue to Alice so once we do that and We can see that Alice has been Issued a credential here So now Alice wants to apply for a job So now ACME is going to create an invitation for Alice to connect to so that she can prove her credentials So Alice is going to accept The invitation to ACME Okay, so it's done that and so now ACME is going to create a proof request So it's connected to Alice now it needs to have the credential definition ID and suppose that this is publicly available somewhere But we're just going to copy it from Faber and so here there's a number of different attributes it's requesting so ACME wants to know the name the date that the degree was issued what type of degree and then it can also request that you know Alice has to be over a certain age, but we're gonna Skip that one. It's a little bit challenging to do this with that with one hand. So Proof has been requested Alice has received that proof request and then hopefully if everything works in the background ACAPI verified the proof and ACME sees that it's been verified here So these controllers took less than a day to write each It's pretty fast to to write something like this and this just shows how easy like ACAPI is to Just stand up some kind of UI in front of it. So That's a That's the demo there if you'd like to learn more The QR code will take you to the ACAPI controllers repo We also have a discord chat if anybody's really interested in learning about areas cloud edge of Python And we have a really nice diverse community and active community in In this so yeah Any questions in terms of a UI not really but the rest Yeah, so that was business partner agent. Yeah, it's it's just a degree schema that Was published when we stand up the agent Yeah, so the schema and the cred def are published on a local ledger so I can I have it running and I can probably show you So if I go to the domain here And so you can see like that's the cred def that was created and then That's the schema that was created and that was that was published right now when I when I stood up the agent Yeah, I know I believe you need to have the ledger to at least publish schemas and cred defs Yeah, and there's another project called traction that Is is for creating a multi-tenant type of solution and I believe they have some UI as part of that But I think they're also using business partner agent as part of their UI. They're not so there's there's a number of different projects that People have built solutions around this so anyways the purpose of this was just to really showcase how easy it is if you want to build your own Your own application in the next demo actually right after this we're going to be showcasing The mobile wallet that we've been working on by fold and that's that should be an interesting one to look at too Yeah, that's right. I wrote this It was a fun project, yeah, I wrote this before I started with their team so yeah So basically I just have a number of services here So so for example like in the in the in the angular Application, I just have an agent service and all it's doing is it's making HTTP requests Now if I wanted to I could also receive web hooks through some other microservice that I would specify as an endpoint to Acupy and then I could use like web sockets to push information back to like to my application here the cool thing about using something like net or No, JS is that's kind of you can do that right out of the box. So it's a simpler Sort of architecture to set up But yeah, that's basically it. I'm just happy. I have these services that call acupy through through the rest API All right So yeah, I look forward to the the next presentation then