Kotlin + Ktor + ODEI: Constitutional AI Agents on JVM
Kotlin's coroutines + Ktor's async server + ODEI's constitutional validation = modern AI agents on JVM.
Ktor Integration
import io.ktor.client.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
@Serializable
data class GuardrailResult(
val verdict: String,
val reasoning: String,
val score: Int
)
class OdeiClient(private val token: String) {
private val client = HttpClient()
private val baseUrl = "https://api.odei.ai/api/v2"
suspend fun checkAction(action: String, severity: String = "medium"): GuardrailResult {
val response = client.post("$baseUrl/guardrail/check") {
headers { append("Authorization", "Bearer $token") }
contentType(ContentType.Application.Json)
setBody(mapOf("action" to action, "severity" to severity))
}
return Json.decodeFromString(response.bodyAsText())
}
suspend fun safeExecute(action: String, fn: suspend () -> Unit) {
val result = checkAction(action)
when (result.verdict) {
"APPROVED" -> fn()
"ESCALATE" -> println("Review needed: ${result.reasoning}")
else -> println("Blocked: ${result.reasoning}")
}
}
}
Coroutine-Based Agent
class AutoAgent(private val odei: OdeiClient) {
suspend fun executeWorkflow(tasks: List<Task>) = coroutineScope {
tasks.map { task ->
async {
odei.safeExecute("execute: ${task.description}") {
task.execute()
}
}
}.awaitAll()
}
}
Production
ODEI has been running since January 2026 with 92% task success rate.
API: https://api.odei.ai | MCP: npx @odei/mcp-server
Top comments (0)