eyeVesa

The Gateway That Keeps AI Agents in Check

"In an agent-first world, the core challenge is no longer about capability,
but about identity, provenance, and secure execution."

-- Dr. Vivian Balakrishnan, Minister for Foreign Affairs, Singapore (AI Engineer Day, 2026)

eyeVesa gives autonomous AI agents cryptographic identity, enforces real-time authorization policies, and produces non-repudiable audit trails -- so enterprises can trust what their agents do.

[See How It Works]   [View on GitHub]

86+Ed25519+PTV3-Tier100%
API EndpointsCrypto IdentityPolicy EngineAudit Integrity

The Problem

When AI agents access production systems, three questions have no good answer:

1. Who is this agent?
API keys can be stolen. JWTs can be leaked. There's no cryptographic proof tying an action to a specific agent identity.
2. Should this be allowed?
Static RBAC doesn't adapt. Either agents get full access (dangerous) or humans approve everything (slow). No middle ground.
3. Can we prove what happened?
When something goes wrong, logs can be tampered with. You need cryptographic proof of who did what, when, and why.

Know Your Agent (KYA)

The same principles banks use for Know Your Customer (KYC), applied to AI agents. The core loop is the same: identify → assess → authorize → monitor → enforce. Just swapped "customer" for "agent."

KYC (Banking)KYA (eyeVesa)
Verify customer identityEd25519 keypairs + PTV hardware attestation
Assess risk profileTrust scoring + behavioral embeddings (pgvector)
Set transaction limitsOPA policies (auto-deny / auto-allow / HITL / escalation)
Monitor transactionsNon-repudiable audit logs with signatures
Flag suspicious activityAnomaly detection, trust degradation
Report to regulatorsCryptographic proof of who did what, when, who approved

Use Cases

Where autonomous agents meet real consequences.

1. DevOps / SRE -- 3am Incident Response

Agent reads logs.......... [AUTO-ALLOW]
Scales up service......... [AUTO-ALLOW]
Deploys hotfix............ [HITL] -- 1 human tap

4 minutes total. Full audit trail. No 3am pages.

2. Finance / Banking -- Automated Transfers

$50 transfer............. [AUTO-ALLOW]
$300 transfer............ [HITL] -- manager approves
$6,000 transfer.......... [AUTO-DENY]

Hard limits enforced. Cryptographic audit for compliance.

3. Healthcare / Pharma -- PHI Access Control

Query public data........ [AUTO-ALLOW]
Access patient records... [HITL]
Bulk data export......... [AUTO-DENY]

HIPAA compliant. PHI access audit with proofs.

Who Benefits

ScoreRoleBenefit
95CISO / SecurityCryptographic identity, tamper-proof audit, trust degradation. Proof and control.
90DevOps / SREAuto-handle 80% of ops. Only woken for HITL approvals.
85Compliance / LegalSigned audit trail. Defensible evidence for regulators.
75Enterprise ITOne registry, one policy engine, one audit source.
65Agent DevelopersStandard SDK: connect() -> discover() -> invoke().
60Business LeadersFewer incidents, simplified compliance, reduced risk.

How It Works

Four layers decide every agent action in milliseconds:

1 AUTO-DENY -- Hard blocks, no override [DENY]
Bank transfers over $5,000. Trust below 0.1. Budget exceeded. Instantly denied. Trust -= 0.05
2 AUTO-ALLOW -- Low-risk, no human needed [ALLOW]
Trust > 0.8 + low-risk resource. Read-only operations. Scaling within limits. Trust += 0.01
3 HUMAN-IN-THE-LOOP -- Needs human judgment [HITL]
Production deployments. Bank transfers $100-$500. Restricted data with trust < 0.8. Pending until human approves.
4 ESCALATION -- Needs multiple approvals [ESCALATE]
Bank transfers over $1,000. Database schema changes. Requires 2+ separate sign-offs.

Integrates with Any Major Agentic AI

eyeVesa supports seamless integration with top LLM providers and agent frameworks to ensure any autonomous agent can operate securely:

Agents interact via our Rust SDK (for native performance), standard MCP Protocol (/v1/mcp), or REST APIs, providing every agent with verified identity, policy enforcement, behavioral monitoring, and auditability.


Core Capabilities

Every agent request passes through decision layers before reaching your production systems.

CapabilityDescription
Ed25519 Identity Every agent gets a keypair on registration. Requests are signed, verified, and non-repudiable. No shared API keys.
PTV Attestation Prove-Transform-Verify protocol binds Ed25519 identity to hardware (TPM/Secure Enclave). Cryptographic proof of platform integrity.
3-Tier Policy Engine Embedded OPA (fast, in-process) -- external OPA server (centralized) -- local Go fallback (always works). Never blocked on policy.
HITL + Escalation Human-in-the-loop approvals with multi-layer escalation. Slack buttons, PagerDuty alerts, webhooks, APNs/FCM push, Telegram Bot API, Discord webhooks. 5-min auto-escalation.
Trust Scoring Dynamic trust scores adapt in real-time. Good behavior earns trust (+0.01). Policy violations degrade it (-0.05). Low-trust agents get contained.
Non-Repudiable Audit Every action logged with Ed25519 signature. SHA-256 chain integrity. VerifyIntegrity() proves logs weren't tampered with.
Delegation Agents delegate scoped authority to sub-agents. Max depth 3. Time-limited. Revocable. Every link in the chain is tracked.
mTLS + SPIRE Three gateway modes: plaintext (dev), TLS (staging), mTLS (production). SPIRE/SPIFFE workload identity with local dev fallback.
Behavioral Anomalies pgvector 1536-dim behavioral embeddings. Cosine similarity detects anomalous agents. Trust events feed the model.
LLM Integration HITL summaries (OpenAI/Anthropic), audit narratives, natural-language-to-Rego policy translation. Graceful fallback when no API key.
Budget & Rate Limits Per-agent spend tracking. OPA checks budget before authorization. Rate limiting per agent per resource.
Skills System Declarative skill registry with CRUD, assignment, endorsement chains, and per-skill trust scoring. Search and discover agents by skill.
Airport Agent discovery and dispatch hub. Agents broadcast presence via heartbeat, search for peers by capability, and establish direct connections. Decentralized agent mesh.
Transaction Protocol Ed25519-signed capability tokens and transaction receipts. Issue, verify, and revoke tokens. Non-repudiable proof of authorization for financial-grade transactions.
SPIRE Federation Cross-cluster SPIFFE trust bundles. Register workloads, fetch remote bundles, attest workload identities. Multi-cluster SVID-based authentication.
Key Rotation Ed25519 signing key rotation with configurable grace period. Rotate keys without downtime. Previous keys remain valid until grace expiry, then cleared.
Multi-Tenancy Tenant-scoped isolation of agents, resources, policies, and audit logs. Create and manage tenants with dedicated approver pools.
Terminal UI Full bubbletea TUI dashboard with real-time views of agents, resources, HITL approvals, delegation chains, and audit trail. Keyboard-navigable.
License-Gated Pro Features Multi-layer HITL escalation, LLM integration (summaries, narratives, policy translation), behavioral anomaly detection, multi-tenancy, budget metering, push notifications. Enabled via license key.

Quick Start

Get running in under 5 minutes.

Start Infrastructure

docker-compose up -d

Start Gateway

# Terminal 1: Gateway core (Rust proxy)
cd gateway/core && cargo run

# Terminal 2: Control plane (Go API)
cd gateway/control-plane && go run cmd/api/main.go

Register an Agent

curl -X POST http://localhost:8080/v1/agents/register \
  -H "Content-Type: application/json" \
  -d '{"name":"hermes-ops","owner":"org:devops",
       "capabilities":["infrastructure_read","deployment"],
       "allowed_tools":["k8s_deploy","log_search"]}'

Verify Services

curl http://localhost:8080/health     # Control plane
curl http://localhost:9443/health     # Gateway core
curl http://localhost:8181/v1/data/agentid/authz/allow  # OPA

Install

Install the latest CLI from main:

curl -fsSL https://raw.githubusercontent.com/Hafizaljohari/eyeVesa/main/scripts/install.sh | bash
[Copy]

Install from a specific release tag:

VERSION=v0.1.1 curl -fsSL https://raw.githubusercontent.com/Hafizaljohari/eyeVesa/main/scripts/install.sh | bash
[Copy]

Install via Bun:

bunx --bun bash -c "$(curl -fsSL https://raw.githubusercontent.com/Hafizaljohari/eyeVesa/main/scripts/install.sh)"
[Copy]

Install via Homebrew tap:

brew tap Hafizaljohari/eyevesa https://github.com/Hafizaljohari/eyeVesa
brew install eyevesa
[Copy]

Run via Docker:

docker build -t eyevesa-cli -f cli/Dockerfile .
docker run --rm eyevesa-cli --help
[Copy]

SDK

Agent SDKs for Python, Rust, and TypeScript. Every SDK provides cryptographic identity (Ed25519), MCP tool invocation, policy-based authorization, HITL approvals, PTV attestation, agent delegation, skills management, and a transaction protocol with signed capability tokens and receipts.

SDK Comparison

FeaturePythonRustTypeScript
Agent RegistrationYesYesYes
MCP InvocationYesYesYes
Ed25519 SigningPyNaCled25519-dalektweetnacl
HITL ApprovalsYesYesYes
PTV AttestationYesYesYes
Agent DelegationYesYesYes
Skills SystemYesYesYes
Token TX ProtocolYesNoYes
Framework IntegrationsLangGraph, CrewAI, AutoGenNoneLangGraph, CrewAI, AutoGen
from_env() ConfigYesNoYes
Async / SyncAsync (httpx)Async (tokio)Async (fetch)
Min VersionPython 3.10+Rust 2021 EditionNode 18+

Python SDK

Package: agentid-sdk · Dependencies: httpx, pydantic, PyNaCl

import asyncio
from agentid_sdk import AgentClient, AgentConfig

async def main():
    config = AgentConfig(
        agent_id="my-agent-001",
        name="my-agent",
        owner="my-team",
        gateway_endpoint="http://localhost:9443",
    )
    async with AgentClient(config) as client:
        await client.connect()
        print(f"Trust score: {client.trust_score}")
        tools = await client.discover("mcp")
        result = await client.invoke(
            resource_id="d4385f9f-bcf8-47b9-90f4-b1fce91def59",
            tool="read",
            params={"location": "Kuala Lumpur"},
        )
        print(f"Result: {result.data}")

asyncio.run(main())
        

Rust SDK

Crate: agentid-sdk · Dependencies: tokio, reqwest, ed25519-dalek, serde

use agentid_sdk::{AgentClient, AgentConfig};
use ed25519_dalek::SigningKey;
use rand::rngs::OsRng;

#[tokio::main]
async fn main() {
    let config = AgentConfig {
        agent_id: "my-agent-001".into(),
        name: "my-agent".into(),
        owner: "my-team".into(),
        gateway_endpoint: "http://localhost:9443".into(),
        capabilities: vec!["read".into(), "write".into()],
        allowed_tools: vec!["log_search".into()],
    };
    let signing_key = SigningKey::generate(&mut OsRng);
    let client = AgentClient::connect(config, signing_key).await.unwrap();
    println!("Trust score: {}", client.trust_score());
    let result = client.invoke(
        "d4385f9f-bcf8-47b9-90f4-b1fce91def59",
        "read",
        serde_json::json!({"location": "Kuala Lumpur"}),
    ).await.unwrap();
    println!("Result: {}", result.data);
}
        

TypeScript SDK

Package: agentid-sdk · Dependencies: tweetnacl

import { AgentClient, AgentConfig } from "agentid-sdk";

const config: AgentConfig = {
    agentId: "my-agent-001",
    name: "my-agent",
    owner: "my-team",
    gatewayEndpoint: "http://localhost:9443",
};
const client = new AgentClient(config);
await client.connect();
console.log(`Trust score: ${client.trustScore}`);
const tools = await client.discover("mcp");
const result = await client.invoke(
    "d4385f9f-bcf8-47b9-90f4-b1fce91def59",
    "read",
    { location: "Kuala Lumpur" },
);
console.log(`Result: ${result.data}`);
        

Framework Integrations

Python and TypeScript SDKs include ready-made integrations for popular agent frameworks:

FrameworkIntegrationMethods
LangGraphLangGraphIntegrationfrom_config(), connect(), get_tools(), call_tool(), authorize_and_invoke()
CrewAICrewAIIntegrationfrom_config(), connect(), create_tool_definition()
AutoGenAutoGenIntegrationfrom_config(), connect(), get_function_definitions(), execute_function()

Configuration

All three SDKs read from environment variables or constructor arguments:

VariableDefaultDescription
AGENT_IDUUID v4Unique agent identifier
AGENT_NAMEpython-agent/node-agentHuman-readable name
AGENT_OWNERdefaultOwning entity (org:team)
GATEWAY_ENDPOINThttp://localhost:9443eyeVesa Gateway URL

SDK API Endpoints

MethodPathSDK Method
POST/v1/registerconnect()
GET/v1/resourcesdiscover()
POST/v1/authauthorize (internal)
POST/v1/mcpmcp_initialize / mcp_list_tools / mcp_call_tool
POST/v1/delegatedelegate()
POST/v1/ptv/attestattest()
POST/v1/ptv/bindbind()
GET/v1/ptv/verify/{id}verify_binding()
POST/v1/hitl/requestrequest_approval()
POST/v1/hitl/{id}/decidedecide_approval()
GET/v1/hitl/{id}get_approval_status()
GET/v1/hitl/pendinglist_pending_approvals()
POST/v1/verify-signatureverify_signature()
GET/POST/v1/skillslist_skills() / create_skill()
POST/v1/agents/{id}/skillsassign_skill()
GET/v1/agents/{id}/skill-trustget_skill_trust()
POST/v1/tx/issueissue_token()
POST/v1/tx/verifyverify_token()
POST/v1/tx/receiptissue_receipt()

Connect with Hermes Agent

Hermes is a self-improving autonomous AI agent by Nous Research. It features 70+ built-in tools, MCP client/server support, persistent memory, and runs on 20+ messaging platforms. Here's how to connect it to eyeVesa for identity, authorization, and audit.

Install Hermes

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

Register Hermes as an Agent

curl -X POST http://localhost:8080/v1/agents/register \
  -H "Content-Type: application/json" \
  -d '{
    "name": "hermes-ops",
    "owner": "org:devops",
    "capabilities": ["infrastructure_read", "infrastructure_write", "deployment"],
    "allowed_tools": ["k8s_deploy", "k8s_scale", "log_search", "incident_create"],
    "max_budget_usd": 500.0,
    "delegation_policy": "single_level",
    "behavioral_tags": ["production", "sre", "high_autonomy"]
  }'

Configure Hermes MCP to Use Gateway

mcp_servers:
  agentid-gateway:
    url: "http://localhost:9443/v1/mcp"
    headers:
      X-Agent-ID: "YOUR-AGENT-ID"
    tools:
      include: [tools/list, tools/call, resources/list, prompts/list]

Set Environment Variables

EYEVESA_AGENT_ID=your-agent-id-here
EYEVESA_AGENT_NAME=hermes-ops
EYEVESA_AGENT_OWNER=org:devops
EYEVESA_GATEWAY=https://gateway.yourcompany.com:9443
EYEVESA_KEY_PATH=/run/secrets/hermes.key

Two-Layer Security

LayerSystemWhat it Controls
Hermes approvalHermes AgentShould this shell command run? (local process safety)
eyeVesa authorizationeyeVesa GatewayShould this agent identity access this enterprise resource? (remote access policy)

Decision Flow

User sends message to Hermes (Telegram/Discord/CLI)
  |
  +-- Hermes LLM reasons about the request
  |
  +-- Is it an enterprise resource? (via eyeVesa Gateway MCP)
        |
        +-- Gateway verifies Ed25519 identity
        |
        +-- Gateway evaluates OPA policy
        |     +-- AUTO-DENY  (trust < 0.1, budget exceeded, never event)
        |     +-- AUTO-ALLOW (trust > 0.8, low-risk, tool in allowed_tools)
        |     +-- HITL       (production deploy, bank transfer > $100)
        |
        +-- Gateway signs audit log entry
        |
        +-- Gateway returns result + trust delta to Hermes
        

[Full Hermes Setup Guide]


Architecture

Dual-protocol gateway: Rust core proxies to Go control plane for auth, registration, and crypto.

+-------------------------------------------------------+
|                     ENTERPRISE                        |
|                                                       |
|  +-------------+  +-------------+  +--------------+   |
|  | K8s Adapter |  |  DB Adapter |  | Slack Adapter |   |
|  |  (Go :8443) |  |  (Go :8443) |  |  (Go :8443)   |   |
|  +------+------+  +------+------+  +------+-------+   |
|         |                 |                |           |
|         +--------+--------+----------------+           |
|                  |                                     |
|                  v                                     |
|       +----------------------+                        |
|       |   eyeVesa Gateway    |                        |
|       |                      |                        |
|       |  +----------------+ |                        |
|       |  | Gateway Core   | |                        |
|       |  | (Rust :9443)   | |                        |
|       |  | mTLS, proxy,  | |                        |
|       |  | crypto, MCP    | |                        |
|       |  +----------------+ |                        |
|       |                      |                        |
|       |  +----------------+ |                        |
|       |  | Control Plane  | |                        |
|       |  | (Go :8080)     | |                        |
|       |  | REST, gRPC,    | |                        |
|       |  | HITL, audit    | |                        |
|       |  +--------+-------+ |                        |
|       +----------+----------+                        |
|                  |                                     |
|    +-------------+-------------+                     |
|    |             |             |                     |
|    v             v             v                     |
| +----------+ +---------+ +---------+               |
| |PostgreSQL| |  SPIRE  | |   OPA   |               |
| |+pgvector | |Identity | | Policy  |               |
| | :5432    | |:8081/90 | | :8181   |               |
| +----------+ +---------+ +---------+               |
|                                                       |
| +-----------------------------------------------+   |
| | Agent SDK (Rust)                               |   |
| | connect() -> discover() -> invoke() -> delegate()|   |
| +-----------------------------------------------+   |
+-------------------------------------------------------+
        

Request Flow

From agent action to audit log in 12 steps:

 1. Agent registers            -> POST /v1/agents/register  -> PostgreSQL
 2. Resource registers         -> POST /v1/resources/register -> PostgreSQL
 3. Agent connects via SDK     -> mTLS to Gateway Core (:9443)
 4. Agent discovers tools      -> GET /v1/agents/{id}
 5. Agent invokes a tool       -> Ed25519-signed MCP request
 6. Gateway verifies signature
 7. Gateway checks policy       -> OPA evaluates Rego rules
 8. If HITL required            -> Write to hitl_approvals, notify human
 9. If allowed                  -> Proxy MCP request to Resource Adapter
10. Result returns              -> Agent gets response + trust score
11. Audit log written           -> Ed25519-signed entry
12. Trust score updated         -> +0.01 or -0.05
        

PTV: Prove-Transform-Verify

Hardware-rooted identity attestation. Agents prove their platform identity, the gateway transforms it into a binding, and any party can verify.

Prove:
  Agent generates hardware attestation (TPM / Secure Enclave)
  Signs with Ed25519 identity key
  Submits to /v1/ptv/attest

Transform:
  Gateway verifies TPM signature
  Creates identity binding (attestation + public key + expiry)
  Stores binding in identity_bindings table
  /v1/ptv/bind

Verify:
  Any party checks binding expiry and signature
  Confirms agent is who it claims to be
  /v1/ptv/verify/{bindingID}
        

Three-step protocol. No shared secrets. No API keys. Cryptographic proof that the agent ran on specific hardware at a specific time.


3-Tier Policy Engine

Never blocked on policy. Three fallback layers ensure authorization always returns an answer.

TierHowLatencyWhen Used
1. Embedded OPA Rego policies compiled and evaluated in-process via OPA Go SDK <1ms Default. Always available. No external dependency.
2. External OPA HTTP query to standalone OPA server at OPA_ENDPOINT ~5ms Centralized policy management. Hot-reload without gateway restart.
3. Local Fallback Hardcoded Go rules: trust thresholds, tool allowlists, budget limits <0.1ms Everything else fails. Last line of defense. Always works.

Policy decisions return four fields: allow, requires_hitl, reason, trust_delta. The gateway updates the agent's trust score based on trust_delta after every call.


Human-in-the-Loop

When policy is uncertain, humans decide. And they get notified everywhere.

Approval Flow

Request enters HITL:
  1. Write to hitl_approvals table (persistent, won't disappear)
  2. Notify primary approver (Slack DM / push notification / webhook)
  3. Start expiry timer (default: 30 minutes)
  4. Start escalation timer (5 min -> secondary -> 15 min -> team channel)

Minute 0:    Notify primary approver
Minute 5:    No response? Escalate to secondary approver
Minute 15:   No response? Escalate to team channel (anyone can approve)
Minute 30:   No response? EXPIRED (never auto-approve)
             Trust -= 0.01 for expired approval

For Layer 4 (escalation):
  Requires 2 separate approvals (e.g., VP Engineering + CTO)
  First approval: marks 1/2 approved, still pending
  Second approval: marks 2/2 approved, request executes
        

Notification Backends

BackendHowInteractive?
SlackWebhook with interactive Approve/Deny buttonsYes
PagerDutyEvents API v2 payload with severity and linksLinks only
WebhookGeneric JSON POST with X-EyeVesa-Event headerCustom
APNsPush notification to iOS devices (JWT auth)Tap to approve
FCMPush notification to Android devicesTap to approve
TelegramBot API sendMessage with HTML parse mode. TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_IDLinks
DiscordWebhook with rich embeds (title, description, color, footer). DISCORD_WEBHOOK_URLCustom

Trust Scoring

Trust is earned, not given. Agents start at 1.0 and adapt based on behavior.

OutcomeTrust ChangeEffect
Successful call+0.01Gradually earns more autonomy
Policy denied-0.05Restricted until recovered
Budget exceeded-0.10Severe restriction
Never-event violationBLOCKEDAuto-deny, no override

Trust Thresholds:


Agent Delegation

Agents can delegate scoped authority to sub-agents. But not forever, and not without limits.

Hermes (level 0, trust: 0.92)
  +-- Worker Agent (level 1, delegated by Hermes)
        scope: ["log_search"] only
        max_depth: 1 (cannot delegate further)
        expires: 1 hour

        +-- NOT ALLOWED -- delegation_policy prevents depth > 1
        
PropertyValueWhy
Max depth3Prevents unbounded delegation chains
ScopeTool-level allowlistSub-agent can only use delegated tools
ExpiryConfigurable (default: 1 hour)No permanent sub-agent permissions
RevocationDELETE /v1/delegations/{id}Parent can revoke at any time
Chain trackingparent_agent_id + child_agent_idFull audit trail of who delegated to whom

CLI

The eyevesa CLI covers agent management, authorization, HITL, audit, skills, SPIRE federation, airport discovery, budget, keys, tenants, push notifications, and more. 22 parent commands, 85+ subcommands, all working.

# Agent operations
eyevesa agent register --name hermes-ops --owner org:devops --capabilities "read,write" --tools "k8s_deploy,log_search"
eyevesa agent list
eyevesa agent get <agent-id>
eyevesa agent trust <agent-id>

# Authorization
eyevesa authorize --agent-id <id> --action read --resource-id <rid>

# HITL approvals
eyevesa hitl list
eyevesa hitl approve <approval-id>
eyevesa hitl deny <approval-id>
eyevesa hitl status <approval-id>
eyevesa hitl request --action deploy --reason "prod deploy" --risk-level high
eyevesa hitl escalate <approval-id>

# Delegation
eyevesa delegate create --parent <id> --child <id> --scope "log_search" --max-depth 1
eyevesa delegate list <agent-id>
eyevesa delegate revoke <delegation-id>
eyevesa delegate validate <delegation-id>

# Audit
eyevesa audit --agent-id <id> --limit 50

# Resources
eyevesa resource register --name k8s-api --type mcp_server --endpoint https://k8s:8443
eyevesa resource list
eyevesa resource get <resource-id>

# MCP
eyevesa mcp initialize
eyevesa mcp tools-list
eyevesa mcp call <tool> --params '{"key":"val"}'

# Skills (11 subcommands)
eyevesa skills list --category monitoring
eyevesa skills search --query "kubernetes"
eyevesa skills create --name k8s-deploy --description "Deploy to K8s" --category ops --risk-level medium
eyevesa skills assign --agent-id <id> --skill-id <sid> --proficiency expert
eyevesa skills endorse --agent-id <id> --skill-id <sid>
eyevesa skills trust <agent-id>

# Transaction Protocol
eyevesa tx issue --subject <agent-id> --scope '{"read":true}' --ttl 3600
eyevesa tx verify <token-id>
eyevesa tx revoke <token-id> --reason "compromised"
eyevesa tx receipt --token-id <tid> --action purchase --value 50

# SPIRE Federation (13 subcommands)
eyevesa spire create-bundle --name prod-cluster --domain prod.example.org
eyevesa spire list-bundles
eyevesa spire fetch-bundle --endpoint https://spire.other-cluster:8081
eyevesa spire register-workload --spiffe-id spiffe://prod/k8s/my-svc --selectors "k8s:pod-label:app=myapp"
eyevesa spire attest-workload <workload-id>
eyevesa spire status

# Airport (Agent Discovery)
eyevesa airport search --capability "database"
eyevesa airport online
eyevesa airport profile <agent-id>
eyevesa airport heartbeat
eyevesa airport connections

# Budget & Rate Limits
eyevesa budget check --agent-id <id>
eyevesa budget record --agent-id <id> --amount 10 --resource "api-call"

# Key Rotation
eyevesa keys rotate
eyevesa keys status
eyevesa keys clear-previous

# Tenants
eyevesa tenants create --name acme-corp --domain acme.com
eyevesa tenants list
eyevesa tenants get <tenant-id>

# Push Notifications
eyevesa push register --token <device-token> --platform ios
eyevesa push list
eyevesa push deactivate <token-id>

# PTV Attestation
eyevesa ptv attest --platform tpm2.0 --firmware-version 2.1
eyevesa ptv verify <binding-id>

# Other CLI Commands
eyevesa init                       # Interactive agent registration wizard
eyevesa config show                # Show current config
eyevesa doctor                     # Diagnostic checks
eyevesa ready                      # Readiness check
eyevesa discover                   # Explore resources + MCP tools
eyevesa verify-signature <agent-id> <message> <signature>
eyevesa tui                        # Full terminal dashboard

# Authentication
eyevesa auth api-key create --label "ci-cd"
eyevesa auth api-key list
eyevesa auth api-key revoke <key-id>
        

API Endpoints

Control Plane (HTTP :8080)

MethodPathDescription
System
GET/healthHealth check
GET/readyReadiness check
GET/identitySPIFFE identity info
GET/metricsPrometheus metrics
Agents
POST/v1/agents/registerRegister a new AI agent
GET/v1/agentsList all agents
GET/v1/agents/{id}Get agent by ID
Resources
POST/v1/resources/registerRegister an enterprise resource
GET/v1/resourcesList all resources
GET/v1/resources/{id}Get resource by ID
Authorization
POST/v1/authorizeAuthorize an agent action (OPA)
POST/v1/verify-signatureVerify Ed25519 signature
Authentication
POST/v1/auth/challengeAuth challenge request
POST/v1/auth/loginAgent login with challenge response
POST/v1/auth/api-keysCreate API key
GET/v1/auth/api-keysList API keys
DELETE/v1/auth/api-keys/{id}Revoke API key
Delegation
POST/v1/delegateDelegate scope to another agent
POST/v1/delegate/validateValidate delegation chain
GET/v1/delegations/{id}Get delegation chain
DELETE/v1/delegations/{id}Revoke a delegation
HITL
POST/v1/hitl/requestRequest human approval
GET/v1/hitl/pendingList pending approvals
GET/v1/hitl/{id}Get approval status
POST/v1/hitl/{id}/decideApprove/reject with FaceID/password
POST/v1/hitl/escalateEscalated multi-approver HITL
POST/v1/hitl/escalate/decisionProcess escalation chain decision
GET/v1/hitl/escalate/{id}Get escalation chain status
GET/v1/notificationsGet notifications for approver
PTV (Prove-Transform-Verify)
POST/v1/ptv/attestAttest hardware identity
POST/v1/ptv/bindTransform attestation to binding
GET/v1/ptv/verify/{id}Verify identity binding
Audit
POST/v1/auditQuery audit trail
Behavioral Anomaly Detection
POST/v1/behavior/{id}/embeddingUpdate behavioral embedding
GET/v1/behavior/{id}/anomaliesDetect behavioral anomalies
GET/v1/behavior/{id}/similarFind similar agents by behavior
LLM Integration
POST/v1/llm/hitl-summary/{id}Generate HITL summary
POST/v1/llm/audit-narrativeGenerate audit narrative
POST/v1/llm/translate-policyTranslate natural language to Rego
Budget & Rate Limits
GET/v1/budget/checkCheck agent budget
POST/v1/budget/spendRecord agent spend
Push Notifications
POST/v1/push/registerRegister push token
GET/v1/push/tokensList push tokens
POST/v1/push/deactivateDeactivate push token
Key Rotation
POST/v1/keys/rotateRotate Ed25519 signing key
GET/v1/keys/statusGet key rotation status
POST/v1/keys/clear-previousClear previous key
Multi-Tenancy
POST/v1/tenantsCreate tenant
GET/v1/tenantsList tenants
GET/v1/tenants/{id}Get tenant detail
Skills
GET/v1/skillsList skills (optional category filter)
POST/v1/skillsCreate a skill
GET/v1/skills/{id}Get skill by ID
PUT/v1/skills/{id}Update skill
DELETE/v1/skills/{id}Delete skill
GET/v1/skills/searchSearch skills by name/description
POST/v1/agents/{id}/skillsAssign skill to agent
GET/v1/agents/{id}/skillsList agent skills
DELETE/v1/agents/{id}/skills/{skillId}Remove skill from agent
POST/v1/agents/{id}/skills/{skillId}/endorseEndorse agent skill
POST/v1/agents/{id}/skills/{skillId}/verifyVerify agent skill
GET/v1/agents/{id}/skill-trustGet per-skill trust scores
POST/v1/agents/{id}/skill-trust/adjustAdjust skill trust score
POST/v1/skills/authzCheck skill authorization
GET/v1/agents/{id}/skills/missingFind missing skills
Transaction Protocol
POST/v1/tx/issueIssue capability token
POST/v1/tx/verifyVerify capability token
POST/v1/tx/revoke/{id}Revoke capability token
GET/v1/tx/revokedList revoked tokens
POST/v1/tx/receiptIssue transaction receipt
POST/v1/tx/receipt/verifyVerify transaction receipt
SPIRE Federation
POST/v1/spire/bundlesCreate trust bundle
GET/v1/spire/bundlesList trust bundles
GET/v1/spire/bundles/{id}Get trust bundle
PUT/v1/spire/bundles/{id}Update trust bundle
DELETE/v1/spire/bundles/{id}Delete trust bundle
POST/v1/spire/bundles/verifyVerify trust bundle
POST/v1/spire/bundles/fetchFetch bundle from remote endpoint
POST/v1/spire/workloadsRegister workload
GET/v1/spire/workloadsList workloads
GET/v1/spire/workloads/{id}Get workload
POST/v1/spire/workloads/{id}/attestAttest workload
DELETE/v1/spire/workloads/{id}Delete workload
GET/v1/spire/statusSPIRE status
Airport (Agent Discovery)
POST/v1/airport/heartbeatAgent heartbeat
GET/v1/airport/searchSearch agents by capability
GET/v1/airport/onlineList online agents
GET/v1/airport/profile/{id}Get agent airport profile
PUT/v1/airport/profile/{id}Update agent profile
GET/v1/airport/connectionsList active connections
GET/v1/airport/healthAirport health

Core Proxy (HTTP/TLS/mTLS :9443)

MethodPathDescription
GET/healthHealth check
POST/v1/mcpMCP JSON-RPC proxy
POST/v1/registerAgent registration (proxied via gRPC)
POST/v1/authAuthorization (proxied via gRPC)
*/v1/*All other /v1/ paths forwarded to Go control plane

Total: 86+ API endpoints across all services.

Gateway Modes

ModeDescriptionUse When
plaintextHTTP, no TLSLocal development
tlsServer TLS, no client certStaging
mtlsMutual TLS with client certProduction

FAQ

What is eyeVesa?
An identity and trust layer for autonomous AI agents. It gives agents cryptographic identity (Ed25519), enforces real-time authorization via OPA, and produces non-repudiable audit trails — so enterprises can trust what their agents do.
How does eyeVesa authorize agent actions?
A 3-tier OPA policy engine evaluates each request: auto-allow (routine actions under threshold), human-in-the-loop (risky actions require approval), or deny (unauthorized). Policies are Rego rules evaluated against agent identity, action, resource, environment, and trust score.
What is PTV attestation?
Process Trait Verification detects whether an agent process has been tampered with — code injection, binary replacement, or memory manipulation. Runtime measurements are compared against a registered baseline hash at every request.
What happens when HITL is triggered?
The action is paused. A notification is sent to the configured channel (Slack, PagerDuty, webhook, APNs, FCM, Telegram, or Discord). A human reviews and approves or rejects via button, API, or callback. If approved, the action proceeds; if rejected, it is denied and logged.
How does agent delegation work?
An agent can delegate authority to a sub-agent via a signed delegation token specifying scope (actions, resources, max depth). The sub-agent presents the chain when making requests. eyeVesa verifies all signatures, scope coverage, and chain integrity before allowing the action.
What gateway modes are available?
Three modes: plaintext (local development), tls (server-side TLS for staging/internal networks), and mtls (mutual TLS for production with client certificate verification).
How is the audit log tamper-proof?
Every audit entry is signed with Ed25519. The signature covers agent ID, action, resource, decision, and timestamp. Re-computing the signature on read instantly detects any modification.
What protocols does eyeVesa support?
eyeVesa is built around the Model Context Protocol (MCP) for agent-tool communication. It also provides REST/gRPC APIs for management, and supports SPIRE/X.509 SVID for workload identity.

Are you an agent or a merchant?

eyeVesa works for both sides of the agent economy.


Agent

You build AI agents that need to
access enterprise resources securely.

[Hermes SDK]   [Quick Start]

Merchant

You run a software marketplace
and need agent authentication.

[PTV & Identity]   [API Reference]


eyeVesa
Identity and trust layer for the agentic economy.
Stack
Rust Gateway, Go Control Plane, PostgreSQL, OPA/Rego

© 2026 eyeVesa. Proprietary license.

Developed by Hafizal Johari · llm.txt