"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+PTV | 3-Tier | 100% |
|---|---|---|---|
| API Endpoints | Crypto Identity | Policy Engine | Audit Integrity |
When AI agents access production systems, three questions have no good answer:
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 identity | Ed25519 keypairs + PTV hardware attestation |
| Assess risk profile | Trust scoring + behavioral embeddings (pgvector) |
| Set transaction limits | OPA policies (auto-deny / auto-allow / HITL / escalation) |
| Monitor transactions | Non-repudiable audit logs with signatures |
| Flag suspicious activity | Anomaly detection, trust degradation |
| Report to regulators | Cryptographic proof of who did what, when, who approved |
Where autonomous agents meet real consequences.
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.
$50 transfer............. [AUTO-ALLOW]
$300 transfer............ [HITL] -- manager approves
$6,000 transfer.......... [AUTO-DENY]
Hard limits enforced. Cryptographic audit for compliance.
Query public data........ [AUTO-ALLOW]
Access patient records... [HITL]
Bulk data export......... [AUTO-DENY]
HIPAA compliant. PHI access audit with proofs.
| Score | Role | Benefit |
|---|---|---|
| 95 | CISO / Security | Cryptographic identity, tamper-proof audit, trust degradation. Proof and control. |
| 90 | DevOps / SRE | Auto-handle 80% of ops. Only woken for HITL approvals. |
| 85 | Compliance / Legal | Signed audit trail. Defensible evidence for regulators. |
| 75 | Enterprise IT | One registry, one policy engine, one audit source. |
| 65 | Agent Developers | Standard SDK: connect() -> discover() -> invoke(). |
| 60 | Business Leaders | Fewer incidents, simplified compliance, reduced risk. |
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. | ||
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.
Every agent request passes through decision layers before reaching your production systems.
| Capability | Description |
|---|---|
| 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. |
Get running in under 5 minutes.
docker-compose up -d
# 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
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"]}'
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 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]
You can let your AI agent (like Hermes, OpenClaw, Claude, Codex, or any terminal-capable assistant) install and verify eyeVesa for you.
[Copy-Paste Prompt for your AI Agent]
Give your AI agent this prompt to initiate the setup:
Install and run eyeVesa from https://github.com/HafizalJohari/eyeVesa-community.git. Use the local community sandbox only. Do not request production credentials. Clone the repo, run ./start.sh, verify health endpoints, and report the local URLs back to me.[Copy]
* This runs entirely in local sandbox mode. Your agent should follow the AGENT_INSTALL.md guide which is safe by default.
Once the agent succeeds, it should verify and report these endpoints:
| Local URL | What it is | Health Endpoint |
|---|---|---|
| http://localhost:8080 | Control-plane API | /health |
| http://localhost:9443 | Gateway proxy | /health |
| http://localhost:8181 | OPA policy server | /v1/data/agentid/authz/allow |
The agent is trained to operate with absolute safety. During local community installation, it is instructed to:
For more details, see the complete Agent-Native Install Guide on GitHub.
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.
| Feature | Python | Rust | TypeScript |
|---|---|---|---|
| Agent Registration | Yes | Yes | Yes |
| MCP Invocation | Yes | Yes | Yes |
| Ed25519 Signing | PyNaCl | ed25519-dalek | tweetnacl |
| HITL Approvals | Yes | Yes | Yes |
| PTV Attestation | Yes | Yes | Yes |
| Agent Delegation | Yes | Yes | Yes |
| Skills System | Yes | Yes | Yes |
| Token TX Protocol | Yes | No | Yes |
| Framework Integrations | LangGraph, CrewAI, AutoGen | None | LangGraph, CrewAI, AutoGen |
| from_env() Config | Yes | No | Yes |
| Async / Sync | Async (httpx) | Async (tokio) | Async (fetch) |
| Min Version | Python 3.10+ | Rust 2021 Edition | Node 18+ |
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())
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);
}
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}`);
Python and TypeScript SDKs include ready-made integrations for popular agent frameworks:
| Framework | Integration | Methods |
|---|---|---|
| LangGraph | LangGraphIntegration | from_config(), connect(), get_tools(), call_tool(), authorize_and_invoke() |
| CrewAI | CrewAIIntegration | from_config(), connect(), create_tool_definition() |
| AutoGen | AutoGenIntegration | from_config(), connect(), get_function_definitions(), execute_function() |
All three SDKs read from environment variables or constructor arguments:
| Variable | Default | Description |
|---|---|---|
| AGENT_ID | UUID v4 | Unique agent identifier |
| AGENT_NAME | python-agent/node-agent | Human-readable name |
| AGENT_OWNER | default | Owning entity (org:team) |
| GATEWAY_ENDPOINT | http://localhost:9443 | eyeVesa Gateway URL |
| Method | Path | SDK Method |
|---|---|---|
| POST | /v1/register | connect() |
| GET | /v1/resources | discover() |
| POST | /v1/auth | authorize (internal) |
| POST | /v1/mcp | mcp_initialize / mcp_list_tools / mcp_call_tool |
| POST | /v1/delegate | delegate() |
| POST | /v1/ptv/attest | attest() |
| POST | /v1/ptv/bind | bind() |
| GET | /v1/ptv/verify/{id} | verify_binding() |
| POST | /v1/hitl/request | request_approval() |
| POST | /v1/hitl/{id}/decide | decide_approval() |
| GET | /v1/hitl/{id} | get_approval_status() |
| GET | /v1/hitl/pending | list_pending_approvals() |
| POST | /v1/verify-signature | verify_signature() |
| GET/POST | /v1/skills | list_skills() / create_skill() |
| POST | /v1/agents/{id}/skills | assign_skill() |
| GET | /v1/agents/{id}/skill-trust | get_skill_trust() |
| POST | /v1/tx/issue | issue_token() |
| POST | /v1/tx/verify | verify_token() |
| POST | /v1/tx/receipt | issue_receipt() |
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.
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
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"]
}'
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]
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
| Layer | System | What it Controls |
|---|---|---|
| Hermes approval | Hermes Agent | Should this shell command run? (local process safety) |
| eyeVesa authorization | eyeVesa Gateway | Should this agent identity access this enterprise resource? (remote access policy) |
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
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()| |
| +-----------------------------------------------+ |
+-------------------------------------------------------+
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
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.
Never blocked on policy. Three fallback layers ensure authorization always returns an answer.
| Tier | How | Latency | When 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.
When policy is uncertain, humans decide. And they get notified everywhere.
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
| Backend | How | Interactive? |
|---|---|---|
| Slack | Webhook with interactive Approve/Deny buttons | Yes |
| PagerDuty | Events API v2 payload with severity and links | Links only |
| Webhook | Generic JSON POST with X-EyeVesa-Event header | Custom |
| APNs | Push notification to iOS devices (JWT auth) | Tap to approve |
| FCM | Push notification to Android devices | Tap to approve |
| Telegram | Bot API sendMessage with HTML parse mode. TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID | Links |
| Discord | Webhook with rich embeds (title, description, color, footer). DISCORD_WEBHOOK_URL | Custom |
Trust is earned, not given. Agents start at 1.0 and adapt based on behavior.
| Outcome | Trust Change | Effect |
|---|---|---|
| Successful call | +0.01 | Gradually earns more autonomy |
| Policy denied | -0.05 | Restricted until recovered |
| Budget exceeded | -0.10 | Severe restriction |
| Never-event violation | BLOCKED | Auto-deny, no override |
Trust Thresholds:
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
| Property | Value | Why |
|---|---|---|
| Max depth | 3 | Prevents unbounded delegation chains |
| Scope | Tool-level allowlist | Sub-agent can only use delegated tools |
| Expiry | Configurable (default: 1 hour) | No permanent sub-agent permissions |
| Revocation | DELETE /v1/delegations/{id} | Parent can revoke at any time |
| Chain tracking | parent_agent_id + child_agent_id | Full audit trail of who delegated to whom |
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>
| Method | Path | Description |
|---|---|---|
| System | ||
| GET | /health | Health check |
| GET | /ready | Readiness check |
| GET | /identity | SPIFFE identity info |
| GET | /metrics | Prometheus metrics |
| Agents | ||
| POST | /v1/agents/register | Register a new AI agent |
| GET | /v1/agents | List all agents |
| GET | /v1/agents/{id} | Get agent by ID |
| Resources | ||
| POST | /v1/resources/register | Register an enterprise resource |
| GET | /v1/resources | List all resources |
| GET | /v1/resources/{id} | Get resource by ID |
| Authorization | ||
| POST | /v1/authorize | Authorize an agent action (OPA) |
| POST | /v1/verify-signature | Verify Ed25519 signature |
| Authentication | ||
| POST | /v1/auth/challenge | Auth challenge request |
| POST | /v1/auth/login | Agent login with challenge response |
| POST | /v1/auth/api-keys | Create API key |
| GET | /v1/auth/api-keys | List API keys |
| DELETE | /v1/auth/api-keys/{id} | Revoke API key |
| Delegation | ||
| POST | /v1/delegate | Delegate scope to another agent |
| POST | /v1/delegate/validate | Validate delegation chain |
| GET | /v1/delegations/{id} | Get delegation chain |
| DELETE | /v1/delegations/{id} | Revoke a delegation |
| HITL | ||
| POST | /v1/hitl/request | Request human approval |
| GET | /v1/hitl/pending | List pending approvals |
| GET | /v1/hitl/{id} | Get approval status |
| POST | /v1/hitl/{id}/decide | Approve/reject with FaceID/password |
| POST | /v1/hitl/escalate | Escalated multi-approver HITL |
| POST | /v1/hitl/escalate/decision | Process escalation chain decision |
| GET | /v1/hitl/escalate/{id} | Get escalation chain status |
| GET | /v1/notifications | Get notifications for approver |
| PTV (Prove-Transform-Verify) | ||
| POST | /v1/ptv/attest | Attest hardware identity |
| POST | /v1/ptv/bind | Transform attestation to binding |
| GET | /v1/ptv/verify/{id} | Verify identity binding |
| Audit | ||
| POST | /v1/audit | Query audit trail |
| Behavioral Anomaly Detection | ||
| POST | /v1/behavior/{id}/embedding | Update behavioral embedding |
| GET | /v1/behavior/{id}/anomalies | Detect behavioral anomalies |
| GET | /v1/behavior/{id}/similar | Find similar agents by behavior |
| LLM Integration | ||
| POST | /v1/llm/hitl-summary/{id} | Generate HITL summary |
| POST | /v1/llm/audit-narrative | Generate audit narrative |
| POST | /v1/llm/translate-policy | Translate natural language to Rego |
| Budget & Rate Limits | ||
| GET | /v1/budget/check | Check agent budget |
| POST | /v1/budget/spend | Record agent spend |
| Push Notifications | ||
| POST | /v1/push/register | Register push token |
| GET | /v1/push/tokens | List push tokens |
| POST | /v1/push/deactivate | Deactivate push token |
| Key Rotation | ||
| POST | /v1/keys/rotate | Rotate Ed25519 signing key |
| GET | /v1/keys/status | Get key rotation status |
| POST | /v1/keys/clear-previous | Clear previous key |
| Multi-Tenancy | ||
| POST | /v1/tenants | Create tenant |
| GET | /v1/tenants | List tenants |
| GET | /v1/tenants/{id} | Get tenant detail |
| Skills | ||
| GET | /v1/skills | List skills (optional category filter) |
| POST | /v1/skills | Create 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/search | Search skills by name/description |
| POST | /v1/agents/{id}/skills | Assign skill to agent |
| GET | /v1/agents/{id}/skills | List agent skills |
| DELETE | /v1/agents/{id}/skills/{skillId} | Remove skill from agent |
| POST | /v1/agents/{id}/skills/{skillId}/endorse | Endorse agent skill |
| POST | /v1/agents/{id}/skills/{skillId}/verify | Verify agent skill |
| GET | /v1/agents/{id}/skill-trust | Get per-skill trust scores |
| POST | /v1/agents/{id}/skill-trust/adjust | Adjust skill trust score |
| POST | /v1/skills/authz | Check skill authorization |
| GET | /v1/agents/{id}/skills/missing | Find missing skills |
| Transaction Protocol | ||
| POST | /v1/tx/issue | Issue capability token |
| POST | /v1/tx/verify | Verify capability token |
| POST | /v1/tx/revoke/{id} | Revoke capability token |
| GET | /v1/tx/revoked | List revoked tokens |
| POST | /v1/tx/receipt | Issue transaction receipt |
| POST | /v1/tx/receipt/verify | Verify transaction receipt |
| SPIRE Federation | ||
| POST | /v1/spire/bundles | Create trust bundle |
| GET | /v1/spire/bundles | List 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/verify | Verify trust bundle |
| POST | /v1/spire/bundles/fetch | Fetch bundle from remote endpoint |
| POST | /v1/spire/workloads | Register workload |
| GET | /v1/spire/workloads | List workloads |
| GET | /v1/spire/workloads/{id} | Get workload |
| POST | /v1/spire/workloads/{id}/attest | Attest workload |
| DELETE | /v1/spire/workloads/{id} | Delete workload |
| GET | /v1/spire/status | SPIRE status |
| Airport (Agent Discovery) | ||
| POST | /v1/airport/heartbeat | Agent heartbeat |
| GET | /v1/airport/search | Search agents by capability |
| GET | /v1/airport/online | List online agents |
| GET | /v1/airport/profile/{id} | Get agent airport profile |
| PUT | /v1/airport/profile/{id} | Update agent profile |
| GET | /v1/airport/connections | List active connections |
| GET | /v1/airport/health | Airport health |
| Method | Path | Description |
|---|---|---|
| GET | /health | Health check |
| POST | /v1/mcp | MCP JSON-RPC proxy |
| POST | /v1/register | Agent registration (proxied via gRPC) |
| POST | /v1/auth | Authorization (proxied via gRPC) |
| * | /v1/* | All other /v1/ paths forwarded to Go control plane |
Total: 86+ API endpoints across all services.
| Mode | Description | Use When |
|---|---|---|
| plaintext | HTTP, no TLS | Local development |
| tls | Server TLS, no client cert | Staging |
| mtls | Mutual TLS with client cert | Production |
eyeVesa works for both sides of the agent economy.
|
Agent
You build AI agents that need to |
Merchant
You run a software marketplace |
|
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
▲