<![CDATA[Agentic Profile]]>https://www.agenticprofile.ai/https://www.agenticprofile.ai/favicon.pngAgentic Profilehttps://www.agenticprofile.ai/Ghost 5.88Fri, 13 Jun 2025 20:01:22 GMT60<![CDATA[Welcome Back Eliza! (And how A2A+DID breathes new life into an old friend)]]>https://www.agenticprofile.ai/2025/06/welcome-back-eliza/684c694853f944c4e7621831Fri, 13 Jun 2025 18:32:20 GMT

Most people know conversational AI from ChatGPT and the enormous strides generative AI has made in the last few years. Few know how far back AI researchers have been working on this challenge - since 1964!

Eliza is considered to be one of the first chatbots, developed from 1964 to 1967. The most famous Eliza script, DOCTOR, simulated a psychotherapist of the Rogerian school in which the therapist often reflects back the patient's words to the patient.

To celebrate Eliza's 61st birthday, and to provide a real world implementation of Agent-to-Agent (A2A) communication, I've added Eliza to the Agentic-Profile SDK and published the example services on AWS at https://example.p2pagentic.ai/

Experience Eliza as only another AI Agent could...

Since A2A is a machine-to-machine protocol (sorry humans!) you will need to put your software engineer hat on and install a Software Development Kit.

Here are the steps to start your Rogerian therapy session with Eliza:

  1. Make sure you have Git and Node installed on your computer

  2. Download the Agentic Profile SDK (which includes the A2A client libraries)

    git clone git@github.com:agentic-profile/agentic-profile-a2a.git
    cd agentic-profile-a2a
    
  3. Fetch dependent libraries...

    pnpm install
    
  4. Create a global Agentic Profile for yourself (so you can use Universal Authentication with Eliza)

    pnpm create-global-agentic-profile
    

    An Agentic Profile for you will be created on a public test server, and the information will be saved (including your private keys) to your local computer at ~/.agentic/iam/a2a-sdk-demo-user

  5. Connect to Eliza and solve all your (human) problems!

    pnpm cli -p did:web:example.p2pagentic.ai#eliza -i a2a-service-demo-user -u #connect
    

If you are wondering what all those parameters are...

  • -p <DID> specifies the peer agents decentralized id (DID)
  • -i <name> specifies the name of the local Agentic Profile to represent you (look in the ~/.agentic/iam/ folder for details)
  • -u <fragment id> is the (user) agent that represents you in the authentication and communication. This is the id of the agent in your Agentic Profile did.json file

How did it work?

Since the language Eliza was originally written in was SLIP which isn't supported by modern servers, I converted a contemporary Javascript one into a Typescript library with a few extra hooks for state management.

I then created an A2A agent using the Agentic Profile SDK, A2A service, and the new Typescript Eliza library:

import { Task } from "@agentic-profile/a2a-client/schema";
import { TaskContext, TaskYieldUpdate } from "@agentic-profile/a2a-service";
import { ElizaBot } from "@agentic-profile/eliza";

export async function* elizaAgent({
    task,
    userMessage
}: TaskContext): AsyncGenerator<TaskYieldUpdate, Task | void, unknown> {

    const userText = userMessage.parts.find(e=>e.type === "text")?.text;

    const eliza = new ElizaBot(false);
    const elizaState = task.metadata?.elizaState as any;
    if( elizaState )
        eliza.setState( elizaState );

    const text = userText ? eliza.transform( userText )!: eliza.getInitial()!;

    if( !task.metadata )
        task.metadata = {};
    task.metadata.elizaState = eliza.getState();

    yield {
        state: "completed",
        message: {
            role: "agent",
            parts: [
                {
                    type: "text",
                    text
                },
            ],
        },
    };
}

The sourcecode for the above is at https://github.com/agentic-profile/agentic-profile-a2a/blob/main/src/agents/eliza.ts

To make the Eliza agent available as a service, I used the Agentic Profile A2A Service library and Node Express. An abbreviated version of https://github.com/agentic-profile/agentic-profile-a2a/blob/main/src/app.ts is shown below:


import { A2AService, errorHandler } from "@agentic-profile/a2a-service";
import { createDidResolver } from "@agentic-profile/common";
import {
    app,
    asyncHandler,
    resolveAgentSession
} from "@agentic-profile/express-common";

...

import { elizaAgent } from "./agents/eliza.js";  

...

const didResolver = createDidResolver({ store });
const agentSessionResolver = async ( req: Request, res: Response ) => {
    return resolveAgentSession( req, res, store, didResolver );
}

...

//==== Example 2: Eliza agent with no authentication ====
const a2aService2 = new A2AService( elizaAgent, { taskStore: store } );
app.use("/agents/eliza", a2aService2.routes() );

...

//==== Example 4: Eliza agent with authentication ====
const serviceOptions = { agentSessionResolver, taskStore: store };
const a2aService4 = new A2AService( elizaAgent, serviceOptions );
app.use("/users/:uid/eliza", a2aService4.routes() );


By wrapping the Eliza agent in the Agentic Profile A2AService along with an agent session resolver, the Eliza agent fully supports:

  • Peer-to-peer agentic discovery: The Decentralized ID of the Eliza is globally unique and resolves to this server.
  • Agent server multi-tenancy: The Eliza agent can act of behalf of many different users, just like an email server can act on behalf of many different users.
  • Universal Authentication: Using public key cryptography within the W3C DID specification, any agent can securely authenticate with any other agent without the need for an authentication service like OAuth.

If you have any questions please connect with Mike Prince on LinkedIn!

]]>
<![CDATA[Matchwise is now using Google's A2A]]>Last month I published a Javascript/Typescript A2A SDK including client and service libraries. I'm a firm believer in dogfooding your own products, so last week I converted Matchwise to use the A2A libraries I have published.

A2A is a lower level protocol and doesn't support

]]>
https://www.agenticprofile.ai/2025/06/matchwise-is-now-using-googles-a2a/6847625953f944c4e76217ddTue, 10 Jun 2025 00:06:36 GMT

Last month I published a Javascript/Typescript A2A SDK including client and service libraries. I'm a firm believer in dogfooding your own products, so last week I converted Matchwise to use the A2A libraries I have published.

A2A is a lower level protocol and doesn't support multi-tenancy (the ability of one agent to represent many different users) so a little glue was required:

  • A2A sits below authentication, so I layered on top the Agentic Profile authentication library. This allowed the use of public key cryptography for universal authentication.
  • A2A is not multi-tenant. The client authenticates, but the server is just "the server". For many services, the server can represent any of thousands of users (e.g. an email system, or text messaging). To solve this problem I added an "envelope" (stored in the metadata) for each A2A Message that indicates which user an A2A message is intended for.
  • I revised the Agentic Profile schema to better align with A2A (e.g. message.content now supports Part[])

Overall, it was a fun conversion and allowed me to dig deep into how A2A works.

This also paves the way for me to create more demo agents in the Agentic Profile A2A SDK, which is the next step in opening up the Agentic Economy. My hope is agents can be quickly developed with the SDK and then added to the Matchwise (or any other) agent marketplace to provide individualized service. For example, if you don't like how well the Matchwise dating agent is working, you can up-level to a better performing one from the open market.

If you have any questions please connect with Mike Prince on LinkedIn.

Thanks!

]]>
<![CDATA[Presenting A2A + Agentic Profile at Google's Gemini Workshop]]>I had the good fortune to present my new A2A SDK and discuss the Agentic Economy at Friday's Gemini Workshop in Mountain View.

Thank you so much to Peter Danenberg, Jay Yao, and Justin Woo for hosting these workshops - these are some of my favorite gatherings in

]]>
https://www.agenticprofile.ai/2025/05/presenting-a2a-agentic-profile-at-googles-gemini-workshop/6834b51582b7c6a7c9bda424Mon, 26 May 2025 19:13:45 GMT

I had the good fortune to present my new A2A SDK and discuss the Agentic Economy at Friday's Gemini Workshop in Mountain View.

Thank you so much to Peter Danenberg, Jay Yao, and Justin Woo for hosting these workshops - these are some of my favorite gatherings in the bay area!

We are are the start of a sea change where AI agents will do more than just help us reason, they will transact business on our behalf. I'm calling this the Agentic Economy and the pieces are quickly falling into place to support this.

While Google's new A2A begins to open the door to the Agentic Economy, there is a critical gap that needs to be filled: how to establish trust between agents from different parties.

I have been using W3C DID documents and IETF JSON Web Tokens within Matchwise.AI to establish trust between AI agents of different people, and decided to add this layer on top of Google's new A2A libraries. There is no official Typescript A2A SDK, so I have released my own open source SDK.

My presentation at Google gave a quick demonstration of A2A in action using Matchwise.

Presenting A2A + Agentic Profile at Google's Gemini Workshop

I then switched gears into the mechanics of an Agentic Economy, and how decentralized services interact to accomplish business and social goals.

Presenting A2A + Agentic Profile at Google's Gemini Workshop

For a review of the presentation please check out the slides. The Agentic Profile enhanced A2A SDK is available now.

If you have any questions please reach out to Mike Prince on LinkedIn.

]]>
<![CDATA[Agent-to-Agent (A2A) SDK is now available with support for Agentic Profiles: Globally unique user and business scoped agent identities, and universal authentication]]>Google has released Python and Java SDKs for A2A, but only has some example code for Javascript.

I took this opportunity to repackage Google's example code, refactor and clean up the rough code, and make it available as open source. I also filled in a big gap

]]>
https://www.agenticprofile.ai/2025/05/agent-to-agent-a2a-sdk-is-now-available-with-support-for-agentic-profiles-globally-unique-user-and-business-scoped-agent-identities-and-universal-authentication/6834ab5782b7c6a7c9bda3f4Mon, 26 May 2025 18:29:02 GMT

Google has released Python and Java SDKs for A2A, but only has some example code for Javascript.

I took this opportunity to repackage Google's example code, refactor and clean up the rough code, and make it available as open source. I also filled in a big gap that is needed for the Agentic Economy: the ability of agents to establish trust though user and business scoped identity and universal authentication.

The Javascript/Typescript SDK is available at https://github.com/agentic-profile/agentic-profile-a2a

The SDK leverages three other libraries:

  • A2A Client - Typescript browser or server client with Agentic Profile support
  • A2A Service - Makes it easy to add A2A agents to existing Node Express servers. Supports multi-agent and multi-tenancy
  • Agentic Profile Auth - Leverages W3C DID documents and IETF JSON Web Tokens to establish user and business scoped agent identities and universal authentication
]]>
<![CDATA[A2A Typescript Client And Server Libraries Are Now Available]]>https://www.agenticprofile.ai/2025/05/a2a-typescript-client-and-server-libraries-are-now-available/682611ca82b7c6a7c9bda3b2Thu, 15 May 2025 17:13:24 GMT

Google's Agent-to-Agent (A2A) protocol was only officially released a month ago, and there is already a flurry of work around building libraries. Google has a Python Agent Developer Kit, but for Typescript, developers are left to graft code from Google's A2A sample code project - specifically the Javascript samples.

I'm eager to use A2A to power Matchwise conversations and wanted drop in NPM libraries. Most of the A2A libraries in NPM are simple copies of the Google ones, and those were pretty rough and poorly factored - so I took this opportunity to both clean them up and add Agentic Profile support.

The following packages are available now:

All the libraries above provide the additional benefits of the Agentic Profile:

  • Globally unique agent ids that are scoped to users and businesses
  • Universal authentication using JSON Web Tokens with public key cryptography.

If you'd like help integrating these libraries into your project, or want to use these for a hackathon please connect with me: Mike Prince at LinkedIn

]]>
<![CDATA[Enhancing A2A with the Agentic Profile]]>https://www.agenticprofile.ai/2025/05/enhancing-a2a-with-the-agentic-profile/68141c3d82b7c6a7c9bda350Fri, 02 May 2025 01:14:18 GMTThe Agentic Profile is a thin layer over A2A, MCP, and other HTTP protocols, and that provides:

  • Globally unique - user and business scoped - agent identity
  • Decentralized authentication

This week I modified Google's A2A demo code (result here) to add identity and authentication. This post will detail the changes I made.

Quick Background on the Agentic Profile

The Agentic Profile leverages W3C DIDs and DID documents to provide decentralized identity and information about agents, including authentication methods. (Although DID is a blockchain motivated protocol, the specification allows HTTPS resolution of documents which is leveraged by the Agentic Profile)

An Agentic Profile is a DID document, that instead of representing an agent as a first class citizen, presents a person or business as the first class citizen and their agents as verified delegates.

Below is an example Agentic Profile for the DID web:did:localhost%3A:users:2:coder which is available at http://localhost:3003/users/2/coder

{
    "@context": [
        "https://www.w3.org/ns/did/v1",
        "https://w3id.org/security/suites/jws-2020/v1",
        "https://iamagentic.org/ns/agentic-profile/v1"
    ],
    "id": "did:web:localhost%3A3003:users:2:coder",
    "name": "Coder House, Inc.",
    "verificationMethod": [
        {
            "id": "#identity-key",
            "type": "JsonWebKey2020",
            "publicKeyJwk": {
                "kty": "OKP",
                "alg": "EdDSA",
                "crv": "Ed25519",
                "x": "z6QvmN-GVCWpKUF-q_jFHuMGxWk7WH_CeRdjDl9A4OA"
            }
        }
    ],
    "service": [
        {
            "name": "A2A coder with authentication",
            "id": "#a2a-coder",
            "type": "A2A",
            "serviceEndpoint": "http://localhost:3003/users/2/coder/",
            "capabilityInvocation": [
                {
                    "id": "#agent-a2a-coder-key-0",
                    "type": "JsonWebKey2020",
                    "publicKeyJwk": {
                        "kty": "OKP",
                        "alg": "EdDSA",
                        "crv": "Ed25519",
                        "x": "fXjpVGo2mIEKxV6k071ihe2awaS5F3JUevycH9wwTr8"
                    }
                }
            ]
        }
    ]
}

DID documents list services under the service property, and with the Agentic Profile I chose to keep the same name for listing agent services.

To support A2A communications, I extended the Agentic Profile to support a service.type of "A2A" and use the serviceEndpoint to reference the agent card.

If the A2A agent only authenticates inbound requests, then no capabilityInvocation entries are necessary. However, if the agent wants to do outbound communications and authenticate itself, then a capabilityInvocation should be supplied, such as the one above that uses EdDSA.

Authentication Flow with the Agentic Profile

The following diagram uses "User Agent" to represent a client agent making a request, and "Peer Agent" to represent the remote/server agent that is responding to the request. The Agentic Profile Host for did:web DIDs can be any web server that hosts JSON documents.

The Agentic Profile protocol builds on JWT and a server generated challenge. The publicly available Agentic Profile DID document provides the public keys.

The above flow shows:

  1. The user, or client, agent has discovered the peer, or server, agent service URL and communication protocol (e.g. JSON-RPC) and makes an HTTPS request.
  2. The peer agent requires authentication and the Authorization HTTPS header has not been provided. The peer agent issues a 401 response with a challenge.
  3. The user agent uses its private key to create a JWT, which includes the server challenge, along with the agents DID.
  4. The peer agent uses the DID in the JWT to find the DID document with the user agents public key. The peer agent verifies the JWT to complete authentication.
  5. With authentication complete, the peer agent completes the request and provides the HTTPS response.
  6. Subsequent user agent HTTPS requests can reuse the JWT.
  7. Subsequent peer agent HTTPS responses can use a cache to quickly verify the JWT.

Modifications to the A2A client to support the Agentic Profile

I refactored the A2AClient and added a lower level JsonRpcClient for better separation of concerns.

type HttpHeaders = { [key: string]: string };

export interface AuthenticationHandler {
    headers: () => HttpHeaders;
    process401: (fetchResponse:Response) => Promise<boolean>,
    onSuccess: () => Promise<void>
}

export interface JsonRpcClientOptions {
    fetchImpl: typeof fetch,
    authHandler?: AuthenticationHandler
}

export class JsonRpcClient {
    private baseUrl: string;
    private fetchImpl: typeof fetch;
    private authHandler: AuthenticationHandler | undefined

    /**
     * Creates an instance of a JSON RPC client
     * @param baseUrl The base URL of the A2A server endpoint.
     * @param options Including custom fetch implementation (e.g., for Node.js environments without global fetch). Defaults to global fetch.
     */
    constructor(baseUrl: string, { fetchImpl = fetch, authHandler }: JsonRpcClientOptions) {
        // Ensure baseUrl doesn't end with a slash for consistency
        this.baseUrl = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
        this.fetchImpl = fetchImpl;
        this.authHandler = authHandler;
    }

I added a generic authentication handler to the JsonRpcClient. The authentication handler can provide HTTP headers for the request, and provides a "process401" function to handle 401 responses. An authentication handler is passed to the modified A2AClient and then passed down to the JsonRpcClient.

Updates to the Command Line Interface

The main() of the CLI was modified to resolve an "agent" which could be a basic Agent Card (agent.json) or the full context with an Agentic Profile and an Agent Card.

    const agentContext = await resolveAgent( peerAgentUrl as string );
    displayAgentCard( agentContext );
    const { agentCard } = agentContext;

    const authHandler = await createAuthHandler( iam as string, userAgentDid as string );
    const client = new A2AClient( agentCard.url, { authHandler } );

The authHandler is created from the did.json and keyring.json files in the users ~/.agentic/iam/<profile> directory. Those files were created from running "node scripts/create-global-agentic-profile" script.

async function createAuthHandler( iamProfile: string = "global-me", userAgentDid: string ) {
    const myProfileAndKeyring = await loadProfileAndKeyring( join( os.homedir(), ".agentic", "iam", iamProfile ) );
    const headers = {} as any;

    const { documentId, fragmentId } = pruneFragmentId( userAgentDid );
    const agentDid = documentId ? userAgentDid : myProfileAndKeyring.profile.id + fragmentId;

    const authHandler = {
        headers: () => headers,
        process401: async (fetchResponse:Response) => {
            const agenticChallenge = await fetchResponse.json();
            if( agenticChallenge.type !== AGENTIC_CHALLENGE_TYPE )
                throw new Error(`Unexpected 401 response ${agenticChallenge}`);

            const authToken = await generateAuthToken({
                agentDid,
                agenticChallenge,
                profileResolver: async (did:string) => {
                    const { documentId } = pruneFragmentId( did );
                    if( documentId !== myProfileAndKeyring.profile.id )
                        throw new Error(`Failed to resolve agentic profile for ${did}`);
                    return myProfileAndKeyring;
                }
            });
            headers.Authorization = `Agentic ${authToken}`;
            return true;
        },
        onSuccess: async () => {}
    };

    return authHandler;
}

Modifications to the A2A server to support the Agentic Profile

I revised the A2AServer to be an A2AService to more accurately represent what it does, and removed the Express setup code and added a routes() function in its place. The index.local.js uses this routes() function to add an A2A service to a complex Express app.

I added an AgentSessionResolver to the A2AService constructor:

export type AgentSessionResolver = ( req: Request, res: Response ) => Promise<ClientAgentSession | null>

This AgentSessionResolver is wired into the start of the endpoint() function:

    endpoint(): RequestHandler {
        return async (req: Request, res: Response, next: NextFunction) => {
            const requestBody = req.body;
            let taskId: string | undefined; // For error context

            try {
                // 0. Authenticate client agent
                let agentSession: ClientAgentSession | null;
                if( this.agentSessionResolver ) {
                    agentSession = await this.agentSessionResolver( req, res );
                    if( !agentSession )
                        return; // 401 response with challenge already issued
                }

This code has the following results:

  • If there is no AgentSessionResolver provided, then A2A requests are handled as normal with no authentication
  • If the AgentSessionResolver is called and...
    • there is no HTTP Authorization header, then a 401 response is issued with an agentic challenge, and no agent session is provided. The endpoint() handler returns immediately.
    • The HTTP authorization header is present, and it is valid, then the AgentSession is provided and execution continues.
    • The HTTP authorization header is present, and it is malformed or invalid in any way, then an Error is thrown by the agentSessionResolver() and handled by the Express middleware.

An implementation of the AgentSessionResolver is provided by the NPM package @agentic-profile/express-common and can be imported as follows:

import {
    resolveAgentSession as agentSessionResolver
} from "@agentic-profile/express-common";

Summary

Adding agentic profile support to A2A was very straightforward, and opens the door to using A2A for consumer-to-business and business-to-business transactions which will massively increase the economic impact of AI agents. The working code is available on Github at https://github.com/agentic-profile/agentic-profile-express-a2a

If you have any questions or suggestions, or would like to contribute then please connect with me on LinkedIn

]]>
<![CDATA[Can Agentic AI Avoid the Tower of OAuth Babel?]]>https://www.agenticprofile.ai/2025/04/can-agentic-ai-avoid-the-tower-of-oauth-babel/680a60c282b7c6a7c9bda270Thu, 24 Apr 2025 18:05:01 GMT

Most Agent to Agent (A2A) interactions these days are cooperative, or subservient. Like employees of a single company, the different agents work together toward a common goal.

Wiring these agents together - and specifically having them authenticate - has followed a common pattern used for wiring traditional API based services, by using shared secrets usually conveyed with HTTP Authorization headers. Using a shared secret is a quick and easy way to authenticate, but it has a wide range of drawbacks. More recent efforts have added support for the much more secure OAuth protocol.

While OAuth is a very mature standard used extensively for authenticating humans, it suffers from a few critical drawbacks with autonomous agents.

First, both parties must agree on an authentication service (e.g. Google, or Auth0). This negotiation for people usually works by the person looking at a web page and pressing a "Login with Google" or "Login with Apple" button. If the person doesn't have a Google account they can quickly create one. How will agents create an account for an authentication service they are not registered with?

Companies providing authentication services will not merge the OAuth business units to serve a common good (e.g. Google+Apple+Auth0) but instead will continue to compete to preserve or grow market share - they are a business with the express purpose of making money for their investors.

If OAuth becomes the de facto way of agents authenticating then it's likely the number of OAuth companies will grow, creating a veritable Tower of OAuth Babel that agents will have to navigate.

Secondly, the authentication service does not provide a canonical identifier for the person, but instead uses an identifier unique within the authentication service. While an email is a commonly used identifier, there is no guarantee this is the one people want to be known by - the person may have several personal email accounts and a work account. Without a canonical identifier, then how do we know who the agent represents?

Thirdly, having an authentication service increases the attack surface. If the authentication service is compromised, then every agent's authentication and communication can be hacked. Large companies like Google and Apple spend enormous resources to avoid these attacks, but the mere presence of this risk should be seriously considered when there are alternatives without it.

A Few Years Ago Concensys Took a Fresh Look at These Authentication Problems

The blockchain community united over the abilities of public key cryptography. More specifically for our agentic use case, the ability to allow anyone to generate a globally unique public key which that same person could prove ownership of without disclosing a secret which only they know.

Public key cryptography is widely used in the JSON Web Token standard - a foundation of many authentication systems.

The blockchain community has also long strived for decentralized identity, and a few years ago Concensys along with Digital Bazaar and other contributors developed Decentralized Identifiers (DIDs) along with DID Documents.

DID documents provide a well thought through definition of web services that are authenticated in a variety of ways, including public key cryptography - and do not require authentication services.

Bingo! (And let's not reinvent the wheel)

For peer-to-peer agentic interactions, we can leverage the DID document standard and free ourselves of the need for centralized authentication services. Every agent can decide how they want to manage their private keys, while providing a uniform and decentralized way to authenticate. No more Tower of OAuth Babel, with a huge bonus that agents can have canonical ids which pave the way for much easier agent interactions and development of essential services like reputation.

Finally, a DID document can properly encapsulate the relationship between an entity such as a person or a business, and all the agents operating on behalf of that entity.

Yes, There is a Prototype

I've created an open source set of libraries to demonstrate DID documents powering agents in a decentralized ecosystem. These are currently in Typescript and are running in the cloud for you to try. I've also migrated the Matchwise business and social networking app to use DIDs and DID documents to orchestrate presence and agentic matching systems.

I'd love to hear your thoughts about this. Please connect with me, Mike Prince, on LinkedIn

]]>
<![CDATA[Finally, a way for AI Agents to Dance Together]]>Up until today, AI has been growing by chaining together the results of model inferences, where each link in the chain was cooperative. Just like employees in a single company, all the AI models are working together to solve a given problem. I'll call the relationship between the

]]>
https://www.agenticprofile.ai/2025/04/finally-a-way-for-ai-agents-to-dance-together/67f84d0682b7c6a7c9bda219Fri, 11 Apr 2025 01:34:25 GMT

Up until today, AI has been growing by chaining together the results of model inferences, where each link in the chain was cooperative. Just like employees in a single company, all the AI models are working together to solve a given problem. I'll call the relationship between the models subservient to the singular problem.

In the real world, when employees of a company, or assistants of a person interact with employees or assistants of another person, the relationship is almost always adversarial. For example, a company employee wants to sell me something and charge full price, and I'm reluctant to buy and if I do, I want a discount.

For the new Agentic AI ecosystem to thrive, agentics will need to learn to dance together

In the near future, we will all have personal AI agents representing us in every imaginable way, and businesses will be represented by AI agents trying to sell more of every service and product they produce. Our agents will be swimming in a sea of adversarial interactions - peer-to-peer - and they will need protocols to:

  • Discover each other
  • Authenticate who they represent
  • Communicate securely

While building a new version of my business and social networking app Matchwise, I recognized how disruptive peer-to-peer Agentic AI will be and the need for the aforementioned protocols. While I could have built closed-source libraries and tried to evolve a walled garden, it seemed to me much better to advocate an open and decentralized system for everyone - a rising tide lifts all boats.

Using Matchwise as a reference app to test these ideas, I have launched the first set of decentralized services to validate the architecture and give people a taste of what it can do.

Finally, a way for AI Agents to Dance Together
Agentic Profile Network Architecture

These services are nascent and should be considered pre-beta, but you are welcome to try them out. Here's a quick overview:

  • Decentralized Identifiers (DIDs) resolve to DID Documents (Agentic Profiles) which are hosted at services such as https://iamagentic.ai (for Matchwise Agentic Profiles) and https://test.p2pagentic.ai for developers to publish test Agentic Profiles. The architecture is decentralized, so anyone can host Agentic Profiles on any website or other DID method (e.g. Etherium)
  • Agentic Profiles (as DID Documents) list the available AI agents for each person or company, along with the ways to authenticate communication. By default the Agentic Profile uses Json Web Tokens (JWT).
  • The Matchwise service provides a webapp for demonstration. This webapp simply shares a users location to a presence service (using the Agentic Profile authorization protocol) and the presence service shares which people or businesses are nearby using DIDs. Just like there are many credit reporting services, there will be many presence services in the future and the crowd will decide which is "best"
  • The Matchwise service responds to the presence service notifications of nearby people (shared as DIDs) and starts adversarial chats between the agents of those people.
  • The Matchwise app shows which agents are "gossiping" (chatting) and provides a way to peek into the conversation
  • When an agent determines the real people should meet, they signal the webapp which alerts the person.

The libraries are open source and available from NPM, and I'm wrapping them under the "Agentic Profile" name. Just like webpages were the go-to place for people, Agentic Profiles will become the way companies and people make their agents known to everyone.

  • Agentic Profile Node/Express Demo - A library that demonstrates a Node service that hosts agentic chats and uses the Agentic Profile authorization protocol
  • Agentic Profile Authentication Library - The core authentication library as an Node package. Leverages JWT, elliptic curves, DIDs and DID documents which results in a very small and easy to audit library.

There are four more Node packages available through NPM along with two more Github repositories which are linked from the above. Please reach out with any questions.

]]>
<![CDATA[On The Shoulders of Giants: Agentic Profile Adopts Industry Standards and Blockchain Innovations]]>https://www.agenticprofile.ai/2025/03/on-the-shoulders-of-giants-agentic-profile-adopts-industry-standards-and-blockchain-innovations/67e17e9f82b7c6a7c9bda18fMon, 24 Mar 2025 16:27:38 GMT

What began as a quick proof-of-concept for peer-to-peer agentic discovery, authentication, and communication has quickly evolved into an industry standards based protocol.

After the first clean sheet implementation, I took a step back to review the existing authentication protocols, and the decentralized work that has been done in the blockchain community.

Peer-to-peer agentic communication has some unique challenges as mentioned by Richard Dulude.

From my research I concluded a combination of industry standard authentication - JWS/JWT, strong cryptography such as Ed25519, HTTPS/TLS - along with support for decentralized identity provided by DID could form the foundation of agent-to-agent communication. These mature standards let us avoid lengthy design and alignment discussions, and DID documents can be largely used as-is to support agents using the "service" property.

Over the last two weeks I rewrote the agentic profile libraries to align with these standards and am now working on demonstration services to validate the design:

  • The agentic-profile-auth library provides client and server authorization. It's a very small library thanks to existing JWS, Ed25519, and DID document libraries. This implementation defaults to did:web but can easily be extended to support did:plc and other DID document resolution methods.
  • Agentic-profile-ai-provider will form an easy to use bridge to different AI providers. While not required to use with the agentic-profile, this will be used for demos and to give engineers a launch pad for their own implementations. Over the coming weeks I'll add support for many more AI providers: OpenAI, Grok, Fireworks, etc.
  • Agentic-profile-chat provides an implementation of a chat protocol between agents. Having agents communicate in natural human language makes the interactions far more understandable for regular people and really brings the idea home.
  • Agentic-profile-express bundles up the agentic profile authorization, AI providers, and chat libraries to demonstrate their use as a Node JS based service.

These libraries are under constant improvement, so please share your thoughts so we can address all your needs!

What's Next?

Over the next two weeks I'll be working on demonstration services to showcase how an agentic ecosystem works:

  • Matchwise.ai (still in development) is a simple business and social networking webapp that lets you share your location to an agentic presence service which then activates agents which determine which people are good to have conversations with.
  • An Agentic Profile Presence Service (under development, open source) will demonstrate how decentralized agents can share and learn about each-other's location and trigger agent-to-agent interactions.
  • An Agentic Profile Reputation Service (under development, open source) will help agents determine if the "other" agent is worth interacting with.
  • A Smarter Dating Service (under development, open source) will demonstrate how a third party agentic service can be integrated into a user's account on a service like Matchwise.

As the above libraries become ready for testing I'll share the NPM/Github links and look forward to your thoughts.

Thank you for following along on this journey and I'm amazing excited to see where peer-to-peer agentic AI will take us!

]]>
<![CDATA[Presenting The Agentic Profile at Fetch.ai Innovation Lab]]>https://www.agenticprofile.ai/2025/03/introducing-the-agentic-profile-at-fetch-ai-innovation-lab/67d9962282b7c6a7c9bda137Mon, 10 Mar 2025 16:11:00 GMT

I was fortunate to be invited by Steven Echtman to pitch at the Agentic AI Pitch and Demo night in SF on March 6th. This event was a great forcing function for me to take the Agentic Profile test code I'd written for Steve's February 15th hackathon, and turn that code into a proper open source library on NPMJS.

I've certainly got the "Agentic AI" bug, and am convinced that we will all have many AI agents working for each of us.

Some of our agents will interface with other agents that are designed to work together - I'll call these secondary agents subservient. Like employees of a company they do their best to serve the goals of the primary agent. This is the primary use-case today.

In the near future, some of our agents will communicate with agents of other people or companies and try to accomplish tasks together in a peer-to-peer way. Each of these agents may have conflicting goals, and the peer-to-peer relationship can be adversarial. For example, my agent may be trying to buy your car from your agent. My agent's goal is to pay the smallest amount and ensure the car is the right one for me, while your agent is trying to extract the highest price, convince me the car is right for me (no matter what) and avoid disclosing information that may cause me to shy away from the purchase.

In the age of generative AI these peer-to-peer adversarial interactions become even more interesting when each person can choose the AI models. You may be able to afford a more capable (and expensive) AI model that is better at selling me a car, and I may be on a freemium plan that will more readily agree to a higher price.

This imbalance in inferencing ability will play out across all agentic interactions: commerce, marketing and spam avoidance, business and social networking, dating, conflict-resolution, politics, health care, longevity...

What's Next For the Agentic Profile?

While this first pass on the Agentic Profile framework was clean sheet, I'm taking a step back to review the other service discover systems, authentication frameworks, and communications protocols to make sure I'm not reinventing the wheel.

Peer-to-peer (P2P) Agentic AI has unique requirements as summarized by Richard Dulude in his article The Authentication Layer for Agentic AI.

I'm really excited to be exploring P2P Agentic AI and looking forward to the day we can all have agents that easily interact with each-other to make our lives better!

]]>
<![CDATA[Introducing the Agentic Profile]]>A few weeks back Steven Echtman hosted an Agentic Hackathon, which seemed like an ideal testbed for a peer-to-peer AI agent protocol which I had been exploring.

While I wasn't able to complete the protocol and some demo libraries for Steve's event, I continued the development

]]>
https://www.agenticprofile.ai/2025/03/introducing-the-agentic-profile/67c6609782b7c6a7c9bda005Tue, 04 Mar 2025 02:13:49 GMT

A few weeks back Steven Echtman hosted an Agentic Hackathon, which seemed like an ideal testbed for a peer-to-peer AI agent protocol which I had been exploring.

While I wasn't able to complete the protocol and some demo libraries for Steve's event, I continued the development and am happy to share the open source libraries today. Yes, they are nascent and surely will need improvement to be production ready. But, they do point to an amazing future where everyone will have a cadre of agents working for them. When the agent of one person can interact with with agent of another person - magic will happen!

I'm calling this idea an "Agentic Profile", and imagine a world where instead of personal webpages, email addresses, phone numbers, and chat services, that every business, person, and other entity has an agentic profile that is used to facilitate communications and transactions.

The libraries and demo code for the Agentic Profile are available on Github and NPMJS:

I know Python is also very popular and would welcome anyone who wants to implement this protocol in that language!

Looking forward to where this goes, and happy to talk anytime about how to get everyone's agents talking :)

]]>
<![CDATA[What We Learned From Matchwise 1.0]]>https://www.agenticprofile.ai/2025/01/what-we-learned-from-matchwise-1-0/67c730a482b7c6a7c9bda024Wed, 22 Jan 2025 18:05:00 GMT

Matchwise was born on May 29th at a Light DAO event at AGI House in SF. It was derived from the Talking Books app which used AI guided conversations to help people with loneliness, parenting skills, and even dating.

The idea of Matchwise was to use an AI guided conversation to learn about a person (e.g. their company elevator, significant achievements, what they are looking for in a co-founder), then summarize those learnings, and semantically match them with others.

We kicked off the product as Magic Match, and the support of Gina Levy and Doug Campbell. In August we changed the name to Matchwise and Sophie Vu joined to help bring the idea to market.

Over the next few months the product evolved with AI generated synergies, strategies, and introductions. We also developed a sophisticated guided conversation prompting engine, created over 200 agents, and tested thousands of conversations.

From September through November we continued to evolve the product, pitch at events, and tested with Inception Studio. Our goal was for Matchwise to be embraced by event organizers, and become part of every networking event experience.

By November it was clear our formula was off. I had a seminal meeting with Ronak Shah where he explained how we were misaligned with the event organizers. I spent December stepping back to re-evaluate our efforts and figuring out next steps.

Here are some key take-aways:

  • From the event attendee's perspective, business and social networking in-real-life (IRL) is broken.
  • People have come to accept serendipity as a strategy. Most walk around and start random conversations hoping to find the right people. Few people research the attendee list beforehand (if it is even available)
  • Event organizers are busy with many things which take priority over providing personalized introductions between attendees.
  • Event organizers feel that bringing people into the same room is enough for networking, and it is up to the attendees to figure the rest out.
  • Attendees don't want to spend several minutes talking to an AI agent to prepare their matching profile before an event.

In short, there wasn't demand from the event organizer side which made our cold-start problem very difficult.

So, what is next?

In November Gangesh Pathak hosted an event where Jeremiah Owyang was advocating agentic AI. In January I started exploring how agents could work to accomplish the goals of Matchwise.

After taking a step back from a centralized Matchwise service, and dusting off some decentralized identity and authentication code from the blockchain days (no blockchain here, just the identity and authentication pieces), I have started coding up an Agentic Profile system. More to come...

]]>
<![CDATA[Introduction to using Matchwise to meet the best people at events]]>https://www.agenticprofile.ai/2024/10/introduction-to-using-matchwise-to-meet-the-best-people/670d920359b3e2198bb5b7d1Mon, 14 Oct 2024 22:09:18 GMT

Matchwise is an app that helps event attendees find the best people to talk with at business and social events. We aren't a social event service, we just make the events better!

You are probably reading this article because it was linked from an event on a site such as Luma, Partiful, or Eventbrite that asked you to talk with a Matchwise matchmaker, and suggested you read this article if you have any questions.

How Does Matchwise Work?

Matchwise is a web app (no install needed!) that hosts hundreds of different AI powered matchmakers. Choose a matchmaker and then spend a few minutes letting it get to know you - first with a few simple questions - and then with a longer Deep Chat using questions that are specific to the kind of matching it will do.

This is more than the one-size-fits-all LinkedIn profile - each AI matchmaker asks you deeper questions that are relevant to an event or community, and from the unique perspective of the organizer.

The AI matchmaker is more than a form where you type something and hit the 'enter' key. The matchmaker will ask you deeper questions to really understand you, and even offer guidance to help you answer the question.

After your deeper chat with a matchmaker, the AI will generate succinct summaries of what you talked about, and those summaries will be used to match you with other people.

Quickstart: Before the event, find a quiet place and five minutes...

Ready to start? Follow these steps:

  1. Using your phone or laptop open up the matchmaker link in the Luma (or Partiful, Eventbrite, etc.) event or email that was sent to you.
  2. If this is your first time, a pop-up will appear asking you to sign into Matchwise with Google or to verify a phone number. (We do this to avoid people spamming each other)
  3. After you sign in, there will be a few quick form questions. These questions are very useful for other people to find you as a match using the filter (covered later)
  4. Tap the "Step 2: Deep Chat" button to start chatting with the AI matchmaker
  5. On the Deep Chat screen (shown as "Step 2: Deep Chat with ...") the top of the screen shows topics the matchmaker would like to discuss with you (e.g. Why build a startup, exceptional achievement, and what you are looking for in a co-founder). You can tap any topic to skip around, or the matchmaker will advance to the next after each topic has been discussed enough.
  6. Spend a few minutes chatting with the matchmaker to cover all the topics. Any any time you can tap the "Show Matches" button to end the Deep Chat.
  7. Some event organizers choose to hide the matches until the day of the event. If your organizer has done this, and you visit the Matches screen before the event you will see a countdown timer.
Introduction to using Matchwise to meet the best people at events

Here's what to do at the event...

When you arrive at the event, please visit the home screen of the Matchwise website with your phone and enable the "Nearby" feature. The Nearby feature lets us know you have arrived, and also lets other attendees know you are nearby for conversation.

Want a personal introduction to others?

Many events using Matchwise have real human Guides that can help you find your matches to talk with - the guides will even make live introductions! Ask the host to point out the Guides at the event.

To find interesting people to talk with using the Matchwise app:

  1. Open the Matchwise app and enable "Nearby"
  2. With Nearby enabled, you should see the matchmaker for the event in the nearby list. (If you don't see the matchmaker, tap the "Matchmakers" bottom tab, and tap on the matchmaker from there)
  3. On the "About Matchmaker" screen tap the "See Matches" button
Introduction to using Matchwise to meet the best people at events

Finding interesting people to talk with using the Matches screen

  1. Next to each person is a number that represents how similar their deep chat answers are to yours.
  2. Narrow the matches down using the filter: checkbox the Filter option (just above the Nearby checkbox) and then choose the kinds of people you want to match with. As you select your criteria, the number of matching people above the filter will change.
  3. After using the filter, scan down the list of people to find someone who might be interesting
  4. To see more about the person, tap the right side "expander" icon, or tap the blue match score. The persons full answers to all topics will show, along with their form question answers
  5. To learn more about possible synergies with this person, tap the "Explain synergies" button
  6. To get hints on how to connect or interact with this person, type in what you want in next to the "Strategize" button, then click the button
  7. To let the person know you would like to talk with them, tap the thumbs up icon

See who wants to talk with you

When other people tap the "Let's Talk" icon, then they will show up in your Let's Talk list. To see that list, tap the bottom navigation button labelled "Let's Talk"

Introduction to using Matchwise to meet the best people at events

If you would like to let them know you want to talk too, then tap the thumbs up icon for them. You can also type in a short message for them to see.

Wrapping up

Thank you so much for trying out Matchwise. If you have any questions, want to let us know about an issue, or have suggestions on how to make Matchwise better, then please send us an email at support@matchwise.ai

Thank you!

]]>
<![CDATA[Introduction to using Matchwise at Inception Studio's East West Bank event during Tech Week]]>https://www.agenticprofile.ai/2024/10/introduction-to-using-matchwise-with-inception-studio/66fec3c959b3e2198bb5b745Thu, 03 Oct 2024 16:40:49 GMT

Matchwise is an app that helps attendees find the best people to talk with at business and social events, and afterwards.

During SF Tech Week, Inception Studio will be using Matchwise to help founders find co-founders during their Co-founder Matching event at East West Bank.

If you would like to be connected with other founders, please consider joining us on Tuesday, October 8 for this matchmaking event here.

How Does Matchwise Work?

Matchwise is a web app (no install needed!) that hosts AI powered matchmakers such as the matchmaker for Inception Studio.

Before an event, you spend a few minutes letting the matchmaker get to know you. This is more than the one-size-fits-all LinkedIn profile - the AI matchmaker asks you deeper questions that are relevant to the event, and from the perspective of the organizer.

The AI matchmaker is more than a form where you type something and hit the 'enter' key. The matchmaker will ask you deeper questions to really understand you, and even offer guidance to help you answer the question.

After your deeper chat with the matchmaker, the AI will generate succinct summaries of what you talked about, and those summaries will be used to match you with other people at the event.

Quickstart: Before the event, find a quiet place and five minutes...

Ready to start? Follow these steps:

Introduction to using Matchwise at Inception Studio's East West Bank event during Tech Week
  1. Using your phone or laptop open up the Inception Studio matchmaker
  2. If this is your first time, a pop-up will appear asking you to sign into Matchwise with Google or to verify a phone number
  3. After you sign in, there will be a few quick form questions. These questions are very useful for other people to find you as a match using the filter (covered later)
  4. Tap the "Step 2: Deep Chat" button to start chatting with the AI matchmaker
  5. On the Deep Chat screen (shown as "Step 2: Deep Chat with Inception Studio") the top of the screen shows three topics the matchmaker would like to discuss with you (Why build a startup, exceptional achievement, and what you are looking for in a co-founder). You can tap any topic to skip around, or the matchmaker will advance to the next after each topic has been discussed enough.
  6. Spend a few minutes chatting with the matchmaker to cover all the topics. Any any time you can tap the "Show Matches" button to end the Deep Chat.
  7. Inception Studio will reveal the matches on the day of the event. If you visit the Matches screen before the event you will see a countdown timer.

Here's what to do at the event...

When you arrive at East West Bank for the Inception Studio event, please visit the home screen of the Matchwise website with your phone and enable the "Nearby" feature. The Nearby feature lets us know you have arrived, and also lets other attendees know you are nearby for conversation.

Want a personal introduction to others?

Matchwise has real human Guides that can help you find your matches to talk with and make live introductions. Ask the host to point out the Guides at the event.

To find interesting people to talk with using the app:

  1. Open the Matchwise app and enable "Nearby"
  2. With Nearby enabled, you should see the Inception Studio matchmaker in the nearby list. (If you don't see the matchmaker, tap the "Matchmakers" bottom tab, and tap on the Inception Studio matchmaker from there)
  3. On the "About Matchmaker" screen for Inception Studio, tap the "See Matches" button
Introduction to using Matchwise at Inception Studio's East West Bank event during Tech Week

Finding interesting people to talk with using the Matches screen

  1. Next to each person is a number that represents how similar their deep chat answers are to yours.
  2. Narrow the matches down using the filter: checkbox the Filter option (just above the Nearby checkbox) and then choose the kinds of people you want to match with. As you select your criteria, the number of matching people above the filter will change.
  3. After using the filter, scan down the list of people to find someone who might be interesting
  4. To see more about the person, tap the right side "expander" icon, or tap the blue match score. The persons full answers to all topics will show, along with their form question answers
  5. To learn more about possible synergies with this person, tap the "Explain synergies" button
  6. To get hints on how to connect or interact with this person, type in what you want in next to the "Strategize" button, then click the button
  7. To let the person know you would like to talk with them, tap the thumbs up icon

See who wants to talk with you

When other people tap the "Let's Talk" icon, then they will show up in your Let's Talk list. To see that list, tap the bottom navigation button labelled "Let's Talk"

Introduction to using Matchwise at Inception Studio's East West Bank event during Tech Week

If you would like to let them know you want to talk too, then tap the thumbs up icon for them. You can also type in a short message for them to see.

Wrapping up

Thank you so much for trying out Matchwise. If you have any questions, want to let us know about an issue, or have suggestions on how to make Matchwise better, then please send us an email at support@matchwise.ai

Thank you!

]]>
<![CDATA[Introducing Matchwise Guides: Real People to Greet Attendees and Make Warm Introductions]]>The Matchwise app provides an AI driven experience - a Matchmaker - to understand event attendees and suggest great people to talk with. But sometimes people want that human touch, a real human, that greets them when they arrive, walks them over to their connection, and makes a warm introduction.

]]>
https://www.agenticprofile.ai/2024/09/introducing-matchwise-guides/66e4ca3f59b3e2198bb5b6a7Mon, 16 Sep 2024 04:24:12 GMT

The Matchwise app provides an AI driven experience - a Matchmaker - to understand event attendees and suggest great people to talk with. But sometimes people want that human touch, a real human, that greets them when they arrive, walks them over to their connection, and makes a warm introduction.

Over the last several weeks we have met a number of people who want to add this human element to Matchwise, and to help others at events to meet new people. We have listened, and this week we are starting our Matchwise Guide program.

What is a Matchwise Guide?

A Matchwise Guide is a real person, and complements the Matchwise Matchmakers (the AI part of the service). They're passionate individuals who share our vision of transforming how people show up and interact at events. Guides are the architects of meaningful relationships.

What exactly does a Matchwise Guide do?

  • Warm Greetings for Event Attendees: Matchwise Guides greet people as they enter an event, and make sure they feel welcome.
  • Review Matches: If an attendee has already used the Matchwise app to create an event persona, the Guide will review the persona and help identify good people to meet. If an attendee has not used Matchwise yet, the Guide will help the attendee create a persona with the right Matchmaker.
  • Make Introductions: Guides make warm introductions - they walk the attendee over to their match and very professionally help the two people start an engaging conversation.
  • Customer Advocates: Guides listen to attendees, and share their insights and feedback with Matchwise to help constantly improve the product.
  • Brand Champions: They're knowledgeable about our platform and keen to make Matchmakers an indispensable part of every gathering.

The Matchwise Guide Experience

Becoming a Matchwise Guide is an opportunity to shape the future of human connection and show the world the incredible potential of personalized, curated networking. Here's what our guides can expect:

  • Onboarding & Training: Guides receive in-depth training on Matchwise features, matchmaking best practices, and event facilitation techniques, equipping them to create meaningful connections.
  • Supportive Community: Joining the Matchwise Guide group means becoming part of a community dedicated to helping people connect with others. Guides share experiences, learn from one another, and grow together.
  • Personal & Professional Growth: Guides attend a variety of events, meet fascinating individuals, and reshape how people network.

Why Matchwise Guides Matter?

In a digital world, the value of face-to-face connections is paramount. Matchwise Guides bring a human touch to networking, making events more engaging, productive, and enjoyable. They ensure that no one feels lost or overlooked, providing every attendee with the chance to make valuable connections and feel belonging.

Are you ready to explore being a Matchwise Guide, or want a Guide at your next event? Reach out to us to learn more. Together, let’s create a world where the question isn’t “Will there be a Matchmaker?” but “Who will our Matchmaker be?”

Email us at guides@matchwise.ai

]]>