Integration Guide
Hermes Gateway
Connect Hermes Gateway to OSuite and get your first governed action into /decisions in under 20 minutes.
Instance URL detected: https://readiness.osuite.ai
Governance context
Runtime class
Low-Code / Workflow Builder
A visual or builder-style platform where governance depth depends on exposed control points.
Recommended surfaces
Evidence Import Surface
Import actions, traces, and logs when the external runtime cannot be governed directly.
Control Plane
Run policy, approvals, replay, and evidence management as the operator system of record.
Typical governance range
Advisory Governance -> Approval-Orchestrated Governance -> Runtime-Enforced Governance
Self-host and future SaaS are deployment model choices for the OSuite control plane. They do not determine governance level by themselves.
Classify Hermes as an OpenAI-compatible gateway
Do not special-case Hermes in your governance model. Treat it as an OpenAI-compatible runtime family with a gateway adapter mode.
Set OSuite and Hermes environment variables
Keep runtime credentials and workspace credentials separate.
.env
OSUITE_BASE_URL=https://readiness.osuite.ai OSUITE_API_KEY=<your-workspace-api-key> OSUITE_AGENT_ID=hermes-gateway HERMES_BASE_URL=https://hermes.example.com/v1 HERMES_API_KEY=<optional-if-your-gateway-requires-it>
Wrap the Hermes request in the PCAA loop
Run guard, create the action, call Hermes, then close the outcome.
hermes-bridge.mjs
import { OSuite } from 'osuite';
const osuite = new OSuite({
baseUrl: process.env.OSUITE_BASE_URL,
apiKey: process.env.OSUITE_API_KEY,
agentId: process.env.OSUITE_AGENT_ID || 'hermes-gateway',
});
await osuite.reportConnections([{
provider: 'hermes',
auth_type: 'api_key',
status: 'active',
metadata: {
runtime_family: 'openai_compatible',
runtime_class: 'managed_bridge',
adapter_mode: 'gateway',
base_url: process.env.HERMES_BASE_URL,
},
}]);
const decision = await osuite.guard({
action_type: 'hermes.chat_completion',
declared_goal: 'Run an OpenAI-compatible agent response through Hermes',
runtime_type: 'http',
runtime_family: 'openai_compatible',
adapter_mode: 'gateway',
protocol_lane: 'trust_boundary_runtime',
risk_score: 38,
});
const created = await osuite.createAction({
action_type: 'hermes.chat_completion',
declared_goal: 'Run an OpenAI-compatible agent response through Hermes',
runtime_type: 'http',
runtime_family: 'openai_compatible',
adapter_mode: 'gateway',
protocol_lane: 'trust_boundary_runtime',
risk_score: 38,
});
const actionId = created.action?.action_id || created.action_id;
const response = await fetch(`${process.env.HERMES_BASE_URL}/responses`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
...(process.env.HERMES_API_KEY ? { Authorization: `Bearer ${process.env.HERMES_API_KEY}` } : {}),
},
body: JSON.stringify({
model: 'default',
input: 'Summarize the deployment risk in three bullets.',
}),
});
const body = await response.text();
await osuite.updateOutcome(actionId, {
status: response.ok ? 'completed' : 'failed',
output_summary: response.ok ? 'Hermes gateway response recorded in OSuite' : body,
});Verify the runtime family in OSuite
The resulting action and agent should show up as OpenAI-compatible / gateway rather than a one-off provider integration.
What success looks like
Open /agents and /replay to confirm the runtime is classified as OpenAI-compatible with a gateway adapter mode.
Navigate to /decisions in your OSuite instance. Your action should appear in the ledger within seconds of the agent run.
Governance as Code
Drop a guardrails.yml in your project root to enforce policies without code changes. OSuite evaluates these rules at the guard step before any action executes.
guardrails.yml
version: 1
project: hermes-gateway
policies:
- id: allow_low_risk_gateway_calls
applies_to:
action_types:
- hermes.chat_completion
when:
max_risk_score: 49
rule:
allow: true