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:
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 | Audit logging, custom roles, 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.
| Area | What you get |
|---|---|
| Descartes, your company brain | Each company sets what its brain is for (answers from documents and procedures, steering data-science projects, or both), who is asking, its goals and its projects in progress. Settings layer by project, workspace, company and Only me; the most specific wins. See Descartes. |
| Procedures that are screenshots | Word files made only of screenshots, and ZIPs of them, are read verbatim, page by page, into searchable knowledge. Add files keeps going per file and tells you exactly what was added. |
| Answers as the procedure | Ask the way a customer would and OctOpus answers as your agent on the line: the customer’s answer first, or the case one check at a time, with the source cited. Every reply knows whether Descartes was on, what it found and what it cited. |
| Calls to CRM, from the chat | Transcribe a call with OctOpus ASR 1, 4, 5 or 6, confirm the transcript, code it against your project’s categories (using your Descartes procedures), approve it for a customer and track the follow-up, all by asking. See Calls & CRM. |
| The app | Descartes and Code in the main bar, the brain switch in the top bar, a full-screen chat, and interface translations that load instantly instead of being translated in your browser. |
| Company licenses | A license can name your company email domains: every colleague who signs in with a verified company address takes a seat by themselves, until the seats run out. |
| Command line 0.5.6 | /calls and /recordings in the terminal, and the whole call workflow in plain language. See Command line. |
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 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 connect it to their own number in minutes; calls are 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.
Descartes is what OctOpus knows about your company: your setup, your saved documents and procedures, your definitions, decisions and relationships. Open it from the Descartes tab; turn it on or off for your conversations with the brain switch in the top bar. With it on, every chat answer and every dashboard can use what your company has saved. With it off, nothing saved is read or written, and OctOpus says so instead of improvising.
Add files from the Knowledge section or attach them in chat and ask OctOpus to save them: documents, presentations, data, and ZIPs of them. Files that are only screenshots, a common shape for call-centre procedures, are read word for word, in reading order. Uploads run in the background with live status per file. New knowledge is private to you by default; sharing with a workspace or the company is always an explicit choice.
Ask in the main chat. A question that matches a saved procedure is answered as the procedure, never as generic advice: when a customer asks something they can do themselves, OctOpus answers them directly, as your agent on the line, ready to read out; when a case needs checks first, it guides you one check at a time and gives the whole procedure on request. Sources are cited, and the chat never retracts an earlier sourced answer because a later search found nothing.
Ask to remember, correct or forget something, or to save an attachment, and the change is made from the chat with your words as the evidence.
Recorded calls go from audio to a CRM ticket without leaving the conversation. Attach a recording with the composer’s + and ask; each step happens when you say so:
The same calls, projects and tickets are in the ASR workspace, and in the terminal with /calls and /recordings. Drafting call details uses your credits; reading, editing and sending do not.
Plain language, with as much or as little detail as you have:
predict churn forecast revenue per customer, monthly use a random forest 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 a random forest pins the entire run to that model. The plan card shows Models you asked for (with a clear button to take it back), a failed experiment is never repaired by switching to another model, and if your pinned model genuinely cannot run, the run fails honestly rather than quietly training something else. Model names are typo-tolerant.
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 evidence, never from the model's narration:
intact_at_issue);The card is cryptographically 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)
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 }
/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, checked 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 and never exposed to experiments or to the AI model.
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, experiment, 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. It never settles on one family out of habit: if a family stops earning its place, the next experiment tries something else.
OctOpus chooses the model family from what it measures on your data, states why on every experiment, and lets you name the model you want instead. The families it works with:
| Family | Best for | Notes |
|---|---|---|
| Gradient-boosted trees | Most tabular problems | Strong on mixed numeric and categorical data, at any size |
| Bagged trees | Noisy tabular data | Stable, hard to overfit, little tuning required |
| Linear models | Data with a mostly linear shape | Chosen when the data shows trees add nothing; easy to explain |
| Family | Best for | Notes |
|---|---|---|
| Tabular foundation models | Small tabular datasets | Pretrained, strong with little data and no tuning |
| Attention-based tabular networks | Wide tables with rich categoricals | Learn interactions between columns |
| Family | Best for | Notes |
|---|---|---|
| Lag-feature models | Panel and hierarchical forecasting | Calendar, lag and rolling features with any tabular model |
| Neural forecasters | Long horizons, seasonality, covariates | Static and dynamic exogenous variables supported |
| Family | Best for | Notes |
|---|---|---|
| Pretrained forecasters | Short or new series, zero-shot | Forecast with ranges before you have much history |
For very small datasets, OctOpus prefers regularised linear models, tree ensembles, nearest neighbours or support vector machines over deep nets: stable cross-validated estimates without overfitting.
Recommendation, ranking, and survival analysis are on the roadmap.
Every run captures its preprocessing in the model bundle, so a prediction applies exactly the same steps:
The pipeline is reproducible: the same model bundle applied to a new CSV produces the same features.
Every run uses an agent-blind holdout: a subset split off before any modelling starts, kept where no experiment can reach it, and pinned by content hash. The "winner" of a run is the model that generalizes to this holdout. Its metric is recomputed independently, never taken from the experiment'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 stream, 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
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)
OctOpus runs in your terminal the way a coding agent does: open octopus in a folder, talk to it in plain language, mention a file with @, and it profiles, cleans, plans, trains, evaluates and answers questions about your data with real computation — the same brain, the same runs and the same dashboards as the app, so a session in the terminal is a session in the app. Slash commands drive the mechanics; every question goes to OctOpus.
# install once, sign in once, then open a session in any folder $ python -m pip install --upgrade https://www.octoopus.dev/developers/sdk/octopus_ml-0.5.6-py3-none-any.whl $ octopus OctOpus v0.5.6 · the AI data scientist · https://www.octoopus.dev tables here: customers.csv (/data <file> or @file in a message) ❯ what drives churn in @customers.csv? ✓ customers.csv · 7,043 rows · 21 columns ⚙ computing the churn rate by contract type Contract type is the strongest driver: month-to-month customers churn at 43% … ❯ train a model to predict it, optimise AUC — go Plan task BinaryClassification · target Churn · metric AUC · hold-out carved ✓ run started · run_a1b2c3 ★ champion AUC 0.861 · hold-out 0.858 on 704 rows ❯ /predict new_customers.csv scored.csv ❯ /dashboard revenue and churn by segment ❯ code yesterday's call with Awa and send it to the CRM ⚙ drafting the call details · Billing · Follow-up needed · cited 3 transcript lines ❯ /calls follow_up # one-shot use from scripts and CI $ octopus -p "how many rows have a missing income?" --data customers.csv $ octopus run customers.csv --goal "predict churn, optimise AUC" --budget 3 $ octopus predict --run run_a1b2c3 new_customers.csv -o predictions.csv $ octopus proof run_a1b2c3 # the signed certificate + its verification $ curl -X POST https://www.octoopus.dev/api/proof/verify --data @proof_card.json # anyone, no account
Inside the app too. The CLI tab (web and desktop) is the same session as a command line: what you type there goes to OctOpus exactly as the chat does, the thread, the brain’s working steps and the live training log print in the terminal, and the same slash commands work — nothing to install.
Commands inside a session: /files, /load, /data (a CSV, or a speech ZIP/folder of recordings and transcripts), /preview, /view, /plan, /train, /go, /watch, /status, /cancel, /runs, /use, /report, /artifacts, /get, /predict, /proof, /dashboard, /refresh, /transform, /model, /calls (CRM tickets from coded calls: search, open, resolved, follow_up), /recordings, /login, /new, /help. Everything else, Descartes and the call workflow included, is a plain-language request. A session is remembered per folder; octopus --new starts over. Point it at a private or local install with --base-url (or --local for a desktop install), pin a model with --model, and answer confirmations ahead with -y.
Prefer Python? The same 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 is a thin client over the public REST API — it never trains anything itself — so anything the terminal does, your own scripts can do with a plain HTTP call and a bearer token. Verification needs no account: post the certificate to /api/proof/verify. 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.
From your coding agent you can load and profile data, plan and start runs, follow them live, compare results, fetch artifacts, score new data, verify certificates and report ground truth, all through 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, access control, 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: 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 (numeric and categorical columns), 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 where no experiment can 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, 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: a sound model matched to your data and domain, which sets the bar every later experiment must beat.
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 anything trains.
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, run and scored. 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. OctOpus uses them for small tabular datasets and for 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.
The reviewable card (target · task · metric · budget · requested models) that gates every training run. Nothing trains until you validate it.
The plan OctOpus records before any experiment runs, updated with what each experiment taught it.
A complete loop: profile → discover → experiments → validate → ship. Identified by a unique run ID.
The engine policy that keeps a run from settling on one model family out of habit: a family that stops earning its place gives way to another.
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 model in the downloadable bundle.