Pre-release. Ophiolite runs today for design partners; public source and server image publication are in preparation.

Developers

Build on exact versions

One typed API for everything the Workspace does, a Python SDK and command line on top of it, and agents that reach it over MCP under the same rules: your code reads the exact versions your team trusts, publishes results others reuse, and everything stays on your server.

Available Python SDK 0.x preview — Preview (0.x) release; Windows is not yet qualified

From code to a shared resultSign in from Python through your browser, read the exact versions you name, publish a result with the versions and parameters it came from, and share it when you are ready.Sign inapprove it inthe WorkspaceReadthe exact versionsyou namePublishwith its inputsSharewhen you are ready

Quickstart

Sign in from Python through your browser, or connect an MCP client.

Python sign-in

from ophiolite import auth
# Opens your browser; approve the request in the Workspace. Nothing is typed into the script.
auth.device_login('https://ophiolite.example.org', 'geoscience', write=True)

MCP client

{
  "mcpServers": {
    "ophiolite": {
      "url": "https://ophiolite.example.org/mcp",
      "headers": { "Authorization": "Bearer <agent key from Settings → Agents>" }
    }
  }
}
Technical details

Install the SDK at the commit this release pins:

python -m pip install 'ophiolite[pandas,numpy,validation] @ git+https://github.com/tuna-soup/ophiolite-sdk@ac62ad00e2fe399756474cd655ee6b750966dd88'

Or read with a project access key from your account settings:

import os
from ophiolite import Client, Credential

# A project access key from your account settings, in the environment, never in the source.
credential = Credential.bearer(os.environ['OPHIOLITE_TOKEN'], grant=os.environ.get('OPHIOLITE_GRANT'))
with Client(os.environ['OPHIOLITE_URL'], os.environ['OPHIOLITE_PROJECT'], credential) as client:
    data = client.read(asset_id, exact_revision, curves=['GR'])

One API, one schema

Every operation is in one OpenAPI document with generated Python and TypeScript types. The browser is an ordinary client of it, so anything you can do in the Workspace you can do from code, under the same permission checks.

Sandboxed runs

Jobs run in containers with no network, a read-only file system and limits on memory, time, processes and output, inside your boundary.

Technical details

The limits per job, quoted from the runner:

DEFAULTS = {'memory_mb': 256, 'seconds': 60, 'cpus': 1.0, 'pids': 64

Tools and notebooks

Write a step in Python, run it on your own computer against an exact version, and publish its result with the exact inputs it read. The notebook gallery has worked examples that read a project from a notebook.

Conformance tasks

Partial Offline, server and agent tasks, each with an oracle, run nightly against a deployment. A model-driven agent test over MCP is not yet part of the suite.

Published with the source release; design partners run them today:

python conformance/run.py offline
python conformance/run.py server
python conformance/run.py agent
python conformance/run.py server --target https://… --people people.json

The suite's tasks

Latest changes for developers

  • Replaced operation routes are deprecated. Operation routes that have a named successor answer as before, with Deprecation and Sunset headers and a link to the route that replaces them.
  • Unversioned browser routes are deprecated. The browser routes from before the versioned API answer as before, with Deprecation and Sunset headers naming the date after which they may be removed.
  • Portable bundles with an offline reader. Versioned export bundles, archives and bundle import, read offline with no server.
  • Wells and wellbores as typed entities. Typed wells and wellbores with evidenced associations in the browser and the SDK.