Skip to content
An open source mobile agent for achieving SSI
C# Other
  1. C# 99.0%
  2. Other 1.0%
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github docs(update): Restructured docs added licence Apr 6, 2019
docs feat(refactor): refactor poc to osma (#4) Apr 29, 2019
scripts ci(setup): add app center insights and crash reporting May 22, 2019
test/Osma.Mobile.App.Tests feat(refactor): refactor poc to osma (#4) Apr 29, 2019
.gitattributes feat(refactor): refactor poc to osma (#4) Apr 29, 2019
.gitignore fix(libraries): added missing c-libraries May 6, 2019 feat(discovery): protocol discovery and trust ping support May 22, 2019
LICENSE docs(update): Restructured docs added licence Apr 6, 2019 feat(dependencies): updated agent framework version Jun 28, 2019

Project Osma

This repository is the home of Project Osma, an open source mobile agent for achieving self sovereign identity (SSI).

The primary goals of this project is to provide a common project to progress emerging community standards around mobile agents.

This repository contains a cross platform mobile app (iOS/Android) built using the Xamarin framework in C#. More specifically the two platform specific projects share a common UI through the use of Xamarin.Forms.



SSI is a term coined by Christoper Allen in 2016 with this article, it describes a new paradigm of digital identity. Its premise rests on 10 principles described in the article. In short SSI is about giving a user digital self sovereignty by inverting current approaches to digital identity. Under SSI users are given access and control of their own data and a means in which to use it in a capacity that enables and protects their digital selves.


Agents are essentially software processes that act on behalf of a user and facilitate the usage of their digital identity.


There are several key standards in the SSI space but arguably the most important are that of the DID (as well as other associated specs) and the Verifiable Credentials specs.

Project Affiliation


This mobile apps primary dependency is upon the open source project AgentFramework. This framework provides the baseline components for realising agents, Osma extends this framework in the context of a mobile app to realise a mobile agent.


Much of the emerging standards Osma and AgentFramework implement are born out of the Indy-Agent community.

Getting started

  1. Clone it locally,
  2. Run git lfs pull in order to pull the dependent native libraries with LFS. If you do not have this installed please refer to here
  3. Open osma-mobile-app.sln and build!

For more information on the development practises featured in this repository please refer to here

A Quick Demo

The following demo describes how you can connect with another agent.

  1. Clone AgentFramework
  2. From the /scripts folder in the repository run ./ - Note this shell script relys on ngrok to run the agents on a publically accessable addresses. Please ensure that your ngrok version is 2.3.28 or higher. You may get an error if the port stated is protected or in use - curl: (7) Failed to connect to localhost port : Connection refused. If this happens simply scan for an open port and change the port number for web_addr in /scripts/web-agents-ngrok-config.yaml and also on line number 6 of /scripts/ For Macbook open network utility to scan ports.
  3. Note the public URL's that are outputed by the script with the following text Starting Web Agents with public urls http://... http://...
  4. Browse to one of the urls noted above.
  5. In the rendered UI, click Connections->Create Invitation, a QR code should be displayed.
  6. In the osma mobile app, deployed to a mobile phone, click the connect button in the top right corner of the connections tab.
  7. Scan the QR code rendered in the browser with the osma mobile app and click connect in the rendered UI.
  8. Congrats, you should now be redirected in the mobile app back to the connections page showing a new connection with the AgentFramework web agent!
You can’t perform that action at this time.