DRAKULIS.AIDOCUMENTATION / DEVELOPMENT PREVIEWWebsite ↗
LOCAL FIRST. EVIDENCE DRIVEN.

Model independence

The execution loop consumes a provider-neutral reasoning interface. It does not construct Ollama, OpenAI, Anthropic or Gemini clients. Messages, normalized tool calls, observations, verification, permissions and execution budgets remain platform concerns.

Current transports

Protocol Implementation Qualification
openai Existing OpenAI-compatible SSE, usable with OpenAI and compatible local servers Fixture-tested; specific local-model workflows exercised. Cloud credentials not exercised.
llamacpp OpenAI-compatible SSE transport for a separately provisioned llama.cpp server Contract fixtures; no live llama.cpp process tested in this iteration.
ollama Native NDJSON, normalized tool history and usage Fixtures and local experiments; model reliability limitations remain.
anthropic Native Messages request/response + normalized tool results Mocked transport tests only. Responses buffered; native token streaming pending.
gemini Native generateContent + tool-response and thought-signature preservation Mocked transport tests only. Responses buffered; native token streaming pending.

Set DRAKULIS_MODEL_PROTOCOL, DRAKULIS_MODEL_URL, and DRAKULIS_MODEL explicitly. Native cloud providers require HTTPS, online configuration and a provider key supplied through the environment. Keys are sent in headers, not URLs or prompts. No cloud requests are made by tests or by offline installations.

Capabilities and routing

ModelProfile records provider, locality, capability provenance and optional evaluation, latency, hardware and cost fields. Unknown tool support/context length remain unknown. Ollama metadata discovery can read /api/show; metadata is not a successful workflow evaluation. Other endpoint capabilities require explicit profiles or provider-specific discovery extensions.

ModelRouter.select provides manual selection with hard privacy, capability, context-window and available-memory eligibility checks. It does not silently pick another model. Automatic routing raises an explicit not-implemented error until capability and task evaluation data exist. Cost/latency/reliability fields are not fabricated measurements.

Offline routing permits only local profiles. Remote execution requires both online mode and privacy: cloud_allowed on the task. Provider-neutral extensions implement ReasoningModel and are injected explicitly; there is no automatic execution of untrusted plugin code.