Skip to main content

cogitan

CLI + Python SDK for the Cogitan Surrogates API — run physics-simulation surrogate models on demand over HTTP. No models, solvers, or GPUs on your machine: you send inputs, our GPUs run a trained neural-operator surrogate, you get results back.

Cogitan is built for volume — sweeps of thousands to hundreds of thousands of simulations, run in seconds. If you need one answer, run a solver. If you need a parameter sweep, an optimization loop, or a design-space search, that's what this is for.

The thermal surrogate (live today)

Transient 2-D heat conduction. A Fourier Neural Operator trained on synthetic finite-element data (so no client data, no client IP touches the model):

  • ~0.04% accuracy — validation relative-L2 of 0.000409 vs the full FEM solver.
  • 21.8× faster than FEM on CPU, 100×+ on GPU — and it batches, so a whole sweep runs at once.
  • ~500 simulations/second on the Economy tier; a 50,000-case sweep in well under two minutes.
  • Valid envelope: conductivity 1–100 W/(m·K), boundary temperature 273–373 K, 0–4 heat sources, on a 64×64 grid.

Install

pip install cogitan

This gives you both the cogitan command and the import cogitan SDK.

Set up your key (once)

cogitan login
# Paste your Cogitan API key: cog_sk_********
# ✓ Saved to ~/.cogitan/config.json

Your key is stored in ~/.cogitan/config.json (locked to your user) and used automatically. Resolution order, first match wins:

  1. --api-key flag (one-off)
  2. COGITAN_API_KEY env var (CI / containers)
  3. ~/.cogitan/config.json (the normal case)

Point at a non-default endpoint with cogitan login --base-url ... or COGITAN_BASE_URL.

Pick your speed (once)

Sweeps run on a speed tier. You choose the speed; we handle the hardware. Your choice is saved like your API key and used for every sweep:

cogitan speed              # show the current tier
cogitan speed fast         # set it
Tier Feel Price / simulation
economy cheapest, far faster than CPU $0.0005
fast several times faster $0.0015
max fastest, for the biggest jobs $0.003

Override per-run with cogitan sweep --tier ... or the COGITAN_SPEED env var.

Pricing is a fixed quote = price/sim × N, shown before you run and held against your prepaid balance. You're charged only on success; failures are refunded automatically. A 50,000-case Economy sweep is $25.

Run a batch sweep

Not sure where to start? Get ready-made starter files for any model:

cogitan template thermal
# ✓ wrote sweep.json   ✓ wrote cases.json   ✓ wrote cases.csv

Two ways to describe the work:

1. A sweep spec — give parameter ranges and a count; we generate N cases by Latin-hypercube sampling (compact, best for large N):

cogitan sweep thermal --spec sweep.json --out results.json

sweep.json:

{
  "n": 50000,
  "params": { "conductivity": [1, 100] },
  "base": { "sources": [{"x": 0.5, "y": 0.5, "amplitude": 30000, "width": 0.08}] }
}

params entries that are [lo, hi] are swept; anything else is held fixed. base is merged into every case. Add "seed": 123 for reproducibility.

2. An explicit list of cases — one simulation per entry (your own design matrix), as JSON or CSV straight from a spreadsheet:

cogitan sweep thermal --params cases.json --out results.json
cogitan sweep thermal --params cases.csv  --out results.csv     # Excel-friendly both ways

cases.json:

[
  { "conductivity": 12, "sources": [{"x": 0.5, "y": 0.5, "amplitude": 30000, "width": 0.08}] },
  { "conductivity": 47, "sources": [{"x": 0.3, "y": 0.7, "amplitude": 25000, "width": 0.10}] }
]

cases.csv — one row per simulation, columns = field names (cells containing JSON like [...] are parsed; empty cells are skipped):

conductivity,sources
12,"[{""x"":0.5,""y"":0.5,""amplitude"":30000,""width"":0.08}]"
47,

Fixed fields a CSV can't hold (nested sources/boundary shared by every case) go in a small JSON file merged into every row: --base base.json.

Results as a spreadsheet: pass --out results.csv and the per-simulation results flatten into columns (param.conductivity, max_temperature, ...) — opens directly in Excel. --out results.json keeps the full JSON.

cogitan sweep submits the job, shows the quote, then polls until it finishes and writes the results. To submit without waiting, add --no-wait and check on it later:

cogitan sweep thermal --spec sweep.json --no-wait
cogitan job <job_id> --out results.json

Run a single case

For one-off predictions (small jobs), cogitan run:

cogitan run thermal --in case.json --out result.json     # from a file
cogitan run thermal -p conductivity=50                   # inline params (JSON-parsed)
echo '{"conductivity": 50}' | cogitan run thermal        # piped stdin

cogitan describe thermal prints the model's input schema.

Commands

Command What it does
cogitan login / logout / whoami Manage and check your saved API key
cogitan speed [tier] Get or set your default speed tier
cogitan template <model> Write ready-made starter files (sweep.json, cases.json, cases.csv)
cogitan sweep <model> Run a batch sweep (--spec, or --params JSON/CSV; --out .json/.csv)
cogitan job <id> Check a sweep's status / download its result
cogitan run <model> Run a single prediction
cogitan models / describe <model> List the catalog / show a model's input schema
cogitan usage Current credit balance + pricing
cogitan config / version Show settings / print the version

Add --help to any command for details.

Python SDK

import cogitan

client = cogitan.Client()                      # key + speed from config/env automatically

# --- a batch sweep: submit and block until done ---
job = client.sweep("thermal", sweep={
    "n": 10000,
    "params": {"conductivity": [1, 100]},
    "base": {"sources": [{"x": 0.5, "y": 0.5, "amplitude": 30000, "width": 0.08}]},
}, tier="economy")
results = client.fetch_result(job)             # download the result JSON
print(results["sims_per_sec"])
for row in results["results"][:3]:             # one entry per simulation, params echoed
    print(row["params"]["conductivity"], row["max_temperature"])

# --- or drive the lifecycle yourself ---
job = client.submit_job("thermal", params=[{"conductivity": 12}, {"conductivity": 47}])
print(job["quote_usd"], job["balance_usd"])
final = client.wait_job(job["job_id"], on_poll=lambda j: print(j["status"]))

# --- a single case ---
result = client.run("thermal", {
    "conductivity": 50,
    "sources": [{"x": 0.5, "y": 0.5, "amplitude": 30000, "width": 0.08}],
})
result = client.thermal.predict(conductivity=50)        # namespaced sugar

Errors raise cogitan.APIError (with .status_code, .code, .request_id) or cogitan.NotConfigured if no key is set.

Local development

pip install -e .                               # from this directory
COGITAN_BASE_URL=http://localhost:8000 cogitan models

Metadata

Release files for cogitan 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cogitan 0.1.5
File Size Uploaded
cogitan-0.1.5.tar.gz 13.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cogitan 0.1.5
File Interpreter ABI Platform
cogitan-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 29.9 kB

Release files / cogitan-0.1.5.tar.gz

Download URL cogitan-0.1.5.tar.gz
Size 13.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c430d9fc79a9e4165087e5217df93abb1d0b44cc4f8361dfcf22f5ae126a1d69
BLAKE2b-256 checksum
How to use checksums
ce83301b1d26ac3477e195d7c8ec1c633836fb05b5e513895d2c00db2acfe2a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release files / cogitan-0.1.5-py3-none-any.whl

Download URL cogitan-0.1.5-py3-none-any.whl
Size 16.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
433e7fe58b38fb249edf533ab483078d5f0572e838c08f499543569dd2e7a710
BLAKE2b-256 checksum
How to use checksums
d453a8243699a690bc6ab5a2accdc720d48015644baaeb41521707d9765ac6a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page