Release Notes v0.1.0¶
Release Date: June 2026
Highlights¶
- Layered Identity Composition: New
identity/package for composing Human (ID-JAG), Agent (AAuth), and Workload (SPIFFE) identities - Storage Backends: SQLite and DynamoDB implementations with pluggable store interface
- Server Adapters: PersonServer and AuthzServer adapters for agent-protocols interface packages
- Deployment Options: CLI server for local development and AWS Lambda handler for serverless
New Features¶
Layered Identity Composition (identity/)¶
Compose three complementary identity layers into a unified ComposedIdentity:
import "github.com/plexusone/agentauth/identity"
composer := identity.NewComposer(
identity.WithAAuthVerifier(aauthVerifier),
identity.WithIDJAGVerifier(idjagVerifier),
identity.WithWorkloadVerifier(spiffeVerifier),
)
composed, err := composer.Compose(ctx, identity.ComposeOptions{
AAuthToken: aauthToken,
IDJAGAssertion: idjagAssertion,
IncludeWorkload: true,
})
Identity layers:
- Human Identity (ID-JAG): Which user is this agent acting for?
- Agent Identity (AAuth): Which autonomous agent is this?
- Workload Identity (SPIFFE): Which workload is hosting this?
Storage Backends (store/)¶
Pluggable storage with SQLite and DynamoDB implementations:
import "github.com/plexusone/agentauth/store"
// SQLite for development
sqliteStore, err := store.NewSQLite("agentauth.db")
// DynamoDB for production
dynamoStore, err := store.NewDynamoDB(ctx, store.DynamoDBConfig{
TableName: "agentauth",
Region: "us-west-2",
})
Storage types:
User- Human usersAgent- AI agentsMission- Agent task trackingToken- Issued access tokensPreAuthorization- Pre-approved scopesAuditLog- Authorization audit trail
Server Adapters¶
Adapters connecting agent-protocols interface packages to storage:
// PersonServer adapter for aauth/personserver
psStore := store.NewPersonServerAdapter(sqliteStore)
ps, err := personserver.New(psStore, issuer, privateKey, keyID)
// AuthzServer adapter for idjag/authzserver
asStore := store.NewAuthzServerAdapter(sqliteStore)
as, err := authzserver.New(asStore, issuer, privateKey, keyID)
CLI Server (cmd/agentauth-server/)¶
Local development server with SQLite storage:
# Run with in-memory database
go run ./cmd/agentauth-server
# Run with persistent storage
go run ./cmd/agentauth-server --db ./agentauth.db --port 8080
AWS Lambda Handler (lambda/peopleserver/)¶
Serverless deployment with DynamoDB storage:
import "github.com/plexusone/agentauth/lambda/peopleserver"
func main() {
handler := peopleserver.NewHandler(peopleserver.Config{
TableName: os.Getenv("DYNAMODB_TABLE"),
Issuer: os.Getenv("ISSUER"),
})
lambda.Start(handler.Handle)
}
Added¶
identity/package withComposedIdentity,HumanIdentity,AgentIdentity,WorkloadIdentitytypesidentity.Composerfor composing identities from credentialsidentity.WithContext()andidentity.FromContext()for context integrationstore.Storerinterface for pluggable storagestore.SQLiteStoreimplementationstore.DynamoDBStoreimplementationstore.PersonServerAdapterfor aauth/personserver compatibilitystore.AuthzServerAdapterfor idjag/authzserver compatibilitycmd/agentauth-server/CLI binarylambda/peopleserver/AWS Lambda handlerexamples/agentauth-demo/demonstration applicationexamples/omniagent-aauth/OmniAgent integration example- GitHub Actions CI workflow
- golangci-lint configuration
Documentation¶
- AgentAuth overview and architecture
- Getting started guide with code examples
- Deployment guide for AWS Lambda
- API reference for HTTP endpoints
- Integration guide for OmniAgent
Dependencies¶
github.com/aistandardsio/agent-protocols- Protocol implementationsgithub.com/aws/aws-sdk-go-v2- AWS SDK for DynamoDBgithub.com/aws/aws-lambda-go- Lambda runtimegithub.com/awslabs/aws-lambda-go-api-proxy- API Gateway proxygithub.com/mattn/go-sqlite3- SQLite drivergithub.com/golang-jwt/jwt/v5- JWT handling
Migration Guide¶
This is the initial release. For users of the composition layer previously in agent-protocols:
// Before (agent-protocols v0.5.0)
import "github.com/aistandardsio/agent-protocols/agentauth"
// After (agentauth v0.1.0)
import "github.com/plexusone/agentauth"
import "github.com/plexusone/agentauth/store"
import "github.com/plexusone/agentauth/identity"
The interface-based servers remain in agent-protocols: