Developers
Build on a platform designed to be extended.
Call it, script it, and add your own connectors, nodes and tools. Each surface below says whether it is available, in preview or planned.
# Each deployment has its own endpoint and bearer token.
curl -X POST "$DOOHORIZON_URL/api/ml/serve/$DEPLOYMENT_ID/predict" \
-H "Authorization: Bearer $DEPLOYMENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "rows": [
{ "tenure_months": 14, "plan": "pro", "tickets_90d": 3 }
] }'
# The same deployment can explain its answer:
# POST /api/ml/serve/$DEPLOYMENT_ID/explain
# and describe itself:
# GET /api/ml/serve/$DEPLOYMENT_ID/schemaThe developer platform
Eleven ways in.
No surface is described as shipped unless it is. Planned items are the direction, not documentation.
API
PreviewA versioned HTTP API with a consistent error envelope and a request id on every response.
- Projects, data sources, datasets, dashboards and exports under /api/v1
- Model serving: predict, explain, health, metadata and schema per deployment
- A public health endpoint and a token-protected metrics endpoint
Authentication
AvailablePeople and machines authenticate differently, on purpose.
- Signed, httpOnly session cookies for interactive use
- A bearer token per model deployment
- A device token for each paired desktop agent, revocable from the browser
SDKs
PreviewMLDoo ships a plugin SDK today; language SDKs for the wider platform are planned.
- Package a custom MLDoo component with typed ports and parameters
- Plugins are reviewed and approved before a flow can use them
- TypeScript and Python client SDKs are planned
CLI
PreviewThe desktop agent has a command line today; a platform CLI is planned.
- Pair a computer, share a folder and check status from a terminal; the agent window says when an update is available
- Run the agent headless and install it to start at login
- A CLI for deploying and promoting platform assets is planned
Webhooks
AvailableStart workflows from events in other systems, and tell other systems what happened.
- A Webhook Trigger gives each flow its own address; callers sign the body with HMAC-SHA256
- Per-flow rate limits, with Retry-After when a sender loops
- Notify posts to Slack, Microsoft Teams or any chat webhook; REST API Output calls any endpoint
Connectors
AvailableFirst-party connectors today, with a public connector interface on the roadmap.
- Nine databases (MySQL, SQL Server, PostgreSQL, Azure SQL, Oracle, MongoDB, Snowflake, BigQuery, DuckDB), S3, SharePoint, FTP/SFTP, spreadsheets, cloud drives, email, CRM and student-information systems
- Any REST API as a pipeline step
- A published interface for third-party connectors is planned
Custom nodes
PreviewExtend the canvas with your own steps.
- MLDoo plugins add components to the model designer
- A SQL step and formulas cover custom logic in FlowDoo today
- Custom FlowDoo nodes are planned
Visualization extensions
PlannedAdd chart types to VizzDoo beyond the built-in renderers.
- A declarative chart specification
- Server-side rendering inside the existing sandbox
AI tools
PlannedExpose your own actions to AIDoo agents with typed inputs and outputs.
- Workflows and deployed models as tools
- Per-tool permissions and approval rules
Marketplace
PlannedPublish connectors, templates, models, agents and components with clear attribution.
- First- and third-party assets side by side
- Review before listing
- Commercial terms will be published before the marketplace opens
Local development
AvailableRun the whole platform on your own machine.
- Node.js 20.9 or later; one command starts a development server
- Everything is configured with environment variables
- Type-check, lint, unit and end-to-end test suites are included
Code
What it looks like.
The first sample runs against MLDoo today. The second is conceptual: it shows the developer experience we are designing toward, and is labelled so.
# Each deployment has its own endpoint and bearer token.
curl -X POST "$DOOHORIZON_URL/api/ml/serve/$DEPLOYMENT_ID/predict" \
-H "Authorization: Bearer $DEPLOYMENT_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "rows": [
{ "tenure_months": 14, "plan": "pro", "tickets_90d": 3 }
] }'
# The same deployment can explain its answer:
# POST /api/ml/serve/$DEPLOYMENT_ID/explain
# and describe itself:
# GET /api/ml/serve/$DEPLOYMENT_ID/schemaimport { DooHorizon } from "@doohorizon/sdk"; // conceptual
const doo = new DooHorizon({ token: process.env.DOOHORIZON_TOKEN });
// Run a FlowDoo workflow, score the result with an MLDoo model,
// and let an AIDoo agent decide what happens next.
const run = await doo.flows.run("customer-health", { segment: "enterprise" });
const scored = await doo.models.predict("churn-risk", run.output);
const decision = await doo.agents.ask("retention-advisor", {
context: scored.explanations,
requireApproval: true,
});Start building.
Open the documentation, start free, and tell us what you want the platform to expose next.