Adapter Status¶
This page tracks native adapter coverage for Model providers, MCP tool sessions, and Harmovela event delivery. Contract conformance and behavior coverage are separate; an adapter is not production or provider evidence.
Status words:
native: an in-tree adapter for this implementation.native (transport seam): request/response mapping is in-tree, but the caller supplies the HTTP transport.inherited: the implementation uses another Core runtime that provides the adapter.bridge: the implementation runs the Go Core through the bridge.not implemented: no adapter exists; do not claim support.
Model (OpenAI-Compatible)¶
| Language | Status | Notes |
|---|---|---|
| Go | native | adapters/openaicompat |
| Python | native | praxo.adapters.openaicompat |
| TypeScript | native | src/adapters/openaicompat.ts |
| Java | native | adapters.OpenAICompatibleModel |
| Rust | native | openai_compat::OpenAICompatible behind optional http-ureq; parse_stream always available |
| C# | native | Praxo.Core.OpenAiCompatible |
| Ruby | native | Praxo::Adapters::OpenAICompatible |
| PHP | native | Praxo\Core\Adapters\OpenAICompatible |
| Elixir | native | Praxo.OpenAICompatible |
| Lua | native | praxo.openai_compatible |
| Perl | native | Praxo::Adapters::OpenAICompatible |
| Nim | native | praxo/adapters/openai_compatible |
| R | native | openai_compatible adapter |
| Erlang | native | praxo_openai_compatible |
| Julia | native | OpenAICompatibleModel |
| V | native | praxo.openaicompat; verified with V 0.5.2 and x.json2 |
| Dart | native | OpenAiCompatibleModel with sync and async transport paths |
| Haskell | native (transport seam) | Caller supplies Transport; no bundled HTTP client |
| Swift | native | OpenAICompatibleModel with URLSession transport |
| OCaml | native (transport seam) | Caller supplies transport; no bundled HTTP client |
| Delphi / Free Pascal | native | TPraxoOpenAIAdapter with FPC HTTP transport |
| Objective-C | native | PXROpenAIGenerate with injectable transport |
| MATLAB | native | praxo.openai_compatible using webwrite |
| GNU Octave | native | Shared praxo.openai_compatible implementation |
| Zig | native | openaicompat.Adapter with std.http |
| C | native (transport seam) | PxOpenAICompatible; caller supplies HTTP transport |
| C++ | native (transport seam) | OpenAICompatible; caller supplies HTTP transport |
| Fortran | native (transport seam) | openai_compatible; caller supplies HTTP transport |
| D | native (transport seam) | OpenAICompatibleModel; caller may inject transport |
| COBOL | native (transport seam) | praxo-openai; caller supplies a transport program; the model callback lacks tool specs/history |
| PowerShell | inherited | Uses the C# Core |
| Visual Basic / F# | inherited | Samples over the C# Core |
| Kotlin / Scala / Groovy / Clojure | inherited | Samples over the Java Core |
| JavaScript | inherited | Sample over the TypeScript Core |
| Shell / Lisp / Tcl / Prolog | bridge | Uses the Go Core through the bridge |
The baseline mapping is documented in the OpenAI-compatible model adapter. OpenAI, DeepSeek, Kimi/Moonshot, OpenRouter, Groq, and Together use this adapter with different base URLs; the Python and TypeScript implementations expose provider presets.
Model (Anthropic Native)¶
| Language | Status | Notes |
|---|---|---|
| Go | native | adapters/anthropic |
| Python | native | praxo.adapters.anthropic.AnthropicModel |
| TypeScript | native | src/adapters/anthropic.ts |
| C# | native | Praxo.Core.AnthropicModel |
| R | native (transport seam) | anthropic; caller may supply transport |
| Elixir | native | Praxo.Anthropic |
| Java | native | adapters.AnthropicModel |
| Rust | native (transport seam) | adapters::anthropic; caller supplies transport |
| Ruby | native | Praxo::Adapters::Anthropic; injectable transport |
| PHP | native | Praxo\Core\Adapters\Anthropic |
| Lua | native | praxo.adapters.anthropic |
| Perl | native | Praxo::Adapters::Anthropic |
| Dart | native | AnthropicModel with sync and async transport paths |
| Erlang | native | praxo_anthropic |
| D | native (transport seam) | AnthropicModel; caller may inject transport |
| COBOL | native (transport seam) | praxo-anthropic; caller supplies a transport program; maps system messages, tools, tool choice, text, tool use, and usage |
| C | native (transport seam) | PxAnthropic; caller supplies HTTP transport |
| C++ | native (transport seam) | Anthropic; caller supplies HTTP transport |
| Fortran | native (transport seam) | anthropic_compatible; caller supplies HTTP transport |
| Julia | native | AnthropicModel; injectable transport |
| Nim | native | newAnthropicCompatible; injectable transport |
| Haskell | native (transport seam) | Praxo.Anthropic; caller supplies transport |
| OCaml | native (transport seam) | anthropic_model; caller supplies transport |
| Swift | native | AnthropicModel with injectable transport |
| V | native (transport seam) | anthropic_compatible; caller supplies ProviderTransport |
| Zig | native | anthropic.Adapter; injectable transport |
| MATLAB | native | praxo.anthropic_compatible; injectable transport |
| GNU Octave | native | Shared praxo.anthropic_compatible |
| Delphi / Free Pascal | native | TPraxoAnthropicAdapter; FPC HTTP transport |
| Objective-C | native | PXRAnthropicGenerate with injectable transport |
| PowerShell | inherited | Uses the C# Core |
| Visual Basic / F# | inherited | Samples over the C# Core |
| Kotlin / Scala / Groovy / Clojure | inherited | Samples over the Java Core |
| JavaScript | inherited | Sample over the TypeScript Core |
| Shell / Lisp / Tcl / Prolog | bridge | Uses the Go Core through the bridge |
| All other implementations | not implemented | Use the OpenAI-compatible adapter only for OpenAI-compatible endpoints |
Model (Gemini Native)¶
| Language | Status | Notes |
|---|---|---|
| Go | native | adapters/gemini |
| Python | native | praxo.adapters.gemini.GeminiModel |
| TypeScript | native | src/adapters/gemini.ts |
| C# | native | Praxo.Core.GeminiModel |
| R | native (transport seam) | gemini; caller may supply transport |
| Elixir | native | Praxo.Gemini |
| Java | native | adapters.GeminiModel |
| Rust | native (transport seam) | adapters::gemini; caller supplies transport |
| Ruby | native | Praxo::Adapters::Gemini; injectable transport |
| PHP | native | Praxo\Core\Adapters\Gemini |
| Lua | native | praxo.adapters.gemini |
| Perl | native | Praxo::Adapters::Gemini |
| Dart | native | GeminiModel with sync and async transport paths |
| Erlang | native | praxo_gemini |
| D | native (transport seam) | GeminiModel; caller may inject transport |
| COBOL | native (transport seam) | praxo-gemini; caller supplies a transport program; maps system instructions, tools, tool choice, text, function calls, and usage |
| C | native (transport seam) | PxGemini; caller supplies HTTP transport |
| C++ | native (transport seam) | Gemini; caller supplies HTTP transport |
| Fortran | native (transport seam) | gemini_compatible; caller supplies HTTP transport |
| Julia | native | GeminiModel; injectable transport |
| Nim | native | newGeminiCompatible; injectable transport |
| Haskell | native (transport seam) | Praxo.Gemini; caller supplies transport |
| OCaml | native (transport seam) | gemini_model; caller supplies transport |
| Swift | native | GeminiModel with injectable transport |
| V | native (transport seam) | gemini_compatible; caller supplies ProviderTransport |
| Zig | native | gemini.Adapter; injectable transport |
| MATLAB | native | praxo.gemini_compatible; injectable transport |
| GNU Octave | native | Shared praxo.gemini_compatible |
| Delphi / Free Pascal | native | TPraxoGeminiAdapter; FPC HTTP transport |
| Objective-C | native | PXRGeminiGenerate with injectable transport |
| PowerShell | inherited | Uses the C# Core |
| Visual Basic / F# | inherited | Samples over the C# Core |
| Kotlin / Scala / Groovy / Clojure | inherited | Samples over the Java Core |
| JavaScript | inherited | Sample over the TypeScript Core |
| Shell / Lisp / Tcl / Prolog | bridge | Uses the Go Core through the bridge |
| All other implementations | not implemented | Native generateContent mapping follows adoption order |
MCP¶
| Language | Status | Notes |
|---|---|---|
| Go | native | adapters/mcp; stdio and Streamable HTTP 2025-03-26 |
| Python | native | praxo.adapters.mcp.MCPClient; stdio, plus mcp_http.StreamableHTTPTransport for Streamable HTTP 2025-03-26 |
| TypeScript | native | src/adapters/mcp.ts; stdio, plus src/adapters/mcp-http.ts for Streamable HTTP 2025-03-26 |
| Java | native | adapters.McpClient; stdio, plus McpStreamableHttpTransport for Streamable HTTP 2025-03-26 (local runtime verification pending) |
| Rust | native | mcp::McpClient; stdio, plus McpClient::connect_http over a caller-supplied McpHttpTransport seam for Streamable HTTP 2025-03-26 |
| C# | native | Praxo.Core.Adapters.McpClient; stdio, plus McpStreamableHttpTransport for Streamable HTTP 2025-03-26 |
| R | native (transport seam) | mcp_client; base R needs caller-supplied transport for stdio |
| Elixir | native | Praxo.Mcp; stdio, plus Praxo.McpHttp.transport for Streamable HTTP 2025-03-26 |
| Ruby | native | Praxo::Adapters::MCPClient; stdio, plus HttpMCPTransport for Streamable HTTP 2025-03-26 |
| PHP | native | Praxo\Core\Adapters\MCPClient; stdio, plus HttpMCPTransport for Streamable HTTP 2025-03-26 |
| Dart | native | McpClient; stdio, plus McpStreamableHttpTransport for Streamable HTTP 2025-03-26 |
| Erlang | native | praxo_mcp; stdio, plus praxo_mcp_http:transport/2 for Streamable HTTP 2025-03-26 |
| Perl | native | Praxo::Adapters::MCP; stdio, plus Praxo::Adapters::MCPHTTP for Streamable HTTP 2025-03-26 |
| D | native | praxo.mcp.McpClient; stdio, plus HttpMcpTransport for Streamable HTTP 2025-03-26 |
| Delphi / Free Pascal | native | TPraxoMcpClient; stdio and TPraxoHttpMcpTransport for Streamable HTTP 2025-03-26 |
| Objective-C | native | PXRMcpClient; stdio and PXRHttpMcpTransport for Streamable HTTP 2025-03-26 |
| Zig | native | mcp.Client; stdio and curl-backed HttpTransport for Streamable HTTP 2025-03-26 |
| Swift | native | McpClient, StdioMcpTransport, HttpMcpTransport; typechecked locally, full build blocked |
| Lua | native (transport seam) | praxo.adapters.mcp; caller supplies transport |
| C | native (transport seam) | PxMcpClient; caller supplies PxMcpTransport |
| C++ | native (transport seam) | McpClient; caller supplies McpTransport |
| Fortran | native (transport seam) | mcp_client; caller supplies transport |
| COBOL | native (transport seam) | praxo-mcp; caller supplies a transport program |
| PowerShell | native (C# shared runtime) | Connect-PraxoMcp, Get-PraxoMcpTools, Invoke-PraxoMcpTool; wraps the C# MCP client and stdio/Streamable HTTP transports |
| Haskell | native (transport seam) | Praxo.Mcp; caller supplies McpTransport |
| Julia | native (transport seam) | mcp_client; caller supplies transport |
| MATLAB | native (transport seam) | praxo.mcp_client; caller supplies a function handle |
| GNU Octave | native (transport seam) | Shared praxo.mcp_client implementation |
| Nim | native (transport seam) | praxo/adapters/mcp; caller supplies transport |
| OCaml | native (transport seam) | mcp_client; caller supplies transport |
| V | native (transport seam) | praxo.mcp; caller supplies McpTransport |
| Visual Basic / F# | inherited | Samples over the C# Core |
| Kotlin / Scala / Groovy / Clojure | inherited | Samples over the Java Core |
| JavaScript | inherited | Sample over the TypeScript Core |
| Shell / Lisp / Tcl / Prolog | bridge | Uses the Go Core through the bridge |
| All other implementations | not implemented | MCP clients follow the model baseline in adoption order. Missing clients are not yet implemented, not a documented language limitation: a native stdio client or a caller-supplied request/response transport seam is feasible wherever the runtime can provide the transport. |
MCP support means a minimal client session that can initialize, list tools with pagination, and call a tool. It does not imply a hosted MCP service, schema promotion, or production authentication. The Go reference provides stdio and Streamable HTTP 2025-03-26. Streamable HTTP clients also exist for Python, TypeScript, C#, Java, Rust (caller-supplied seam), Ruby, PHP, Elixir, Erlang, Dart, Perl, D, Delphi, Objective-C, and Zig; Swift defines an HTTP transport but its full local build verification is blocked. R, Lua, C, C++, Fortran, COBOL, Haskell, Julia, MATLAB, GNU Octave, Nim, OCaml, and V provide caller-supplied transport seams; PowerShell wraps the C# client and transports. No live MCP server or remote-service evidence is claimed.
COBOL now uses a caller-supplied transport program and the existing native JSON utilities; MCP is JSON-RPC, so a native stdio child process is not required. COBOL's separate OpenAI-compatible gap remains a model-callback concern: the current model callback does not receive tool specs or assistant tool-call history.
Harmovela¶
| Language | Status | Notes |
|---|---|---|
| Go | native | adapters/harmovela |
| Python | native | praxo.adapters.harmovela.HarmovelaSink |
| TypeScript | native | src/adapters/harmovela.ts |
| Java | native | adapters.HarmovelaSink |
| Rust | native | harmovela::Sink |
| C# | native | Praxo.Core.HarmovelaSink |
| R | native | harmovela_sink |
| Elixir | native | Praxo.HarmovelaSink |
| Ruby | native | Praxo::Adapters::HarmovelaSink |
| PHP | native | Praxo\Core\Adapters\HarmovelaSink |
| Lua | native | praxo.harmovela_sink |
| Nim | native | newHarmovelaSink |
| Perl | native | Praxo::Adapters::Harmovela |
| Erlang | native | praxo_harmovela |
| Julia | native | HarmovelaSink |
| V | native | harmovela_sink; verified with V 0.5.2 and x.json2 |
| D | native | HarmovelaSink |
| Dart | native | HarmovelaSink |
| Haskell | native (transport seam) | Praxo.Harmovela; caller supplies transport |
| Swift | native | HarmovelaSink with URLSession transport |
| OCaml | native (transport seam) | harmovela_sink; caller supplies transport |
| Delphi / Free Pascal | native | TPraxoHarmovelaSink |
| Objective-C | native | PraxoHarmovela |
| MATLAB | native | praxo.harmovela_sink |
| GNU Octave | native | Shared praxo.harmovela_sink |
| Zig | native | harmovela |
| C | native (transport seam) | praxo_harmovela; caller supplies HTTP transport |
| C++ | native (transport seam) | HarmovelaSink; caller supplies HTTP transport |
| Fortran | native (transport seam) | harmovela; caller supplies HTTP transport |
| PowerShell | inherited | Uses the C# Core |
| Visual Basic / F# | inherited | Samples over the C# Core |
| Kotlin / Scala / Groovy / Clojure | inherited | Samples over the Java Core |
| JavaScript | inherited | Sample over the TypeScript Core |
| Shell / Lisp / Tcl / Prolog | bridge | Uses the Go Core through the bridge |
| COBOL | native (transport seam) | praxo-harmovela; caller supplies a transport program |
| Other implementations | not implemented | Add with a named consumer or maintainer |
Harmovela support means an HTTP event sink that posts the documented envelope. It does not imply authentication, delivery guarantees, ordering, or production transport. Each implementation uses an injected transport or loopback fixture in tests; no live Harmovela service is claimed.
OpenTelemetry¶
| Language | Status | Notes |
|---|---|---|
| Go | native | adapters/otel maps events to spans through a trace.Tracer |
| Python | native (transport seam) | praxo.adapters.otel.OtelSink; caller supplies OTLP/HTTP transport |
| TypeScript | native (transport seam) | src/adapters/otel.ts; caller supplies OTLP/HTTP transport |
| Java | native (transport seam) | adapters.OtelSink; caller supplies OTLP/HTTP transport |
| Rust | native (transport seam) | adapters::otel::Sink; caller supplies OTLP/HTTP transport |
| R | native (transport seam) | otel_sink; caller supplies OTLP/HTTP transport |
| C# | native (transport seam) | Praxo.Core.OtelSink; caller supplies OTLP/HTTP transport |
| Ruby | native (transport seam) | OtelSink; caller supplies OTLP/HTTP transport |
| PHP | native (transport seam) | OtelSink; caller supplies OTLP/HTTP transport |
| Perl | native (transport seam) | Praxo::Adapters::Otel; caller supplies transport |
| Elixir | native (transport seam) | Praxo.OtelSink; caller supplies OTLP/HTTP transport |
| Dart | native (transport seam) | OtelSink; caller supplies OtelTransport |
| Lua | native (transport seam) | adapters.otel_sink; caller supplies OTLP/HTTP transport |
| C | native (transport seam) | PxOtelSink; caller supplies PxOtelTransport |
| C++ | native (transport seam) | OtelSink; caller supplies OtelTransport |
| Fortran | native (transport seam) | otel_sink; caller supplies transport |
| Haskell | native (transport seam) | Praxo.Otel; caller supplies OtelTransport |
| OCaml | native (transport seam) | otel_sink_new and otel_emit; caller supplies OTLP/HTTP transport |
| Swift | native (transport seam) | OtelSink; caller supplies OtelTransport |
| D | native (transport seam) | OtelSink; caller supplies OTLP/HTTP transport |
| Delphi / Free Pascal | native (transport seam) | TPraxoOtelSink; caller supplies TPraxoOtelTransport |
| Objective-C | native (transport seam) | PXROtelSink; caller supplies PXROtelTransport |
| Nim | native (transport seam) | newOtelSink; caller supplies OTLP/HTTP transport |
| V | native (transport seam) | new_otel_sink; caller supplies OtelTransport |
| Zig | native (transport seam) | otel.Sink; caller supplies OTLP/HTTP transport |
| Julia | native (transport seam) | otel_sink; caller supplies OTLP/HTTP transport |
| MATLAB | native (transport seam) | praxo.otel_sink; caller supplies OTLP/HTTP transport |
| GNU Octave | native (transport seam) | Shared praxo.otel_sink; caller supplies OTLP/HTTP transport |
| Erlang | native (transport seam) | praxo_otel; caller supplies transport |
| COBOL | native (transport seam) | praxo-otel; caller supplies an OTLP/HTTP transport program |
| PowerShell | inherited | Uses the C# Core |
| Visual Basic / F# | inherited | Samples over the C# Core |
| Kotlin / Scala / Groovy / Clojure | inherited | Samples over the Java Core |
| JavaScript | inherited | Sample over the TypeScript Core |
| Shell / Lisp / Tcl / Prolog | bridge | Uses the Go Core through the bridge |
| All other implementations | not implemented | Candidate transport-seam sinks; no OpenTelemetry SDK dependency is required |
OpenTelemetry support means mapping Core events to OTLP spans over a caller-supplied transport. It does not imply a collector, sampler, SDK, production exporter, or vendor backend. Event data is excluded by default; selected keys must be allowlisted explicitly.
Delegation¶
| Language | Status | Notes |
|---|---|---|
| Go | native | pkg/agent/delegation subagent manager |
| Python | native | praxo.delegation.SubagentManager |
| TypeScript | native | src/delegation.ts SubagentManager |
| Java | native | agent.delegation.SubagentManager |
| Rust | native | delegation::SubagentManager |
| C# | native | Praxo.Core.Delegation.SubagentManager |
| R | native (synchronous seam) | subagent_run; no asynchronous manager |
| Ruby | native | Delegation::SubagentManager |
| PHP | native (synchronous seam) | SubagentManager::run; no asynchronous manager |
| Perl | native (synchronous seam) | subagent_run; no asynchronous manager |
| Elixir | native | Praxo.SubagentManager |
| Dart | native (synchronous seam) | SubagentManager.run; no asynchronous manager |
| Lua | native (synchronous seam) | subagent_run; no asynchronous manager |
| C | native (synchronous seam) | px_subagent_run; no asynchronous manager |
| C++ | native (synchronous seam) | subagent_run; no asynchronous manager |
| Fortran | native (synchronous seam) | subagent_run; no asynchronous manager |
| Haskell | native (synchronous seam) | Praxo.Delegation.subagentRun; no asynchronous manager |
| OCaml | native (synchronous seam) | subagent_run; no asynchronous manager |
| Swift | native (synchronous seam) | SubagentManager.run; no asynchronous manager |
| D | native (synchronous seam) | SubagentManager.run in praxo.delegation; no asynchronous manager |
| Delphi / Free Pascal | native (synchronous seam) | TPraxoSubagentManager.Run; no asynchronous manager |
| Objective-C | native (synchronous seam) | PXRSubagentRun; no asynchronous manager |
| Nim | native (synchronous seam) | subagentRun; no asynchronous manager |
| V | native (synchronous seam) | SubagentManager.run; no asynchronous manager |
| Zig | native (synchronous seam) | delegation.subagentRun; no asynchronous manager |
| Julia | native (synchronous seam) | subagent_run; no asynchronous manager |
| MATLAB | native (synchronous seam) | praxo.subagent_run; no asynchronous manager |
| GNU Octave | native (synchronous seam) | Shared praxo.subagent_run; no asynchronous manager |
| Erlang | native (synchronous seam) | praxo_delegation:subagent_run/2; no asynchronous manager |
| PowerShell | native (synchronous wrapper) | Reuses C# request/result/task types; no asynchronous manager |
| COBOL | native (synchronous seam) | praxo-delegation; synchronous runner callback; no asynchronous manager |
| All other implementations | not implemented | Add with a named consumer or maintainer |
Delegation means a local child-run manager with queued/running/terminal states, wait, optional update, and cancellation. It does not imply durable remote workers, cross-process scheduling, or exactly-once execution.
Retriever¶
| Language | Status | Notes |
|---|---|---|
| Go | native | pkg/retriever.Document and Retriever |
| Python | native | praxo.retriever.Document and Retriever |
| TypeScript | native | src/retriever.ts Document and Retriever |
| Java | native | retriever.Document and Retriever |
| Rust | native | retriever::Document and Retriever |
| C# | native | Praxo.Core.Retriever.Document and Retriever |
| R | native | document, func_retriever, retriever_retrieve |
| Ruby | native | Document, FuncRetriever |
| PHP | native | Document, Retriever, FuncRetriever |
| Perl | native | document, func_retriever, retrieve_documents |
| Elixir | native | Praxo.Document, Praxo.FuncRetriever |
| Dart | native | Document, FuncRetriever, retrieveDocuments |
| Lua | native | document, func_retriever, retriever_retrieve |
| C | native | PxDocument, PxRetriever, px_retrieve |
| C++ | native | Document, Retriever, retrieve |
| Fortran | native | document, retriever, retrieve_documents |
| Haskell | native | Praxo.Retriever.Document and Retriever |
| OCaml | native | document and retrieve_documents |
| Swift | native | Document, FuncRetriever, retrieveDocuments |
| D | native | Document, Retriever, FuncRetriever, retrieveDocuments |
| Delphi / Free Pascal | native | TPraxoDocument, TPraxoRetriever, PraxoRetrieveDocuments |
| Objective-C | native | PXDocument, PXRetriever, PXRetrieveDocuments |
| Nim | native | Document, Retriever, FuncRetriever, retrieveDocuments |
| V | native | Document, Retriever, FuncRetriever, retrieve_documents |
| Zig | native | retriever.Document, retriever.Retriever, retriever.retrieveDocuments |
| Julia | native | Document, FuncRetriever, retrieve_documents |
| MATLAB | native | praxo.document and praxo.retrieve_documents |
| GNU Octave | native | Shared praxo.document and praxo.retrieve_documents |
| Erlang | native | praxo_retriever:document, func_retriever, retrieve/3 |
| PowerShell | inherited (wrapper) | Wraps C# Retriever |
| COBOL | native | praxo-retriever; callback seam over query and limit |
| All other implementations | not implemented | Add with a named consumer or maintainer |
Retriever support means a document/query/limit seam. It does not define an embedding model, vector database, ranking service, or production search quality.
Adding a Native Adapter¶
- Follow the language's existing model, tool, or event seam; do not widen the Go API for a port.
- Add a deterministic test with an injected transport or a loopback fixture.
- Update this page and the language README or REGISTRY entry.
- Run the language's conformance, API snapshot, and native tests.
- State streaming, dependency, and provider-verification limits explicitly.