Open KERI Infrastructure - Jay Alexander Elliot

KERICONF26 Day 1 · 42:50

0:00 Jay Alexander Elliot | Open KERI Infrastructure | KERI Conference 2026

0:03 This version of the Locksmith app is

0:08 an open-source stripped down

0:09 version of what healthKERI has. So, if

0:11 you guys want to follow along, I have a

0:13 open source repo. It's

0:17 https://github.com/jaelliot/locksmith-demo

0:24 and you can follow along. There's some

0:25 instructions in the readme.

0:37 Locksmith is the desktop wallet for

0:41 KERI. This talk is about the

0:41 controller side of the system where the

0:42 keys stay local. Users manage their

0:46 identifiers and control does not

0:48 disappear into a single provider stack.

0:53 users need a

0:56 wallet surface where the keys in

0:59 control.

1:03 The trust

1:05 root lives at the edge and non-hosted

1:07 services.

1:12 In KERI the controller is the

1:14 part that actually controls the AID.

1:17 That means that it manages the keys in

1:20 the key event life cycle.

1:24 If that user-facing wallet gets absorbed

1:26 into one vertically integrated service

1:27 stack, the system may still look open on

1:30 paper, but it becomes less open in

1:31 practice. That's why the wallet boundary

1:33 matters is where the control actually

1:35 lives.

1:37 Many services describe themselves as

1:40 open, but in practice, the wallet, the

1:43 provider, and the integration path are

1:46 all tied to the same stack. When that

1:48 happens, builder choice starts to

1:50 disappear for KERI to remain genuinely

1:52 open. The wallet must remain separate,

1:55 and that separation must be real and

1:57 verifiable. So, with that in mind,

1:59 here's where Locksmith sits in the

2:01 stack.

2:04 Locksmith sets the controller side

2:07 wallet layer. Witnesses stay outside of

2:09 it. The watchers stay outside of it. The

2:12 connectors… the providers connect to

2:14 it but they do not become the wallet.

2:16 And by "providers" I mean the real

2:18 external services, witness and watcher

2:21 operators, credential services, workflow

2:23 services, and other KERI-adjacent

2:25 integrations.

2:35 The first thing that Locksmith proves

2:37 is the local state. It is a real local

2:40 identity vault. It supports multiple

2:43 vaults and local first storage and

2:46 controller-owned state on disk. That

2:48 matters because portability could come

2:50 later. The first proof is local control.

2:52 – What are you defining as portability here?

2:53 You could deploy it to any

2:58 location, I suppose?

3:00 – Okay. Because you say state ownership

3:02 for portability. I imagine that

3:03 means the key state and everything

3:05 necessary for like interacting with the

3:07 service provider.

3:09 Is that what you mean by state

3:10 ownership?

3:11 Yeah.

3:16 The identifier

3:24 credentials and real user workloads

3:26 is where the wallet becomes real for the

3:28 user. Locksmith is the desktop surface

3:31 where someone can create and manage

3:33 identifiers, track credential state, work

3:35 with KERI operations through a usable

3:39 interface. That is what the wallet

3:42 layers for turning core KERI

3:44 behavior into something a person could

3:46 actually use.

3:52 This is where the

3:53 architecture stays open. Locksmith

3:55 has a real plug-in boundary and code,

3:57 providers sit behind that boundary

3:59 rather than replace it. That means that

4:01 the wallet can integrate with outside

4:04 services without collapsing into

4:05 infrastructure. What is real today is

4:07 the boundary itself. What is in

4:09 progress is the broader ecosystem around

4:11 it. More provider side integrations

4:14 and the KERI Foundation's work to carry

4:16 that pattern through more

4:18 completely. So the architecture for now

4:21 is real, and the full provider

4:24 story is currently being built.

4:27 This is our architecture flow. The

4:30 user signs and stores locally in the

4:33 Locksmith vault. From there, the wallet

4:34 can communicate with provider side

4:36 services via the plug-in boundary.

4:40 Separately, events go out to witnesses

4:42 and watchers and receipts come back.

4:44 Verifiers stay out of that path, which

4:47 is the point. Verification

4:50 stays available without turning the

4:53 whole system into one provider-owned stack.

4:57 if somebody wants implementation detail,

5:00 I could go there, at the highest

5:02 level that is the overall shape.

5:08 Let me draw a clean line between what is

5:12 real now, what is next. What is real

5:14 now is the desktop KERI identity

5:16 vault, local vault and the identifier

5:19 workflows, a plug-in boundary encode and

5:21 repeatable setup reset and launch

5:23 evidence. What is next is the broader

5:26 foundation plug-in follow through mobile

5:28 and web portability and the browser

5:31 adjacent work around that…

5:37 I wanted the room to

5:40 leave knowing exactly what the demo

5:42 proof say and what it's still in

5:43 progress.

5:46 And then for getting started with the…

5:48 [Can we ask question now or at the end?]

5:50 [At the end]

5:57 And then for getting started with

5:58 the code I have a demo repo

6:02 that I've forked and I have commands

6:05 for Unix, it'll work on Mac OS or Linux and

6:11 for Windows; that script is

6:14 just a PowerShell script you could

6:15 execute.

6:18 Demo bridge.

6:22 The Locksmith gives KERI a

6:26 real control side wallet surface. I

6:30 wanted to show the a smallest life path

6:32 of this setup can honestly support.

6:34 I'm not going to try to turn this into a

6:36 full network demo is the…

6:39 The work that we had to do to remove the

6:42 the healthKERI code kind of

6:45 made that part still a work in

6:47 progress.

6:54 So, in order to install this

7:00 just run the script where it'll

7:03 detect if something's

7:04 ready there. If it is, it'll get

7:06 rid of it and then it'll set up the

7:09 environment and then I'll deploy it.

7:32 – I came in late. This Locksmith

7:35 is the wallet in KERI?

7:37 – Yes.

7:39 – What's the relation between

7:41 Locksmith and KERIpy 1 that was in

7:43 the session description? – The KERIpy 1

7:47 is that this is the KERI

7:50 Py one's just my fork or KERIPy is

7:54 Wait,

7:58 the other one's my fork

9:04 Sorry. For whatever reason,

9:10 I selected the wrong command.

9:16 Python scripts demo day.

9:21 Come on, please work.

9:28 Sorry, this is taking a while.

9:39 And then we could initialize

9:42 a vault and

9:43 a lot of this stuff is still work in

9:46 progress. A lot of the functionality

9:49 is

9:50 not there because it was stripped out

9:53 from the healthKERI wallet.

9:57 When we have the full

10:04 functionality built out, it'll have

10:07 largely at parity with the

10:10 healthKERI wallet

10:12 and we could create our own identifiers.

10:16 We could set the cryptographic

10:17 strength. I don't have a remote

10:19 identifier that I could connect to right now.

10:23 Same thing for a group identifier.

10:25 Issue a credential.

10:28 No schemas to ..,

10:32 I don't have anything for that

10:33 yet.

10:35 Add a schema.

10:37 And set this. I could change

10:43 the settings for the cryptographic

10:46 Key strength settings or other stuff

10:48 for the cryptography. But this is

10:52 the open source version of the code

10:54 that you guys can go and explore.

10:57 And sorry, I'm just not good at

10:59 public speaking. That's all I've

11:02 got. What questions do you guys

11:05 have?

11:05 Yeah. So essentially is what you've

11:08 showed us the KERI Foundation using the

11:12 plug-in API with Locksmith to run

11:14 against their own infrastructure.

11:16 Yes.

11:17 In this demo.

11:18 That's not in this demo. Okay.

11:26 So this is the open- source wallet that

11:28 we got originally from healthKERI. We've

11:29 debranded it. This is available now for

11:32 anybody to go and fork this, download

11:34 it, use it, build out more if you want

11:36 other features if you want. The plugin

11:38 itself is not shown here.

11:41 You'll see that in my demo, but you and

11:43 I are competing with each other. So now

11:44 we're not

11:45 now we're not gonna now you're not going

11:47 to see it ever. Ah,

11:54 thanks man. Hey Joseph, does so does this sorry this is a dumb

11:58 question but does this wallet here have

12:00 the KEL on in this whatever device is

12:05 installing the wallet does is the KEL

12:06 also there

12:08 you're local

12:09 yeah local

12:09 yeah locally

12:10 so this creates the manages the keys and

12:13 the KEL

12:14 in that environment

12:15 and you publish the KEL to a witness

12:17 yes to one or more witnesses right

12:20 so you would configure the witness here

12:22 Yeah, you'll see that in my demo if you

12:24 come to my demo.

12:25 When did you demo?

12:27 3:15.

12:28 It's Yeah, big

12:32 – And then also the

12:35 TEL stuff is that ..?

12:36 No, that's ACDC related. We're not going

12:38 to cover that in this.

12:40 Would it be on his local ..,

12:44 That's a good question. I don't know

12:45 where theoretically, I guess probably,

12:48 but I don't know that's a

12:49 little bit outside of scope of

12:52 dealt with yet.

12:53 – I know they defined the TEL this

12:54 morning, but I forgot what it stands

12:56 for.

12:56 [TEL = ] Transaction event log

12:57 - And that's for the recipient to detect

13:00 That's for the holder to detect if their

13:02 credentials are being used in the non

13:05 Not necessarily, TELs are

13:08 specifically related to a different

13:09 construct in the KERI ecosystem

13:13 called ACDC, which is more about

13:15 credential issuing.

13:17 Yeah. So the benefit of the TEL you're

13:20 publishing the transaction event so that

13:21 you can

13:22 I'm going to get anchored to the key

13:24 event log

13:25 I can't keep track of the state

13:26 I think a good way is the KEL is the

13:30 state of your keys and the TEL is the

13:33 state of your credentials

13:36 Question what the state of

13:39 because they can be in multiple

13:40 different kind of states depending on

13:41 what the credential is ..,

13:44 – Like revocation status state Yeah. Yeah.

13:48 I would guess that in Phil's ACDC talk

13:50 tomorrow morning, he'll cover this

13:51 stuff.

13:52 Tells everybody

13:53 if he's doing one then. Yeah.

13:54 Yeah. He's talking about ACDC tomorrow

13:56 morning. So if you have more questions

13:57 about that, he might actually have

14:00 production use cases that you could

14:02 guess.

14:05 So about the repos again.

14:08 So the Locksmith demo one is this one.

14:11 And what's in the Locksmith one? That

14:13 just that's the full healthKERI

14:15 that's the

14:16 healthKERI is proprietary.

14:18 Yeah,

14:19 we had to strip out all their fun

14:21 features when they donated to us. But

14:24 we still have like all the core KERI

14:25 stuff like identify creation,

14:29 There's support for like witnesses

14:32 and watchers but in order to connect to

14:34 witnesses and watchers you need to

14:36 connect to a provider such as healthKERI

14:39 through a plugin. So the KERI

14:41 Foundation is going to create

14:42 our own plugin, where you can

14:44 connect to our infrastructure to get

14:46 witnesses and watchers and then in

14:49 theory you could also have, in the same

14:51 UI, you can see KERI Foundations plugin

14:53 and like healtKERI's plugin or any

14:55 other provider who wants to create

14:56 witnesses and watchers.

14:58 [It can] provide infrastructure for you to

15:01 So basically what you want is creating

15:05 a vault

15:08 Encryption storage right Yeah, it's just

15:10 a place to store keys.

15:11 Yeah, but it is like for per wallet

15:13 you have multiple wallets. What is the

15:14 reason for it?

15:16 Just in case you wanted separation for

15:18 some reason.

15:18 It's like one password and bit warden.

15:20 Most of these password managers have the

15:22 similar idea of vaults where you can say

15:23 this is my work vault. This is my

15:25 personal vault.

15:26 Okay.

15:26 It's just applying the same belong to a

15:28 specific vault.

15:29 Yeah.

15:30 So you can't move them across.

15:33 Yeah. That's I don't know.

15:35 I don't think you can move them across yet.

15:36 Theoretically, I guess we could

15:37 eventually I can understand

15:40 I have them.

15:41 Yeah.

15:41 But here I'm trying to understand

15:43 because they're very tightly coupled

15:44 with ID, right? The credentials are very

15:47 tightly coupled with ID.

15:48 And when you have walls,

15:50 I mean how would you move ..,

15:52 you can't move the credentials across

15:53 because different ID

16:00 I would guess that you could probably ..,

16:02 like if you created two vaults I have so

16:04 I don't know. I'm guessing if you

16:05 created like a local identifier in one

16:07 vault, you could OOBI with it from

16:09 another vault as a remote identifier so

16:11 you could watch your own vaults. But I

16:12 don't know why you want to do that.

16:14 The I was looking at the KERI

16:16 Foundation GitHub.

16:18 There's 16 repositories and it looks

16:20 like there's three different wallet

16:21 implementations.

16:22 There's the Fort Web

16:25 the

16:26 No, there's the I think those are just

16:28 different deployment w targets.

16:30 There's one for iOS, there's a web app,

16:32 and one for Android. Yeah.

16:35 Okay. But there's there's the fort

16:37 for Android and fort for iOS and then

16:39 there's the key the Locksmith. Are those

16:43 how are those related?

16:45 The Locksmith is just what we take

16:48 and deploy to the different targets.

16:51 Locksmith is desktop version.

16:53 Okay.

16:54 Well, the Fort Web and Locksmith are

16:58 they're they're they're both desktop

16:59 versions. They're just different

17:00 implementations of the desktop version.

17:03 Essentially, all of them are a wallet,

17:05 right? They're all the same. They're all

17:06 wallet. You make identifiers. You can

17:08 UI.

17:08 So, my question is, why would you pick

17:09 one versus the other?

17:10 Whatever platform you want to use it on.

17:12 Are

17:12 you trying to deploy to a desktop or to

17:13 an iOS?

17:14 But Locksmith is web.

17:16 No, lockmith is just desktop.

17:18 It's

17:18 Oh, this is native desktop.

17:19 Yeah, it's a PIDE 6 applic. Okay, that

17:22 makes sense. Are they coming from the

17:24 same?

17:25 It's multiplatform source bundle. It's

17:28 it's all it the web or yeah they

17:32 they all are getting deploy the same

17:34 stuff the same code is getting deployed

17:36 to all those all those different

17:37 platforms. So for web is just the

17:40 web SaaS

17:44 app of Fort

17:47 also have multiple local identifiers

17:48 right in a single one have multiple

17:51 local

17:52 yes

17:53 that's just talking about

17:56 issuing credential to many identifiers

17:58 some Josh was talking about

18:02 Evan be talking more about the web wall

18:04 tomorrow

18:06 or whatever you want.

18:08 Wow.

18:10 People have other things they want to

18:11 hear about

18:11 or whatever suggestions.

18:13 Basically, he's just going to stand up

18:15 there and let you ask him anything.

18:18 Ask me anything session with that.

18:20 Cool.

18:22 I think that's kind of it.

18:26 Do you guys have any other questions or

18:28 I guess we're kind of still kind of

18:30 pretty early

18:32 tomorrow.

18:40 Yeah, I guess I mean the question I have

18:41 that might be answered tomorrow probably

18:42 in your session.

18:44 Is it clear, based on

18:47 what code that's open source what a

18:50 provider has to do in order to do their

18:52 own plug-in implementation and what they

18:53 have to sort of implement on the

18:55 infrastructure side

18:58 for the plugin kind of. Yeah.

18:59 Yeah. Because I want to do I want I'm

19:01 going to do a blog about it and sort of

19:03 show people how to do it.

19:04 I can make my session how to make your

19:05 own plug-in demo.

19:06 Yeah, that'd be great.

19:08 Yeah, it's pretty cool. A good idea

19:10 because I will definitely be doing it.

19:11 I want to help other people learn too.

19:13 I mean it's it's all there in the repo

19:14 so you could obviously learn how it's

19:17 built but

19:18 I don't think we haven't done

19:19 anything formally yet to describe how to

19:21 build a plugin.

19:22 Okay.

19:23 So that would be a good thing.

19:24 There is yeah healthKERI shipped like a

19:26 plug-in based flask. So they basically

19:27 like define the set of functions

19:29 you need to define in order to make your

19:31 own plugin.

19:32 Awesome. Yeah,

19:34 that's what I want to know.

19:37 Time to go through that sort of thing

19:38 tomorrow.

19:40 Was interesting.

19:41 There are other open source KERI

19:42 wallets besides the Fort and Locksmith one,

19:45 isn't there?

19:46 Yeah. From so I'll talk a little bit

19:48 about this in my session, but there's

19:49 heavyweight wallets and lightweight

19:51 wallets. Lightweight or Signify wallets.

19:53 This is a heavyweight wallet. It's the

19:54 most complete one in the world by far.

19:57 Well, health KERI's is

19:59 Yeah, healthKERI's is I guess

20:00 this is sort of a stripped down

20:02 slightest. So I guess health carries is

20:05 the most complete and then this is

20:06 stripped-down version of but it's

20:08 the furthest of all

20:09 but that's your session tomorrow not

20:11 your session today.

20:12 No I have two sessions today. One is

20:14 the last one is on the KERIA stuff

20:17 about lightweight wall. The first one is

20:19 going to be on the GLEIF Root of Trust.

20:24 Cool. Wow.

20:24 Well thank you. Do you guys have any

20:27 other questions?

20:33 – Who wants to speedrun building a

20:34 provider

20:35 Right now?

20:36 Let's do it.

20:36 Evan can coach you through it.

20:39 All right.

20:40 I just copy our

20:48 Done; 40 minutes? No.

20:51 Sorry that this wasn't very long.

20:54 Good.

20:56 See,

20:59 We got a little time, Jay, you can

21:05 launch the iOS thing if you want.

21:13 Sure.

21:14 Just to show it.

21:16 Yep. So, this is the iOS app.

21:20 Suppose I should

21:24 So yeah, it's functionally speaking

21:30 just it's the same code just it's

21:35 deployed to a the mobile apps

21:38 are just wrappers that will run the

21:41 Locksmith code

21:43 and yeah it's just this functionally

21:46 the same experience on any of the

21:50 devices and that's right I have not

21:53 fixed this yet.

21:54 So, I'm noticing that this looks very

21:56 similar to the flat UI. It's And I know

21:59 it's Pyite 6.

22:01 Mhm.

22:02 Yeah. Well, healthKERI basically just

22:05 translated the flat app into Pyite 6.

22:07 Okay. So, the flat app is,

22:11 right? I just wondered if it was I guess

22:13 did they lift the CSS styling when they

22:16 This is CS. Yeah, I just I left it as

22:18 close as it to what it was.

22:22 Okay.

22:39 Good jokes.

22:40 Nice work.

22:41 Thank you.