macOS
Apple Silicon and Intel · macOS 11 or later
Download for macOS.dmg · Universal binary
Everything you need to actually use OctOpus: the web app, training runs, dashboards, transforms, predictions, verified model certificates, connectors, the API, the SDK, and the desktop and enterprise installs. It's the same interface as the app, in light or dark. Brand new? Start with the Quickstart, or take the visual walkthrough.
OctOpus runs one loop, end to end: connect data, it profiles and you ask questions, it trains and validates on a blind holdout, it delivers a proven model, you predict on new data; then it goes round again on the next batch. Each stop is a mascot; tap one to jump to that part of the guide.
OctOpus automates recurring data-science work for enterprise teams: give it data and a business objective, and it builds, validates, and delivers the model and report without requiring a data scientist to operate it. It is an autonomous AI data scientist: an agent that understands your data, frames the problem, runs its own experiments, learns from what fails, validates winners on a held-out set it cannot see, and ships the best model with a signed proof of its reported quality.
Three things make it different from classic AutoML:
Here's a complete run, start to finish (upload, plan, experiments, validated winner), in two minutes:
Everything you just watched is covered step by step in the sections below, same order as the Quickstart.
From zero to a validated model in five steps:
model.pkl.The plan card is a gate, not a suggestion. A training run only ever starts after you validate the plan: from the card's button, or by saying go / yes in chat. If you ever want out, say stop.
The desktop edition runs the whole research loop on your own machine — profiling, training, dashboards and predictions all execute locally, and models, workspaces and the database stay on your disk. Pick your platform, then follow the six steps below.
Desktop
The full research loop on your own machine — your CPU, your disk, your data. Models, workspaces and the database stay on your hardware.
Apple Silicon and Intel · macOS 11 or later
Download for macOS.dmg · Universal binary
Windows 10 and 11 · 64-bit
Download for Windows.exe installer · 64-bit
Ubuntu 20.04+, Debian and Fedora · x86_64
Download for Linux.AppImage · x86_64
OctOpus Desktop is licensed per user and managed by your organization's administrator. Sign in once to claim your seat, then activate your key under Settings → License & seats.
.dmg and drag OctOpus to
Applications. Windows: run the installer. Linux: chmod +x the AppImage
and run it, or sudo apt install ./OctOpus-linux-amd64.deb.No licence yet? The app installs and opens without one; training, dashboards and chat activate when a key is applied. Contact us.
| Edition | Where it runs | Best for |
|---|---|---|
| Web app: /app | Managed cloud | Fastest way to start. Free tier; data encrypted at rest. |
| Desktop: /desktop | Fully on your machine | Sensitive data that can't leave the device (HIPAA / PCI / AML). Bring your own LLM key. |
| Enterprise: /enterprise | Your AWS / GCP / Azure VPC | SSO/SCIM, audit logging, private models, compliance controls. |
All three run the same engine, the same verification layer, and the same app. The rest of this guide applies to every edition.
Three ways in, all landing in the same place. Once loaded, everything (questions, training, dashboards, transforms) works identically:
On load, OctOpus profiles the dataset (types, distributions, missingness, target candidates) and posts a short data-quality review: things a reviewer would flag before training, like an all-unique ID column that a model would memorise. Address the high-severity ones before saying go.
Chat is the primary interface. With data loaded, OctOpus is a tool-using agent: when you ask a question about your data, it computes the answer against the actual rows (pandas and an embedded SQL engine run server-side) rather than guessing from a summary. Answers that came from real computation carry a provenance check mark.
Charts never render in the chat column by design. Every visual lives on the Dashboard, where it's interactive and presentable. The chat answers with the numbers.
Tap the mic and talk. OctOpus holds a real-time voice conversation about your data: it detects the language you're speaking automatically, answers out loud, and you can interrupt it mid-sentence. Major business languages are answered natively, and additional languages are supported on request. Pick your voice language from the mic menu; voice notes and call recordings can also be transcribed into datasets you can train on.
Teams on an enterprise plan can dial OctOpus and talk to it: a real phone call, answered by the same brain as the chat. Ask product questions, talk through a modeling problem, or get pointed to the right part of the app; the agent answers in short spoken sentences and hands anything screen-shaped back to the app. Operators wire it to their own number in minutes (Twilio webhook: see the self-hosting docs); calls are signature-verified and conversations aren't persisted.
The domain switcher (Data Science / Data Analysis / Data Engineering) pins how your messages are interpreted. Data Analysis is the default: questions, stats, dashboards. Pin Data Science and messages refine the training plan; pin Data Engineering and every message becomes a transform step. Unpinned, OctOpus routes each message by intent and asks before switching you across domains.
Plain language, with as much or as little detail as you have:
predict churn forecast revenue per customer, monthly use TabPFN and only one experiment classify tickets by urgency, optimise F1
OctOpus analyses the data against your goal and proposes a plan: target column · task · metric · budget, plus any models you named. Everything is editable on the card: swap the target from a dropdown of your real columns, change the task or metric, set the number of experiments.
The budget is how many experiments the run may spend. Say it in numbers or words (3 experiments, only one experiment, just a single experiment all work) or set it on the card / the sidebar slider. What you said, what the card shows, and what actually runs are kept in lock-step.
Name a model and it becomes part of the agreement: only use TabPFN pins the entire run to TabPFN. The plan card shows Models you asked for (with a clear button to take it back), the repair loop is forbidden from swapping families, and if your pinned model genuinely cannot run, the run fails honestly rather than quietly training something else. Model names are typo-tolerant (tabfpn still pins TabPFN).
Infrastructure problems never change your model. If a run hits an environment error (a blocked file write, a missing cache), OctOpus says so plainly and repairs the environment usage. It does not use the crash as an excuse to switch model families.
When the run finishes you get, per run:
Every completed run issues a signed, machine-verifiable certificate (proof_card.json) assembled from the run's own artifacts, never from the model's narration:
intact_at_issue);The card is canonically serialized, hashed, and HMAC-signed. Change any number; verification fails. Missing evidence is stated ("not_carved"), never invented.
# fetch a run's certificate + live verification report
GET /api/run/{run_id}/proof
# verify ANY certificate: public, no auth; verification is the point
POST /api/proof/verify (body: the certificate JSON)
# verify fully offline
python proof_card.py verify proof_card.json
When ground truth arrives later, the certificate is amended with realized production accuracy and re-signed. The previous signature is preserved in a chain, so the document's history is append-only. Hand the certificate to anyone; they don't have to trust you, or us.
POST /api/run/{run_id}/predict-file
Content-Type: multipart/form-data
file: <your CSV with the same feature columns>
→ 200 OK
{ "predictions": [0.812, 0.034, ...], "total_rows": 1024 }
model.pkl + prepare.py from Artifacts and serve them yourself with joblib.load./api/schedules; see Monitoring.Ask for one in chat: bi, dashboard, or a brief like build a dashboard about revenue by region. OctOpus composes a full analytical page from your data: KPI scorecards, charts chosen for the data's shape, and a written narrative whose figures are fact-checked against the real rows. Composing is a background job that can take a minute or two; progress streams in the Dashboard tab.
Two ways to reshape data before (or instead of) training, both producing an auditable, replayable pipeline (Power-Query-style applied steps, written as pandas by the model, gated by a safety layer, and previewed before anything is committed):
Pin the Data Engineering domain and every chat message is a transform instruction: drop the website column fill missing ages with the median one-hot encode contract type. Each step shows the resulting preview; the applied-steps stack is visible, reorderable and undoable.
/transform drop the website column # apply one step
/transform list # show the applied-steps stack
/transform clear # revert to the original dataset
/transform save # export the pipeline to the notebook
Asking for a general clean-up (clean this dataset) proposes a reviewable plan with Apply/Cancel; it never mutates your data without confirmation. A derived training target (e.g. a churned flag that doesn't exist yet) is created by a transform first, then the training plan points at the new column.
OctOpus can run a Kaggle competition end to end, with your own Kaggle account, spending your own quota, under your name:
submission.csv conformed to the sample (column order, header case, ID handling, class label decoding).Two hard Kaggle limits we state rather than work around: accepting a competition's rules can only be done on kaggle.com in a browser, and code/notebook competitions cannot be submitted via the API.
All connectors land data in the standard dataset cache, so discovery, training, chat and predict consume it exactly like an upload. Credentials are encrypted at rest with Fernet using a per-install random secret and never shown to LLM-authored code.
Governed imports (column-level access policy, PII masking, materialization audit, end-to-end lineage) are available for enterprise workspaces.
OCTOPUS_MAX_UPLOAD_MB, OCTOPUS_MAX_DATASET_MB), not architectural limits.
The OctOpus engine is a closed-loop research agent. Where a traditional AutoML platform runs a fixed pipeline (pick from a model catalog, hyperparameter-search inside fixed bounds, ensemble the top-K), OctOpus operates the way a senior data scientist would: profile, plan, code, run, diagnose, iterate, validate, ship. Each round is a fresh decision informed by the prior round's results.
Experiments are task-aware: the agent starts from a sound, domain-matched baseline and moves to stronger and more specialised model families as the evidence warrants. A rotation guard stops it settling on one family: if a family stops earning its place, the next experiment must try something else.
| Model | Best for | Notes |
|---|---|---|
CatBoost | Tabular with categorical features | Handles categoricals natively, robust default for the baseline experiment |
LightGBM | Large tabular datasets | Fastest GBM; preferred for >100k rows or wide feature sets |
XGBoost | Tabular regression / classification | Strong baseline; often the rotation alternative to LightGBM |
| Model | Best for | Notes |
|---|---|---|
TabPFN | Small tabular (n < 10,000) | Foundation model for tabular; zero-shot, no tuning required |
TabNet | Mixed-type tabular | Sparse attention over features; good interpretability |
FT-Transformer | Wide tabular with rich categoricals | Feature tokenizer + transformer encoder |
SAINT | Tabular with column interactions | Self-attention across rows AND columns |
| Model | Best for | Notes |
|---|---|---|
NBEATS | Univariate forecasting | Stacked basis-expansion blocks; strong baseline |
NHITS | Long-horizon forecasting | Hierarchical interpolation, handles seasonality cleanly |
PatchTST | Long context windows | Patch-based transformer for long-horizon time series |
xLSTM | Sequence with memory | Extended LSTM, strong on long dependencies |
TFT | Multi-horizon with covariates | Temporal Fusion Transformer; static + dynamic exogenous variables |
| Model | Best for | Notes |
|---|---|---|
Chronos | Univariate forecasting, zero-shot | Amazon's time-series foundation model |
TiRex | Probabilistic forecasting | NX AI; strong on irregular series |
TimesFM | General-purpose forecasting | Google Research; pretrained on hundreds of billions of timepoints |
Moirai | Mixed-frequency forecasting | Salesforce; handles multiple frequencies in one model |
For datasets under ~500 rows, OctOpus prefers Ridge, ElasticNet, RandomForest, ExtraTrees, kNN, or SVM over deep nets: stable cross-validated estimates without overfitting.
timm, for larger labelled datasets.Recommendation, ranking, and survival analysis are on the roadmap.
OctOpus generates a prepare.py per run that captures every preprocessing step:
The pipeline is reproducible: the same prepare.py applied to a new CSV produces the same features.
Every run uses an agent-blind holdout: a subset split off before any feature engineering or model code is shown to the LLM, stored outside the agent's workspace, and pinned by content hash in a manifest. The "winner" of a run is the model that generalizes to this holdout. Its metric is recomputed independently, never taken from the training script's own claims.
On top of the holdout, the engine enforces vetoes that no experiment can talk its way past:
Validation strategies: stratified k-fold (classification), k-fold (regression), time-series split (no future bleeding into training; mandatory when a timestamp is detected), group k-fold (explicit group columns), walk-forward (forecasting).
Hyperparameters are tuned against a cross-validated objective, with the search budget scaled to the size of your dataset and unpromising trials cut short rather than run to completion.
Once there are several strong candidates, OctOpus will combine them into an ensemble, deliberately mixing different kinds of model, since agreement between similar models adds little. Where a single model is unstable, it is averaged over multiple fits instead.
Everything the app does is an HTTP call. The core surface:
| Endpoint | What it does |
|---|---|
POST /api/discover | Profile a dataset + propose the training plan (target, task, metric, validation). |
POST /api/run | Start a research run from a validated plan. |
GET /api/run/{id}/stream | Live progress as Server-Sent Events, the same feed the app renders. |
GET /api/run/{id}/status | Poll a run: experiments, best model, report. |
POST /api/run/{id}/cancel | Stop a run; best results so far are kept. |
POST /api/run/{id}/hint | Send live guidance into a running research loop. |
POST /api/run/{id}/predict-file | Score a CSV against the run's validated winner. |
GET /api/run/{id}/proof | The run's OctoProof certificate + a live verification report. |
POST /api/proof/verify | Verify any certificate. Public, no auth. |
POST /api/connect | Connect an external data source (optionally persisting it as a governed, trainable dataset). |
GET/POST /api/schedules | Recurring runs and scoring with drift detection. |
/api/workspaces/{name}/guardrails | Workspace-local rules every future run must respect. |
Authenticate with your session token as a Bearer header. The full route list ships with the server's OpenAPI spec at /openapi.json.
The octopus_ml client wraps the API for notebook and pipeline use:
pip install octopus-ml-sdk
from octopus_ml import OctopusClient
import pandas as pd
client = OctopusClient(base_url="https://www.octoopus.dev", api_key="...")
df = pd.read_csv("customers.csv")
result = client.run(df, goal="predict churn, optimise AUC")
print(result.best_model, result.metrics)
preds = client.predict(result.run_id, df_new)
Every OctOpus surface is scriptable: drive a run, score a file, or verify a model certificate from a terminal, a CI job, or an agent. The SDK wraps the REST API; the platform ships as importable Python; certificates verify with zero dependencies.
# 1 · install the client and run a model from a CSV $ pip install octopus-ml-sdk $ octopus run customers.csv --goal "predict churn, optimise AUC" --budget 3 ✓ profiled 7,043 rows × 21 cols · target=Churn · task=binary · metric=AUC ✓ exp1 AUC 0.842 exp2 AUC 0.857 exp3 AUC 0.861 ★ winner · holdout AUC 0.858 · proof_card.json signed # 2 · score new data against the validated winner $ octopus predict --run run_a1b2c3 new_customers.csv > predictions.csv # 3 · verify a model certificate: anywhere, offline, no account $ python proof_card.py verify proof_card.json [PASS] payload_hash: content matches its recorded hash [PASS] signature: issued by the holder of this key VERIFIED
Prefer Python? The same three steps in a notebook or pipeline:
from octopus_ml import OctopusClient
client = OctopusClient(base_url="https://www.octoopus.dev", api_key="...")
run = client.run(df, goal="predict churn, optimise AUC", budget=3)
preds = client.predict(run.run_id, df_new)
cert = client.proof(run.run_id) # the signed certificate
The octopus command wraps the public REST API, so anything the CLI does, your own scripts can do with a plain HTTP call and a bearer token. Verification (proof_card.py verify) needs nothing but Python. Hand a certificate to anyone.
OctOpus provides a Model Context Protocol server, so Claude Code, Cursor, or any MCP-aware agent can drive the platform as tools. It's included with the Desktop and Enterprise editions and connects to your OctOpus instance; setup instructions ship with your install.
Exposed tools include profile_csv, grade_dataset, estimate_run_cost, discover_direction, start_research_run, resume_run, get_run_status, stream_run_events, poll_until_done, compare_runs, list_run_artifacts, fetch_artifact, export_endpoint, predict, bootstrap_project, list_priors, get_realized_accuracy / submit_ground_truth, and the WMO dataset search / import pair, each mapping to the same governed REST API the app uses.
OctOpus can run entirely inside your own environment: fully on-device via the Desktop edition, or inside your own AWS / GCP / Azure account as a private / VPC install via OctOpus Enterprise. Both run the same engine, the same agent-blind holdout governance, and the same signed proof cards as the managed app, with bring-your-own model keys. Your data never leaves your environment.
Provisioning, configuration, SSO/SCIM, and managed updates are handled with your team during onboarding. Talk to us at ceo@octoopus.dev or see /enterprise.
The model you pick is yours. OctOpus is multi-provider by design (Claude, GPT, Gemini, DeepSeek, Kimi, NVIDIA NIM, or your own self-hosted endpoint), with an automatic fallback ladder when a provider is unavailable.
The fully on-device edition runs entirely on your machine. Point it at a folder of CSV/Excel/Parquet files and it runs the whole pipeline right there. Your data never leaves the device; the only outbound traffic is to the LLM provider you configure. Same app, same engine, same signed proof cards. Ideal for HIPAA / PCI / AML and air-gapped-adjacent environments. Here it is on a real desktop:
Deploys inside your AWS, GCP, or Azure account as a private / VPC install: SSO/SCIM, audit logging, custom roles, dedicated workspaces, governed data integration (column-level policy, PII masking, lineage), and the same agent-blind holdout governance as the public app. Compliance documentation (SOC 2, GDPR, HIPAA, PCI) available under NDA: ceo@octoopus.dev. See /enterprise.
Full posture at /security. Highlights:
Once a model is in use, OctOpus monitors input drift (KS test on numerics, chi-square on categoricals), prediction drift, schema drift (columns gained/lost/renamed), and, when ground truth arrives, realized performance, which is joined back to logged predictions, stamped onto the run's proof card, and used to re-rank what the engine tries first on similar data next time.
Every run also ships explainability artifacts: feature importance, SHAP values (bar + beeswarm), partial-dependence plots, and per-prediction reasoning in the Predict tab.
A test set kept outside the agent's workspace so the LLM-authored experiment code cannot read it. The validated winner of a run is the model that holds up on this set.
"Automated machine learning": historically a fixed pipeline (model catalog → grid search → ensemble). OctOpus uses the term loosely; the engine is autonomous, not just automated.
An AI agent that runs the full data-science loop (profile, frame, code, experiment, diagnose, validate, deploy) with minimal human input. Each round is a fresh decision, not a fixed step in a pipeline.
The first experiment of every run. Domain-matched single model + heavy feature engineering. Tabular → CatBoost / LightGBM. Time series → LightGBM with lag features. NLP → TF-IDF + Logistic Regression. Images → ResNet18.
Estimating model performance by training on K-1 folds and validating on the K-th, rotated K times. Stratified k-fold by default for classification, k-fold for regression, time-series split for forecasting.
The step where OctOpus picks the target column, task type, validation strategy, and headline metric from your plain-English goal and the data profile. Surfaced on the plan card for confirmation before any code runs.
A deterministic rule that overrides the agent's own KEEP decision: suspiciously-perfect scores (leakage), degenerate predictions, and holdout contradictions are discarded no matter how good the number looked. Vetoes are recorded on the proof card.
One model-building attempt: a complete training script, executed, with its metrics parsed. A research run produces 1 to 15 experiments depending on the budget.
A model pretrained on a very large dataset, applied zero-shot to a new task. Used by OctOpus: TabPFN (tabular), Chronos / TiRex / TimesFM / Moirai (time series).
The single number that defines "best" for a run. Picked per task (ROC-AUC for binary classification, RMSE for regression, WAPE for forecasting), or set by you on the plan card.
The content-hash record of the holdout carve. A resumed run must match it exactly; a changed or missing holdout fails loudly instead of silently re-splitting.
When a feature accidentally encodes the answer (a column populated AFTER the event you're predicting, an ID with target information, a time-leaking aggregate). Flagged at profiling; vetoed at scoring.
The signed, machine-verifiable certificate every run issues: holdout hashes, independently recomputed metrics, vetoes, substitutions, baseline floor. Verifiable by anyone at POST /api/proof/verify or offline.
The reviewable card (target · task · metric · budget · requested models) that gates every training run. Nothing trains until you validate it.
The research spec written by OctOpus before any experiment runs. The next experiment reads it back.
A complete loop: profile → discover → experiments → validate → ship. Identified by a unique run ID.
The engine policy preventing the agent from getting stuck on one model family: same family twice in the last eight experiments → the next must rotate.
Per-row, per-feature contribution to the model's prediction, shipped with every run's artifact bundle.
An ensemble where a meta-learner is trained on the out-of-fold predictions of multiple diverse base learners.
The single best model from a run, judged on the agent-blind holdout with an independently recomputed metric. The artifact downloaded as model.pkl.