Skip to content

ContextOS 0.1.0-alpha.15

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Nov 07:21
· 121 commits to main since this release
Immutable release. Only release title and notes can be modified.
66f8c2a

ContextOS 0.1.0-alpha.15

The fifteenth alpha of ContextOS. It is about running the gateway in production:
serving TLS and mutual TLS without a proxy, failing over between provider replicas
without ever repeating an effect, tracing and logging every governed call, and
hardening the MCP endpoint.

What changed since 0.1.0-alpha.14

Serving

  • [server.tls] serves HTTPS without a terminating proxy, with HTTP/2 by ALPN.
    client_ca_path requires client certificates (mutual TLS), so only workloads
    holding one, such as SPIFFE X.509 SVIDs, can connect. Rotated certificate files are
    picked up without a restart; a rotation that fails to load keeps the previous
    certificate. --check-config loads the files.
  • The MCP endpoint refuses browser origins other than public_url's and
    [server] allowed_origins (403 origin_not_allowed), so a web page cannot reach it
    through DNS rebinding. Callers that send no Origin are unaffected.
  • contextosd --mcp-stdio <url> connects MCP hosts that only launch local (stdio)
    servers to a run's MCP endpoint, with the token in CONTEXTOS_TOKEN and the
    executor generation in CONTEXTOS_EXECUTOR_GENERATION.

Providers

  • [[adapters]] fallback_endpoints lists replicas of a provider. A call moves to the
    next endpoint only when its request never left, or, for read-only capabilities,
    after a lost response or a 502/503/504. An effect that may have been delivered is
    never sent again. Three consecutive failures eject an endpoint for 30 seconds,
    backing off to five minutes, and ejected endpoints are tried last.
  • GUIDE.md now lists what happens when each dependency fails. Decision services fail
    closed with a reason code that names them; there is no fail-open switch.

Observability

  • Every governed call, through the server or embedded, runs in one
    contextos.dispatch span, exported as execute_tool <capability> with the
    OpenTelemetry GenAI attributes (gen_ai.operation.name, gen_ai.tool.name,
    gen_ai.tool.call.id), the outcome, the stage the pipeline stopped in
    (contextos.stage), each stage's duration (contextos.stages) and error.type on
    a refusal. Before this release, calls through the server had no span at all.
  • An access log: one JSON line per governed call on target contextos::access, on by
    default at info. RUST_LOG=info,contextos::access=off turns it off.

Configuration

  • docs/CONFIG.md lists every configuration key with its type, default
    and meaning, and docs/METRICS.md every metric. Both are generated
    from the code and checked by a test.
  • contextosd --config-schema prints the configuration's JSON Schema, committed as
    deploy/contextosd-config.schema.json. The example configuration names it in a
    #:schema comment, so TOML editors complete and check keys.

Supply chain

  • The container image is published for linux/amd64 and linux/arm64 under one tag.
    Each architecture is built natively and smoke-tested before the index is tagged,
    signed and attested.
  • Coverage-guided fuzz targets for the kernel's entry points, JsonLogic, canonical JSON
    and upstream MCP responses run weekly and on changes to that code.
  • Every GitHub Action is pinned to a commit SHA.

The changelog
lists every change.

Upgrading from 0.1.0-alpha.14

  • MCP clients must send a supported MCP-Protocol-Version, or none. An
    unsupported version is now refused with 400 instead of being ignored. A JSON-RPC
    request without an id is refused with 400; only notifications/* may omit it.
  • Browser-based MCP clients on an origin other than public_url's must be listed
    in [server] allowed_origins.
  • Trace queries on contextos.continue stop matching. A continuation is now a
    contextos.dispatch span with contextos.continuation = true.
  • Log volume grows by one line per governed call (the access log). Set
    RUST_LOG=info,contextos::access=off to keep the previous volume.
  • No configuration key, API or storage format is removed. TLS and fallback endpoints
    are off until configured.

Downloads

Platform Archive Checksum
Linux x86-64, glibc 2.28+ (tested on AlmaLinux 8 and Ubuntu 24.04) Download SHA-256
Linux ARM64, glibc 2.28+ (tested on AlmaLinux 8 and Ubuntu 24.04) Download SHA-256
macOS Apple Silicon Download SHA-256

Archives need Python 3.9+, Bash and curl. Verify an archive's checksum and provenance
as in the alpha.12 notes,
with v0.1.0-alpha.15 as the tag. The container image is
ghcr.io/contextosai/contextosd:0.1.0-alpha.15 for linux/amd64 and linux/arm64,
signed and with build provenance. The clients are pip install --pre contextos-client
and npm install contextos-client.

The alpha limits in the alpha.12 notes apply unchanged. There is no support SLA.
Report vulnerabilities privately to security@contextosai.com.

Code is Apache-2.0; prose is CC BY 4.0.