Skip to content

OASF Data Model Schema

Overview

The data model defines a schema for AI agent content representation. The schema provides a way to describe agent's features, constraints, artifact locators, versioning, ownership, or relevant details.

Agent Message

syntax = "proto3";

package schema.model;

message Agent {
    // Name of the agent.
    string name = 1;

    // Version of the agent.
    string version = 2;

    // List of agent's authors in the form of `author-name <author-email>`.
    repeated string authors = 3;

    // Creation timestamp of the agent in the RFC3339 format.
    // Specs: https://www.rfc-editor.org/rfc/rfc3339.html
    string created_at = 4;

    // Additional metadata associated with this agent.
    map<string, string> annotations = 5;

    // List of skills that this agent is capable of performing.
    // Specs: https://schema.oasf.agntcy.org/skills
    repeated string skills = 6;

    // List of source locators where this agent can be found or used from.
    repeated Locator locators = 7;

    // List of extensions that describe this agent more in depth.
    repeated Extension extensions = 8;
}

Locator Message

Locators provide actual artifact locators of an agent. For example, this can reference sources such as helm charts, docker images, binaries, etc.

message Locator {
    // Location URI where this source locator can be found.
    string url = 1;

    // Type of the source locator, for example: "docker-image", "binary", "source-code".
    string type = 2;

    // Metadata associated with this source locator.
    map<string, string> annotations = 3;

    // Size in bytes of the source locator pointed by the `url` property.
    optional uint64 size = 4;

    // Digest of the source locator pointed by the `url` property.
    optional string digest = 5;
}

Extension Message

Extensions provide dynamic descriptors for an agent. For example, security and categorization features can be described using extensions.

message Extension {
    // Name of the extension.
    string name = 1;

    // Version of the extension.
    string version = 2;

    // Metadata associated with this extension.
    map<string, string> annotations = 3;

    // Value of the data, it is available directly
    // or can be constructed by fetching from some URL.
    bytes specs = 4;
}