Skip to content

OSSA Go SDK

Go SDK for Open Standard for Software Agents (OSSA) - The OpenAPI for agents.

Installation

go get github.com/blueflyio/ossa-go

Quick Start

package main

import (
    "fmt"
    "github.com/blueflyio/ossa-go/ossa"
)

func main() {
    // Load a manifest
    manifest, err := ossa.LoadManifest("creative-agent-naming.ossa.yaml")
    if err != nil {
        panic(err)
    }

    fmt.Printf("Agent: %s\n", manifest.Metadata.Name)
    fmt.Printf("Kind: %s\n", manifest.Kind)

    // Validate against schema
    result, err := ossa.ValidateManifest(manifest, "")
    if err != nil {
        panic(err)
    }

    if result.Valid {
        fmt.Println("✅ Manifest is valid")
    } else {
        fmt.Printf("❌ %d validation errors\n", len(result.Errors))
    }
}

CLI Usage

# Install CLI
go install github.com/blueflyio/ossa-go/cmd/ossa@latest

# Validate a manifest
ossa validate creative-agent-naming.ossa.yaml

# Get manifest info
ossa info creative-agent-naming.ossa.yaml

# JSON output
ossa validate creative-agent-naming.ossa.yaml --json

API Reference

Loading Manifests

// Load from file
manifest, err := ossa.LoadManifest("agent.ossa.yaml")

// Parse from bytes
manifest, err := ossa.ParseManifest(data, "agent.ossa.yaml")

// Save to file
err := ossa.SaveManifest(manifest, "output.ossa.yaml")

Validation

// Create validator with embedded schema
v, err := ossa.NewValidator()

// Create validator with custom schema
v, err := ossa.NewValidatorFromPath("/path/to/schema.json")

// Validate manifest
result, err := v.Validate(manifest)

// Convenience functions
result, err := ossa.ValidateManifest(manifest, "")
result, err := ossa.ValidateFile("agent.ossa.yaml", "")

Types

// Kind constants
ossa.KindAgent    // "Agent"
ossa.KindTask     // "Task"
ossa.KindWorkflow // "Workflow"

// Access tiers
ossa.TierRead          // "tier_1_read"
ossa.TierWriteLimited  // "tier_2_write_limited"
ossa.TierWriteElevated // "tier_3_write_elevated"
ossa.TierPolicy        // "tier_4_policy"

License

Apache-2.0