aflowbeta

Conversational process runtime.

Aflow runs work that unfolds over days and weeks. A skill is a directed graph of typed steps, and every task carries its own model, tool grant and output contract. Memory is stored in the space and supplied to each new run. Sessions are shared: several people work alongside the agent, resolve the decisions it pauses for, and continue the work in any later session.

Access is limited to a few invited testers — bring-your-own-model-keys.

Sign in ›Request an invite

How it works

Durable execution

A skill runs as a durable, resumable process.

Starting a skill creates a run: a process that survives restarts, pauses for input without timing out, and resumes from the step that stopped. Every step records its operation, inputs, outputs, duration, token cost and status. A run starts from a conversation, a schedule, or an inbound webhook.

space · modelling  /  chat
KA
Karim

Push the house-prices model past 0.85. Start from last week's feature set and keep going until it clears.

Representative run · a fixed example, drawn with the product's own surfaces.

Conversation

Ask in the space. The Helmsman selects the skill, fills its inputs and starts the run.

human.chat.ask
Schedule

Cron, one-shot, or on-completion of another run. Leased and de-duplicated, so a fire happens once.

agent.schedule.* · 0 7 * * 1
Webhook

A public HMAC-verified endpoint per space. Filter and map the payload, then start a session from it.

POST /v1/webhooks/ingest/…

Skills & contracts

A skill is a typed DAG of tasks.

Three fixed roles run every skill: one holds the conversation and delegates, one executes a single task, one reviews finished runs. The skill itself is an authored graph, and each task declares the model, tool grant, attempt budget and output shape it runs under.

fixed agent roles · identical in every space
Helmsmanagent

Holds the conversation, reads the space, decides what to start, and delegates a task.

Never executes a task itself.

Runneragent

Receives one fully specified task, works it, returns a value that satisfies the contract.

Never delegates, and never spawns another agent.

Coachagent

Reads finished runs against recorded evidence and proposes changes to the skill.

Never applies a change; an operator ratifies it.

skill · tabular-model-tuning  /  designercontract valid
Opstart
Load and profile data
compute.sandbox.exec
Agent
Engineer features
cybernetic-runner
glm-proretry 2
Op
Train baseline
compute.sandbox.exec
Op
Train variant
compute.sandbox.exec
Agent
Tune hyperparameters
cybernetic-runner
claude-sonnet-5
Human
Approve submission
Awaits operator input
Op
Submit entry
api.http.call
Op
Record learnings
learner.record
skill · tabular-model-tuning  /  task tune-hyperparams
output contractenforcementvalidity
{
  "type": "object",
  "required": ["lbValue", "params", "foldScores"],
  "additionalProperties": false,
  "properties": {
    "lbValue": {
      "type": "number", "minimum": 0, "maximum": 1,
      "description": "The cross-validated score this run achieved.
                      Reported from the sandbox run, never estimated."
    },
    "foldScores": {
      "type": "array", "minItems": 5, "maxItems": 5,
      "items": { "type": "number" }
    },
    "params": {
      "type": "object",
      "required": ["learningRate", "maxDepth", "nEstimators"]
    }
  }
}

Fixed agent topology

Multi-agent systems commonly let the model decide the org chart at runtime, spawning sub-agents and negotiating who does what. A run assembled that way is hard to reproduce, budget or debug. Here the three roles and their wiring are identical in every space and every skill, and the graph is authored before the run starts — two operations run in parallel because the graph says they can. Only the per-task configuration changes.

Schema validation on every task output

What the contract enforces is shape: required fields present, types correct,url matching ^https?://. A turn that misses any of it is rejected and re-run against its attempt budget, and a model that keeps missing parks the run as a contract violation with the failure named.

Approval-gated proposals change the graph

The Coach reads finished runs against recorded evidence and proposes a change to the graph, which an operator ratifies. Validity is recomputed on every read, so a proposal that would break the skill is reported as such before it is applied.

Human-in-the-loop

Tiered approval gates on writes.

Every catalog endpoint carries a write-risk tier. Medium and high-risk calls pause after the request body is resolved, show the exact bytes to be sent, and resume only on an authenticated approval.

space · modelling  /  action center
Needs you3 open
Approve a writehigh risk you
DELETEkaggle.com/api/v1/datasets/versions
{
  "dataset": "house-prices-features",
  "version": 4,
  "reason": "superseded by target-encoded v5"
}
Reason (optional)
Connect Kaggleconsent

A task needs a Kaggle binding this space doesn't have yet. The run is parked, not failed — it picks up where it stopped once the connection exists.

Ratify a Coach proposalskill change

Raise the fold count from 3 to 5 before scoring. Evidence: fold variance exceeded the score gap on 4 of the last 6 runs.

Multiplayer

Sessions are multiplayer, with live presence.

Sessions carry a durable participant roster and live presence. Any member can take the decisions a run is waiting on, and shared applet state is written through the same gateway the agent uses.

session · run-09-tuning ·  3 participants
KAKarimviewing run #9
MRMiratyping…
JDJonaslast seen 14:02
Approve submissionunassigned · anyone with accesswaiting
ui.applet.act
Chessactivev12you · whiteagent · black
waiting for a move

A durable participant roster

People are invited into the run itself, so someone who joins on Thursday reads what happened on Monday. Presence is delivered on the same event stream as the run: who is here, who is typing, who is looking at which step.

One write path for people and agents

A click in the applet and an agent calling ui.applet.act go through the same gateway: authorize the seat, validate the input, compare-and-swap on the version, bound the patch, snapshot. Every action carries an id, so a repeat replays and a stale one comes back as a conflict.

RBAC follows space membership

Permissions come from the space, so there is one model to keep in sync and no shareable back door into a run. An approval waiting in the Action Center can be assigned to a named owner.

Memory

Three tiers of memory the agent can read.

The conversation it is in, the ledger of past skill executions, and the space store every skill and agent shares. Each agent turn gets a curated attention window drawn from all three, itemised so you can see what went into it.

space · modelling  /  memory /  modelling/
Switch to search mode...
Directories · 3
runs9 dirs, 31 docs
datasets0 dirs, 12 docs
learnings0 dirs, 14 docs
Files · 3
baseline.md2.1 KB
feature-spec.json4.6 KB
open-questions.md3.1 KB
modelling/baseline.mdmarkdownembeddedv3

Encoding choices

Target encoding beat one-hot on the high-cardinality columns by 0.011 lbValue, and the gap held across all five folds. Report the fold spread alongside the mean; a single-fold claim has misled two runs already.

Recorded by run #8. Superseded the note in [[cv-fold-variance]], which measured on three folds.

Links from this document1 not written yet
cv-fold-variance.md×2
run-08-summary.md
target-leakage.md
Referenced by2
open-questions.md
run-11-summary.md
curated attention ·  assembled for this turn
Context~48.2k / 200.0k est (24.1%)actual 51.3k in
System 2.1kContext 31.4kTools 4.8kHistory 9.9kΔ +3.1k unattributed

The conversation it is in

The agent reads back its own thread, including earlier tool results. Large results are held by reference, so a 40MB artifact stays addressable without ever occupying the window.

The ledger of past executions

It can look up a specific skill or a specific past run — its steps, inputs, outputs, scores and cost. That is how a run started in one session is picked up in another, and how the Coach reviews what happened.

The space store every skill shares

Documents, notes and recorded learnings sit in one space-scoped store that every skill and agent in that space reads and writes. A task declares the scope it needs, and reads are budgeted, so what reaches the window is curated for that turn.

Wikilinks and backlinks

A note names a related idea inline as [[a-wikilink]] and the store resolves those into a graph: what this document references, what references it. A link to a note nobody has written yet is kept as a ghost, which is how the agent finds the gaps worth filling.

Embedded and indexed on write

A write queues the document for indexing and reports the status back. Content is split by what it is — prose by paragraph, JSON by node, a dataset by row — so a large file stays searchable in full. Rows land in the text index and prose in the vector index, which is why grep and semantic search reach different things. Images, audio and video are stored and addressable, and skip embedding.

Goal-driven campaigns

Campaigns loop until the goal is met.

A skill declares a goal and the outcomes that satisfy it. A campaign binds it to a metric, a direction and a target, then runs it repeatedly — each run scored, plotted, and recording what it learned for the next run to read. The loop stops when the outcomes are met, or on its run, cost or time budget.

skill · tabular-model-tuning  /  performance
DesignPerformanceRuns
activelbValue ≥ 0.8500 · maximize8 scored runs
targetScore: 0.85seed: 7folds: 5
0.74000.77000.80000.83000.8600#1#4#8⚙ targetScore, seed0.85000.8241
Best0.8241
Latest0.8241
Target0.8500
To go0.0259
Rolling baselineoverall 0.83 · n=12healthybreach if overall < 0.62

Integrations

Built-in operations, your APIs, and MCP tools.

A task can call any of 165 built-in operations. Beyond those, any HTTP API and any MCP server becomes callable the same way, installed into a single space and granted to individual tasks.

what a task can call
Orchestrate and delegateworkflow · skill · agent38Reach external systemsapi · mcp · search35Remember and learnmemory · learner23Judge and improveeval · guardrail · proposal22Generate and renderai · ui21Set up a spacespace · catalog · store · integration15Involve peoplehuman · user6Write and run codecode · compute5
GrantedA task holds only the operations its capability grant names2 of 165 on this task
GitHub
Slack
Notion
Linear
Jira
Stripe
Twilio
Airtable
Resend
Brave Search
arXiv
PubMed
Semantic Scholar
Wikipedia
GMGmail
CAGoogle Calendar
SHGoogle Sheets
VCVercel
SESentry
CFCloudflare
FCFirecrawl
PGPolygon.io
NANewsAPI
FRFRED
WBWorld Bank
OWOpenWeather

One capability surface: REST and MCP

An HTTP endpoint and an MCP tool arrive as the same kind of capability, discovered, bound and called through the same path. Aflow is itself an MCP server, so any MCP client can drive it in the other direction.

Installed per space

Connectors, skills and applets install into a space and stay scoped to it. Two spaces can hold two different Notion accounts, each blind to the other's credentials.

Least privilege by default

An agent starts from a small default set, and each task declares the operations and endpoints it may call. An operator sets what the default is for the space.

Models & BYOK

Model choice per task, on your own provider keys.

Frontier models and open weights are addressed through one catalog, with the model set per task. Aflow calls each provider with the credentials you supply.

the model catalog
FrontierGPT-5.6 TerraClaude Opus 4.6Claude Sonnet 5Gemini Pro 3.1Qwen3.7 Plus
Open weightsGLM-5.2Kimi K3DeepSeek V4 ProMiniMax M3GPT-OSS 120B
ProvidersOpenAIAnthropicGoogleFireworksOpenRouter
Per taskglm-proclaude-sonnet-5in the same skill

Coding agent

Design and run full coding and review loops.

Author the coding pipeline, define branches per case, and automate it with human approval gates. Each run records learnings that the next one reads.

code.agent.run ·  harness claude  ·  repo aflowai/modelling @ mainworking
bashruff check pipelines/
Isolationno docker socket · no host mounts · non-root · cap-drop ALL · https-only remotes
OutputpatchRef · 1 commit · secret-scannedno push authority

Have a look.

Access is limited to a few invited testers, on your own model keys. If you're working on similar problems, or want the architecture in more detail than a landing page can carry, get in touch.

Sign in ›Request an invite