When the team doesn't have the role you need, build it.
The wakalix engine is open enough that you can extend it. Author the role you need; the engine learns the spec; the role joins your team.
Talk to the teamBuild your own role.
Name the role. Describe what it does and when it escalates. Pick the model tier that matches the cognitive load. Choose its writable paths and the skills it can invoke. The engine generates the agent spec and slots it into your next cycle.
The role-authoring surface. Name the role, describe what it does, pick the tier, choose its writable paths and skills. The engine generates the agent and slots it into your cycles.
Access control — built into the gateway.
The access control matrix IS the source of truth — not a policy document, the running system. Architects can call /design-review (premium tier; high reasoning). Engineers can call /commit (standard tier). Governance can call /veto-wi (no other role can). Every call is logged with role + skill + model + cost + outcome. Editing the matrix changes the running system immediately. Other AI tools treat access control as a vendor admin panel. Wakalix treats it as part of the engine itself — version-controlled, attributable, replayable.
Every agent call is brokered by the AI gateway. Which roles can call which skills. Which role uses which model. All logged. All attributable. All rate-limited.
The substrate is open.
The protocol your roles speak is source-available — published as a public Agentic REST contract. The runtime is proprietary; the contract is not. You can read what every role in the engine sends and receives before you commit. Most AI engineering vendors keep the substrate closed. We keep it open because lock-in is the customer's primary risk.
The public contract defines:
- How a skill is called — envelope shape, headers, content types
- How errors map to HTTP status codes
- How cost is reported per call
- How auth + tenant scoping work
# POST /agents/{agent_id}/invoke requestBody: content: application/vnd.yaagents.invocation+json: schema: type: object required: [wi_id, body] properties: wi_id: type: string # work item being executed role: type: string # gateway-enforced role identity skill: type: string # optional skill invoked body: type: string # WI body markdown