neomatrix369 github.io

Doubleword
Platform

Developer Learning Hub v5.1 · verified build · 5 Oct 2026

36
models (counted)
26
integrations
13
workbooks
14
pages read in full

Every slide carries a status pill. ✔ verified read on 5 Oct 2026 · ↻ corrected v5 was wrong, now fixed · ◷ carried from earlier crawl, not re-read · ? unverified could not be confirmed

←→ navigate · Esc or ☰ slide map · R or ☆ toggles docs-review panels · every slide has a shareable #sN link

Section 01

Orientation

What Doubleword is, how the tiers differ, and how to make a first call

How far to trust this deck

What "verified" means here

  • 14 pages read in full on 5 Oct 2026: intro, async, batch, models, prompt caching, reasoning, Anthropic compatibility, skill, autobatcher, one model page, llms.txt, the GitHub org page, the skill repo, and the marketing homepage.
  • About 12 more seen as search snippets (Pi, Rig, Daytona, Agno, Mastra, CrewAI, Google ADK, Control Layer pages, skill-page variants).
  • ~140 pages listed in the site's own llms.txt (my count). Most are indexed here by title and description only.
  • The sidebar of the live docs was used to check every docs link in this deck.

What changed from v5

  • Full price table rebuilt from the page; v5 had ~half of it from memory.
  • "Async up to 50% off / batch up to 75% off" removed. Computed from the table instead: ≈25% / ≈50% below realtime.
  • "Control Layer removed from docs" was wrong; see the ledger in Section 09.
  • Skill repo name, reasoning levels, Anthropic setup and Autobatcher details corrected.
  • Restored from v4: four diagrams and the docs-review panels.
Still not verified: Dedicated Realtime, Data Sources, Get Support, CLI pages, webhooks and organization details were read only as index entries or carried from the March crawl. They are flagged where they appear.

The platform at a glance

TierHow you call itLatencyList price vs realtime*Best for
RealtimeShared, rate-limited. Chat Completions, or Responses with service_tier: "priority"; background: true to submit and pollImmediatebaselineTesting, prototyping, prompt iteration. Model pages note "realtime availability is limited"
Asyncservice_tier: "flex" on Responses (or Chat Completions), or Autobatcher AsyncOpenAIMinutes; target <1 min to first token, with stated exceptions≈25% lower (middle half of models: 24–25%)Agents, background pipelines, production work that tolerates short delay
BatchJSONL upload, or Autobatcher BatchOpenAIUp to 24h (SLA)≈50% lower (≈33% below async)Datasets, evals, bulk generation
Dedicated RealtimeReserved capacity; contact sales (◷ index text)Immediatecustom, per-tokenProduction realtime without shared rate limits

*Computed from the models table: median of (1 − tier price ÷ realtime price) on output tokens across the 31 models that have a realtime price. Input tokens give the same medians. Intro page itself says only "Standard / Reduced / Lowest pricing".

Vendor claims on the Oct 2026 homepage (attributed, not independently checked): "up to 90% lower cost than closed-source APIs" · "93% average cache hit rates" · "4× cheaper agentic inference than OpenRouter" · "6 of the 10 models on the efficient frontier run on Doubleword" (Artificial Analysis Intelligence Index v4.3, cost at 24h batch rates for every provider) · GLM-5.3, 1B in + 1B out: $5.8K vs $24K for GPT-5.6 Sol max. Zero Data Retention is listed as included on self-service.
Docs review · intro page ✔ verified
ClarityB+One clean three-way table; async latency now concrete (~1 min TTFT). Cost row is still qualitative.
PrerequisitesB-No checklist: SDK, API key, base URL are spread across subpages.
ExamplesCNo code on the page; every section links out. Autobatcher screenshot helps.
LevelA-Plain language, no jargon.
✅ Good: "Not every model is available in every tier" is stated; dedicated-realtime CTA opens a pre-filled email asking for model, volume, latency and region. ⚠️ Open: add numbers to the cost row (the table implies ~25% / ~50%); add a 5-line hello-world per tier; a "pick a tier" decision aid lives only in this deck.

Which tier should I use?

Does a person or caller need the answer immediately? YesNo REALTIMEservice_tier "priority" · shared, rate-limitedProduction at scale? Ask aboutDedicated Realtime (contact sales) Is the call made by running application code? YesNo ASYNC (flex)Agents, background jobs, pipelinesResponses API or Autobatcher AsyncOpenAI≈25% below realtime · target <1 min to first token BATCHDatasets, evals, bulk generationJSONL file or Autobatcher BatchOpenAI≈50% below realtime · up to 24h

Decision aid built for this deck from the intro, async and batch pages; the docs themselves do not publish one. Not every model exists in every tier: 5 of 36 have no realtime price.

✔ verified1Intro · 2Async · 3Batch · 4Models & Pricing

Request paths

Your codeOpenAI SDKAnthropic SDK (auth_token)Autobatcher (Py / TS)dw CLIAgent frameworks (26)Optional: Control Layer in front api.doubleword.ai/v1/chat/completions/v1/responses/v1/messages (Anthropic)/v1/files · /v1/batches/v1/embeddings · /v1/modelsBearer token auth priority (realtime)shared · rate-limited flex (async)<1 min TTFT target batch (24h)JSONL · partial results 36 modelsopen-weighttext · visionOCR · embed Dedicated Realtime (contact sales) and the self-hosted Control Layer / Inference Stack sit outside this self-serve path.
Auth differs by SDK. OpenAI SDK: base_url="https://api.doubleword.ai/v1" and api_key. Anthropic SDK: base_url="https://api.doubleword.ai" (no /v1) and auth_token=, not api_key=, because Doubleword reads Authorization: Bearer.

Quick start: three working shapes

1
Key: create one in the Console; integrations read DOUBLEWORD_API_KEY. Model ID: shown on each model page, not in the table (e.g. deepseek-ai/DeepSeek-V4-Flash).

Realtime · Chat Completions

import os
from openai import OpenAI
c = OpenAI(
  base_url="https://api.doubleword.ai/v1",
  api_key=os.environ["DOUBLEWORD_API_KEY"])
r = c.chat.completions.create(
  model="deepseek-ai/DeepSeek-V4-Flash",
  messages=[{"role":"user",
             "content":"Hello"}])
print(r.choices[0].message.content)

Async · Responses + poll

from time import sleep
resp = c.responses.create(
  model="deepseek-ai/DeepSeek-V4-Flash",
  input="Explain relativity.",
  service_tier="flex",
  background=True)   # returns "queued"
while resp.status in ("queued",
                      "in_progress"):
  sleep(2)
  resp = c.responses.retrieve(resp.id)
print(resp.output_text)

Async · Chat Completions, blocking

# from the Daytona integration page:
# flex on chat.completions blocks until
# done; background=True is a
# Responses-only feature.
r = c.chat.completions.create(
  model="deepseek-ai/DeepSeek-V4-Flash",
  service_tier="flex",
  messages=[{"role":"user",
             "content":"Hello"}])

Async-polling shape is the docs' own example with the model swapped. The Chat Completions + flex shape is from the Daytona integration page; the async page itself documents flex only on Responses.

Docs review · async + realtime pages ✔ async read; realtime ◷ not re-read
ClarityA-Polling vs blocking explained; TTFT target stated with exceptions (OCR-only models "as of Aug 2026", bursts).
ExamplesAPython, JavaScript and cURL for both modes.
PrerequisitesBKey link given; SDK version and minimum openai package for responses not stated.
⚠️ Open: the intro says flex works on "Responses or Chat Completions" but the async page shows only Responses; the Anthropic page describes flex as "~1 hour SLA at batch pricing", which contradicts this page (see D2 in Section 09).
Section 02

Models & pricing

36 models · three tiers · input / cache read / output per 1M tokens

The full catalog ✔ copied from the table 5 Oct

Show:
Model (links to its page)Realtime in / cache / outAsync in / cache / outBatch in / cache / outCache vs input (async)Reasoning table

Docs review · models page + one model page ✔ verified
ClarityA-One table, three tiers, three prices each; per-model pages show ID, capability, reasoning efforts, cache-read multiplier and a playground link.
ExamplesB-Playground per model; no model-specific code. Model IDs are only on the 36 individual pages, not in the table.
⚠️ Open: page intro still says "Doubleword Batch API is priced per model"; "—" for realtime is unexplained; no quality-vs-cost view or "which model?" guide (the marketing site has an intelligence-vs-cost chart); Qwen3.5 35B A3B (non-dottxt) is listed on the marketing site but not here.

What the numbers actually say ↻ replaces v5's guessed discounts

Tier discounts (list price, 31 models with realtime)

  • Async ≈ 25% below realtime, tightly clustered (24–25% for the middle half).
  • Batch ≈ 50% below realtime, and ≈33% below async.
  • So the large savings in the marketing ("up to 90%") come from model choice (open-weight vs closed), not from tier choice alone. Output price spans 141× across the catalog ($0.10 to $11.25 per 1M async output).

Cache read is not always a discount

  • 29 models have a cache-read discount: median 80% below input (range 27–97%).
  • 7 models price cache read at the input price: Hy3, Qwen3.6 35B A3B, Gemma 4 31B IT, the three OCR models and Qwen3 Embedding 8B. The docs don't say whether caching is unsupported there or simply undiscounted.

Anomalies worth checking before you budget

  • Qwen3.5 9B dottxt: async output $0.70 and batch $0.58 are higher than realtime output $0.30. Could be a typo or real; confirm in the Console.
  • 5 models have no realtime price: Qwen3.5 4B, Qwen3.5 397B dottxt, DeepSeek OCR 2, LightOnOCR 2, olmOCR 2.
  • Embedding output is $0.00; you pay input only.
  • Reasoning table covers 19 of 36. Not listed: Kimi K3, Inkling, Hy3, MiMo V2.5 Pro, DeepSeek V4 Pro 0813 and V4.1 Flash, Qwen3.8 27B, Muse Glimmer, Gemma 4 26B and others. The DeepSeek V4 Flash page lists efforts, so the table may simply lag the catalog.
Dropped from v5: the old "$30K / $15.8K / $2.1K per 1B tokens" benchmark, "20M free tokens" and "miss the SLA, job is free" were not found on any Oct 2026 page. The homepage now shows GLM-5.3 at $5.8K vs $24K.
✔ computed from the table on this site's Models page · 1Models & Pricing · 2Prompt caching · 3Reasoning effort

Cost calculator ✔ all 36 models, real prices

%uses the cache-read price for that share (reads only)
—
Realtime
—
Async
—
Batch (24h)

Not included: explicit-cache write premiums (1.25× input price for 5m TTL, 2× for 1h). Implicit caching never bills writes. Estimates use list prices; check the Console for your actual rates. For a cross-check see the vendor's savings calculator (not read).
Section 03

Platform features

Prompt caching · reasoning effort · Anthropic compatibility · tools and more

Prompt caching: implicit and explicit ↻ v5 described only a sliver

  • Implicit: on by default for cache-supported models, no code change. Best-effort; reused tokens bill at the cache-read rate; no write charges.
  • Explicit: add cache_control: {"type":"ephemeral","ttl":"5m"|"1h"} to a content block or tool. Guaranteed reads, sliding TTL, up to 4 breakpoints, shared across an org's keys. Minimum prefix is model-specific (1,024 tokens on most).
  • Write prices: 1.25× input (5m), 2× input (1h). Cache read = r × input, model-specific.
  • Models without caching ignore markers and bill normally, so markers are safe to send.
EndpointImplicitExplicit
/v1/chat/completions✅✅ markers + auto-placement
/v1/messages✅✅ markers + auto-placement
/v1/responses✅auto-placement only
/v1/completions✅no (single string)
Request A — writes the prefix[ tools + system ]●[ question 1 ] Request B — reads it, pays full price only for the tail[ tools + system ]●[ question 2 ] ● = breakpoint. Matching is left-anchored: keep stable content first,volatile content last. One changed byte before the ● breaks the match.
"messages": [{"role":"system","content":[{
  "type":"text","text":"<~2,000 tokens>",
  "cache_control":{"type":"ephemeral","ttl":"1h"}}]},
 {"role":"user","content":"How do I reset my password?"}]
# check usage.cache_read_input_tokens and
# usage.prompt_tokens_details.cached_tokens
Docs review · prompt caching ✔ verified
ClarityATwo modes explained with when to choose each; endpoint support table; usage fields for both API shapes; patterns for tools, RAG and growing conversations.
ExamplesAOpenAI and Anthropic request shapes side by side, plus usage output for first and second call.
LevelB+Assumes you understand prefix caching; links to Anthropic's guide for background.
⚠️ Open: support is signalled by catalog metadata (cache_pricing.enabled), but the pricing table shows a cache price for every model, including 7 where it equals the input price; one sentence has a typo ("it is does not require"). ✅ Notable: every integration page has its own caching section, and Google ADK and Pi say plainly that they cannot set the marker today.

Reasoning effort ↻ v5's example and model list were wrong

  • Seven levels: none, minimal, low, medium, high, xhigh, max (OpenAI-compatible). v5 showed three.
  • Chat Completions: reasoning_effort. Responses: reasoning.effort.
  • Unsupported effort is rejected, not silently changed. Omit the field for the model default.
  • Some models map effort to a reasoning-token budget; your output limit must exceed it or the request is rejected.
  • Send only these OpenAI-style fields. Do not send thinking, thinking_token_budget or chat_template_kwargs.
  • Qwen3 non-thinking: append /no_think to the latest user prompt; it is Qwen-specific, not an effort value.
  • Anthropic thinking config is mapped to reasoning effort (Anthropic page).
curl https://api.doubleword.ai/v1/chat/completions \
  -H "Authorization: Bearer $DOUBLEWORD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash",
    "messages": [{"role":"user",
      "content":"Solve this carefully."}],
    "reasoning_effort": "medium",
    "max_completion_tokens": 16384
  }'
Supported (19 models): all seven levels on 18 models including DeepSeek V4 Pro/Flash, GLM 5.1–5.3, Nemotron 3 Ultra/Super, Kimi K2.6, Qwen3.5 family, Qwen3.6 35B, Gemma 4 31B, GPT OSS 120B. GLM 5.3 Flash has no none. GPT OSS 20B: low/medium/high only. Not in the table: Kimi K3, Inkling, Hy3, MiMo, DeepSeek V4 Pro 0813 and 15 others.
Docs review · reasoning effort ✔ verified
ClarityA-Rejects-rather-than-rewrites is a good, explicit contract; per-model support matrix.
ExamplesBcURL only on this page (no Python or JS), though Chat Completions and Responses are both shown.
⚠️ Open: the matrix lags the catalog (17 models unlisted); no guidance on which effort to pick or what it costs in output tokens.

Anthropic API compatibility ↻ setup and scope corrected

from anthropic import Anthropic
client = Anthropic(
    base_url="https://api.doubleword.ai",  # no /v1
    auth_token=KEY)       # NOT api_key=
m = client.messages.create(
    model="deepseek-ai/DeepSeek-V4-Flash",
    max_tokens=1024,
    messages=[{"role":"user","content":"Hi"}],
    extra_body={"service_tier":"flex"})  # optional

api_key= makes the SDK send x-api-key; Doubleword authenticates on Authorization: Bearer.

  • Works: messages, streaming, GET /v1/models in Anthropic shape (with anthropic-version), flex tier via service_tier: "flex" in extra_body, caching on /v1/messages.
  • Batch: native /v1/messages/batches is not available. Use the OpenAI-format Batch API with "url": "/v1/messages" on every JSONL line and endpoint="/v1/messages"; results come back as Anthropic messages.
  • Anthropic's auto / standard_only service tiers are accepted but do nothing.
  • The page does not mention tool use or vision. v5 claimed tool use; that was not supported.
Contradiction (D2): this page says flex is "queued to the inference daemon, ~1 hour SLA, at batch pricing". The async page says work "starts within a minute" and is priced above batch. Both can't be right.
Docs review · Anthropic compatibility ✔ verified
ClarityAThe auth_token vs api_key trap is called out in a note.
ExamplesA-Python and cURL for messages, streaming, flex, batch, models.
⚠️ Open: the flex-tier contradiction above; state which Anthropic features (tools, vision, caching limits) are supported.

Tools, structured output, vision, embeddings, data sources ◷ index descriptions only

Tool calling & structured outputs
Per the site index: OpenAI-compatible tool calling and Structured Outputs "to build reliable agents and enforce strict JSON Schema responses". Three dottxt model variants (Qwen3.5 9B, 35B A3B, 397B A17B) exist; their purpose isn't explained on the pages I read.
Vision & OCR models
Qwen3 VL 30B A3B and 235B A22B (vision); DeepSeek OCR 2, LightOnOCR 2 1B, olmOCR 2 7B (OCR, async and batch only). Batch lines accept image URLs or base64 (batch page).
Embeddings
Qwen3 Embedding 8B at $0.04 / $0.03 / $0.02 input (realtime / async / batch) and $0.00 output. Autobatcher supports embeddings.create().
Data Sources · S3 Connections (Beta)
"Connect S3 buckets to automatically sync files and create batches." Page not read; confirm setup steps and limits there.
Gap in the docs, not just in this deck: there is no "when to use tool calling vs structured outputs" guide and no description of what dottxt adds. Both are worth reading the source pages for.
Section 04

SDKs, CLI & skills

Autobatcher · batch lifecycle · dw CLI · agent skills

Autobatcher ↻ now Python + TypeScript; options trimmed

Your async callsawait create()await create() Collectflush at batch_size 1000or after 10 s window SubmitAsyncOpenAI → async tierBatchOpenAI → batch tier Pollevery 5 sreturn as they finish ResponsenormalChatCompletion
# pip install autobatcher   |   npm install autobatcher
from autobatcher import AsyncOpenAI      # or BatchOpenAI
client = AsyncOpenAI(
    api_key=KEY,
    base_url="https://api.doubleword.ai/v1")
r = await client.chat.completions.create(
    model="deepseek-ai/DeepSeek-V4-Flash",
    messages=[{"role":"user","content":"Hi"}])
OptionDefault
batch_size / batchSize1000
batch_window_seconds10
poll_interval_seconds5
  • Supports chat.completions.create() and embeddings.create() only. No Responses API (v5 said otherwise); everything else passes through to the OpenAI client.
  • No completion_window option in the current table (v3/v4 had one).
Docs review · autobatcher ✔ verified
ClarityAOne mental model (collect, submit, poll, return); two clients mapped to two tiers.
ExamplesB+Quick start in Python and JavaScript; no error handling, cancellation or timeout example.
⚠️ Open: no guidance on tuning window and batch size per workload, or what happens when a batch fails or expires; no mention that Responses-API async flows can't use it.
✔ verified1Autobatcher · 2GitHub · 3PyPI

Batch lifecycle ↻ 24h only; limits re-confirmed

1Prepare JSONLcustom_id ≤ 64 chars 2Upload≤ 200 MB · ≤ 50,000 requests 3Create batchcompletion_window "24h" 4Trackdownload partial output 5Resultsoutput + error files
f = client.files.create(file=open("in.jsonl","rb"), purpose="batch")
b = client.batches.create(
    input_file_id=f.id,
    endpoint="/v1/chat/completions",
    completion_window="24h",
    metadata={"description": "daily eval job"})
# output_file_id and error_file_id exist immediately

r = requests.get(f".../v1/files/{b.output_file_id}/content",
                 headers=H)
if r.headers.get("X-Incomplete") == "true":
    resume = r.headers["X-Last-Line"]   # ?offset={resume}
  • Partial results while running: download the output file early; X-Incomplete and X-Last-Line headers tell you where to resume with ?offset=. The page notes this differs from OpenAI.
  • Cancel any time: unstarted requests are cancelled and not charged; in-flight cancellation is best-effort; finished results stay downloadable.
  • The Console can create a batch by uploading a file; no separate trigger.
  • url is typically /v1/chat/completions; /v1/messages is also accepted (Anthropic page).
Docs review · batch inference ✔ verified
ClarityASeven numbered steps, each with Console and API paths; "Common pitfalls" at the end.
ExamplesA-Python, JS, cURL per step; downloadable sample JSONL.
⚠️ Copy-paste hazards: the cURL create-batch body has an unquoted $INPUT_FILE_ID inside single quotes, so it is invalid JSON as written; file and output IDs differ between snippets (a stray character); example model placeholder differs from other pages. Missing: batch-sizing guidance, retry and error-file handling.

dw CLI ◷ pages not read; README facts verified

  • The site index lists 16 CLI pages under /dw-cli: introduction, installation, authentication, quickstart, batches, streaming, real-time, JSONL format, local file tools, projects, examples, command reference, accounts, API keys & webhooks, usage & analytics, global flags.
  • The CLI docs also appear at /inference-api/dw-cli and on GitHub Pages: three places.
  • Gotcha from the skill README: with API-key-only login, dw whoami may fail because API keys lack admin API access. The skill probes with a tiny realtime call instead.
dw whoami                       # browser login only
dw models list                  # needs full platform login
dw realtime "$MODEL" "Reply with OK." \
   --temperature 0 --max-tokens 2 --no-stream
Install command not re-verified. v5 said pip install dw-cli from the March crawl; use the Installation page instead.
Analytics endpoints (from your project notes): GET /batches?include=analytics and GET /batches/{id}/analytics were undocumented and needed direct httpx calls. The CLI now has a "Usage & Analytics" page I did not read; ? unverified whether it covers them.

Agent skills ↻ repo name changed; three versions in circulation

Source (read 5 Oct)RepoAgents namedContentsUpdate command
Docs page, live fetchdoublewordai/doubleword-skillClaude Code onlySKILL.md + examples.pynpx skills update doubleword-skill
GitHub README (MIT, 5★, 17 commits)doublewordai/doubleword-skillClaude Code, Cursor, Codex, Hermes, OpenClawSKILL.md + references/ (CLI recipes, models & pricing); needs the dw CLInpx skills update doubleword
Search-indexed copy of the same docs URLdoublewordai/batch-skillClaude Code, Cursor, Windsurf, Codex"12 models", dw CLI, three modesnpx skills update doubleword
Older staging copydoublewordai/batch-skillClaude Code, Cursor, Windsurf, Codexbatch API + autobatchernpx skills update doubleword-batch
Use doubleword-skill. It is the repo the live docs and GitHub both point to. v3–v5 of this deck cited batch-skill; I did not confirm whether that name still redirects.
Community copies are stale or unverified. Third-party mirrors (skills.sh, skills.cat, mcp.directory) host older text; the mcp.directory copy uses anthropic/claude-3-5-sonnet in examples, which isn't a Doubleword model. ◷ Community skills from the March crawl (NnamdiOdozi/dw_batch_skill, OpenClaw v1/v2, Termo.ai) were not re-checked.
Docs review · skill page ✔ verified
ClarityC+The docs page, the repo README and the indexed docs copy disagree on agents supported, file layout, update command and whether the CLI is required.
PrerequisitesCDocs page omits that the skill drives the dw CLI and needs DOUBLEWORD_API_KEY; README says both.
✅ Good: README is excellent: auth readiness paths, progressive-disclosure layout, agent-safe polling advice. ⚠️ Fix: one canonical page, one update command, and a note on community variants.
Section 05

26 integrations

Framework guides, most with their own prompt-caching section

Integration ecosystem ✔ list verified · 7 pages read via snippets

Agent frameworks

CrewAI · LangChain / LangGraph · LlamaIndex · PydanticAI · OpenAI Agents SDK · Microsoft Agent Framework · Google ADK · Agno · smolagents · atomic-agents · Mastra · Vercel AI SDK · Rig (Rust)

Coding agents & sandboxes

OpenClaw · Opencode (GLM-5.2, 1M context) · Pi (community provider; toggle realtime/flex) · Warp · Daytona (code on flex, run in parallel sandboxes)

Evals, memory & data

Arize AX · Arize Phoenix · Langsmith · Qdrant · BetterDB · mem0 · Supermemory · Experiential

Cost claims on these pages are the vendor's own (from the site index): Arize AX evals "4–6× less"; BetterDB "25% or more"; mem0 "half the cost"; Supermemory "99%"; Rig "roughly 8× less than frontier realtime APIs". Treat them as scenario-specific.
Caching caveats documented honestly: Google ADK cannot drive caching today (tested ADK 2.9.1 / litellm 1.101.0); Pi's community provider sends turns to the Responses API, where the marker can't be set; CrewAI needs a before_llm_call hook; Mastra enables it with cache: {ttl} on the provider.
Docs review · integrations ✔ 7 pages read via snippets; rest index-only
ClarityA-Each page is framework-native: install, config, sample, caching, env vars.
ExamplesAPython, TypeScript and Rust, with usage-counter checks for caching.
⚠️ Open: 8 index descriptions (Agno, atomic-agents, CrewAI, Google ADK, Mastra, OpenAI Agents SDK, PydanticAI, smolagents) still say "Route requests through the Control Layer" although the Control Layer is no longer in the main nav (D4); sidebar lists 24 or 26 integrations depending on the page (D3); no "which framework?" guidance.
Section 06

Workbooks

13 tutorials (index lists them; descriptions from the site index)

Workbook gallery ◷ titles verified; pages not read

WorkbookWhat the index says
Async AgentsAgentic workloads on the async tier
Doubleword Agent Swarm newerSelf-designing swarm: orchestrator, bounded-context workers, adversarial verifiers, synthesizer; Open Responses API with the dw CLI
Agentic PR Review Bot newerSelf-hosted GitHub PR review bot on opencode and async inference; chat completions and Open Responses samples
Data Processing PipelinesLLM steps inside ETL
Structured Data ExtractionUnstructured text to schema
Semantic Search Without EmbeddingsSearch at scale using LLMs directly instead of embedding models
Daily Research Paper DigestAutomated arXiv digest that "costs $1/year" via the Batch API
Image SummarizationVision models in batch
EmbeddingsBatch embeddings for search and RAG
Model EvalsEvaluation suites
Synthetic Data Generation · Dataset CompilationTraining-data creation and curation
Classifying Security VulnerabilitiesModel ensembles for vulnerability triage

The Agent Swarm and PR Review Bot pages are described as new relative to v4; "newer" is my inference from their absence in March, not a dated claim.

◷ index only1Workbooks index · 2llms.txt
Section 07

Operations

Billing · organizations · webhooks · support

Account, organizations, webhooks, support ◷ not re-read this round

Account & billing
Pages: adding credits, Auto Top-Up ("recharge when balance drops below a threshold"), payment methods and invoice history. Marketing: prepaid credits, usage-based pricing, Zero Data Retention included on self-service.
Organizations
Pages: overview, inviting members, organization API keys, submitting batches as an organization, organization credits & billing. From the March crawl: roles Owner / Admin / Member and per-member keys billed to the org. ◷ Re-check before relying on it. Prompt-cache sharing works across an org's keys (verified, caching page).
Notifications & webhooks
Page exists under "Using the Platform". March crawl noted Standard Webhooks signing and batch.completed / batch.failed events. ◷ The old signature-verification snippet is omitted here because it was not re-verified (it contained a likely hmac.new mistake).
Support & tiers
"Get Support": contact support, request features, or get help optimizing batch workloads. Marketing: Self-Service (pay-as-you-go) vs At-Scale (dedicated capacity, region-locked processing, custom models, volume pricing, MSA / DPA / custom SLAs). Trust Center.
Section 08

Ecosystem & open source

Control Layer · Inference Stack · GitHub · customers · research

Control Layer and Inference Stack ↻ "removed from docs" was wrong

Control Layer (open-source gateway)

  • Docs are live at /control-layer. The site's llms.txt lists 11 pages: overview, getting started, 7 how-tos (API, endpoints, users & groups, health monitoring, production, model pricing, payments), configuration reference, "how billing works". It is simply absent from the top nav (Inference API and CLI only).
  • Repo doublewordai/control-layer: Rust, Apache-2.0, 92★, updated 13 Aug 2026. Vendor claim: "450× less overhead than LiteLLM" (benchmark not re-run here).
  • Quick start (search snippets of the docs): wget the repo's docker-compose.yml, docker compose up -d, open localhost:3001; needs PostgreSQL; image ghcr.io/doublewordai/control-layer:latest; OpenAI-compatible at /ai/v1. A Helm chart repo exists (control-layer-chart).
  • Set a real SECRET_KEY (openssl rand -base64 32) and change default credentials before exposing it.

Inference Stack (self-hosted GPU deployment)

  • Still marketed: a product link in the homepage footer, and a public repo doublewordai/inference-stack ("easiest & most performant way to run genAI infrastructure in your private environment"; Go templates, 10★).
  • No Inference Stack pages appear in llms.txt, and a usage page returned 404 in my earlier session. So its docs are gone or moved; I could not confirm which.
  • Related research repos: zerodp (zero-copy data parallel for MoE serving), inference-lab (an LLM inference simulator, not a request daemon as v3/v4 said).
What a reader needs to know: don't write off the Control Layer because the main nav omits it; for Inference Stack, go to the marketing page and GitHub, not the docs.
Docs review · structure ✔ verified via llms.txt + search
ClarityCA reader following the nav cannot find a documented, active, open-source product; a reader following GitHub can.
⚠️ Fix: either restore a "Control Layer" tab or say it moved; keep integration copy consistent with the nav; give Inference Stack a status note.

GitHub organization ✔ org page read; 68 repos (v4 said 24)

RepoWhat GitHub saysLang · license · stars
control-layer"World's fastest AI model gateway (450× less overhead than LiteLLM)"; updated 13 Aug 2026Rust · Apache-2.0 · 92
autobatcherDrop-in AsyncOpenAI replacement that transparently batches requestsPython · (license not shown) · 22
doubleword-skillClaude Code skill for the Doubleword Batch APIMIT · 5
inference-stackRun genAI infrastructure in your private environmentGo Template · 10
zerodpZero-copy data parallelism for MoE serving via CUDA IPCPython · 10
inference-labHigh-performance LLM inference simulatorRust · MIT · 6
control-layer-chartHelm chart for the Control LayerGo Template · Apache-2.0
outlet · outlet-postgres · doubleword-arize · forks (dynamo, kagent, uccl)Axum request-capture middleware, Postgres plugin, Arize integration; forks of Dynamo, kagent, UCCLvarious

Only 10 of 68 repos are visible on the org's first page; the rest were not enumerated. The dw CLI repo and the use-cases / qlm repos listed in v5 were not confirmed and have been removed.

Customers, case studies and inference research ✔ homepage read

Customers named on the homepage

Detail · nPlan · OpenMed · Ken AI · Element Materials · UnaGo AI · Dataiku · NXL · University of Colorado Boulder. Featured in Sky News, Sifted, Forbes, Bloomberg, TechCrunch.

Detail
"We've run trillions of tokens on Doubleword." Async agents →
OpenMed × SynthVision
Two annotation passes plus two cross-validation passes over 119K images. Story →
Element Materials
Doubleword as "our inference layer"; single point of governance. Data processing →

All case studies (Kelp, NXL, Ken AI, UnaGo AI, Dataiku) · Seen in the Wild

Inference engineering (technical blog)

FlashOffload
"7× cheaper prefills" →
Speculative KV Coding
"4× KV cache compression" →
Cloudburst
"70× faster cold starts" →

Multipliers are the vendor's headline claims. The older conceptual pages (why batch matters, batched endpoints, parallel primitives, ZeroDP) now sit in the docs Archive section: why batch · batched endpoints · parallel primitives · ZeroDP. The "Behind the Stack" episodes 4, 8, 9 cited in v4 are not in llms.txt.

✔ verified1Homepage · 2Technical blog · 3Case studies
Section 09

Docs audit

Discrepancies · scorecard · what changed from v5 · what to re-check

Discrepancy ledger ✔ each item observed 5 Oct 2026

#SevWhereWhat disagrees
D1highSkillLive docs page, GitHub README and the search-indexed copy of the same docs URL differ on repo name (doubleword-skill vs batch-skill), agents supported, file layout and update command.
D2highFlex tierAsync page: starts within a minute, priced above batch. Anthropic page: "~1 hour SLA at batch pricing". Intro: flex works on Responses or Chat Completions; async page shows only Responses.
D3medDocs navSidebar differs between pages (three deploy builds seen): "Dedicated Realtime" missing on some, 24 vs 26 integrations, different model lists.
D4medControl Layer / Inference StackControl Layer hidden from nav yet indexed (11 pages), linked from GitHub and marketing, and referenced by 8 integration descriptions. Inference Stack marketed but absent from the docs index.
D5medMarketing → docsHomepage "Docs" links go to docs.doubleword.ai/batches (older path pattern); /batches/skill is still indexed.
D6medStaging sitedocs-stag.doubleword.ai is indexed by search engines and serves older and newer variants of pages.
D7medCatalogMarketing "Popular Models" lists Qwen3.5 35B A3B (not in docs table); docs table has 5 models the marketing list lacks (3 dottxt variants, GPT OSS 120B, Gemma 4 26B).
D8medReasoningSupport table lists 19 of 36 models; Kimi K3 and 16 others absent, while the DeepSeek V4 Flash page shows its own efforts.
D9medPricingQwen3.5 9B dottxt: async/batch output price above realtime output price.
D10lowCaching7 models show cache-read = input price; unclear if caching unsupported or undiscounted. Support is flagged via catalog metadata not visible in the table.
D11lowModels pageIntro still says "Batch API is priced per model"; "—" unexplained; model IDs only on per-model pages.
D12lowBatch pagecURL body has unquoted $INPUT_FILE_ID (invalid JSON); IDs inconsistent across snippets.
D13lowIntroNo code; cost row qualitative ("Reduced", "Lowest").
D14lowCLI docsThree locations: /dw-cli, /inference-api/dw-cli, GitHub Pages.
D15lowSkill mirrorsThird-party mirrors serve stale copies; one uses anthropic/claude-3-5-sonnet in examples.
Strength worth copying: docs.doubleword.ai/llms.txt indexes every page, each page has a .md twin and a "Copy Markdown" action. That is excellent for agent consumption, and it's only mentioned in the skill README, not the docs intro.
✔ verified evidence in the slides above · 1llms.txt · 2skill README

Scorecard ✔ graded only where read on 5 Oct

AreaClarityExamplesPrereqsBasis
Intro / overviewB+CB-read in full
Async inferenceA-ABread in full
Batch inferenceAA-A-read in full
Models & pricingA-B-B+read in full
Prompt cachingAAA-read in full
Reasoning effortA-BB+read in full
Anthropic compatibilityAA-Aread in full
AutobatcherAB+A-read in full
Skill (docs + README)C+BCread in full
IntegrationsA-AB+7 via snippets
Navigation & cross-site consistencyC——observed
Agent-readiness (llms.txt, .md)A——read llms.txt
Control Layer, CLI, webhooks, orgs, data sources, dedicated realtimenot re-graded◷ March scores stale

Grades are my judgment on clarity of what the page does, presence of runnable examples, and whether prerequisites are stated. They are opinions, not measurements.

✔ verified see the ☆ Reviews panels on each slide for the reasoning

What changed from v5 claim ledger

v5 claimStatusEvidence / fix
Control Layer and Inference Stack "removed from docs"↻ correctedControl Layer: 11 pages in llms.txt. Inference Stack: not in index (docs location unconfirmed)
Async "up to 50% off", batch "up to 75% off"↻ removedComputed from table: ≈25% and ≈50% below realtime
Pricing table (several rows from memory)↻ rebuiltAll 36 rows copied from the Models page
"$30K / $15.8K / $2.1K", "20M free tokens", "miss the SLA, job is free"? droppedNot on any Oct 2026 page read; homepage now cites $5.8K vs $24K
reasoning_effort low/medium/high; Inkling and Kimi K3 supported↻ correctedSeven levels; Inkling and Kimi K3 are not in the support table
Caching "works with Chat Completions"↻ correctedImplicit + explicit; four endpoints; write multipliers; 4 breakpoints
Anthropic compat "supports tool use"↻ correctedNot stated on the page; auth_token, no native batch endpoint added
Skill repo batch-skill; works in Cursor, Windsurf, Codex↻ correcteddoubleword-skill; docs say Claude Code only, README lists five agents
Autobatcher: Python only, supports Responses, completion_window↻ correctedPython + TypeScript; chat + embeddings only; option removed
Batch completion_window "1h or 24h"↻ correctedPage: "set the completion window to 24h"
inference-lab = batched request daemon; dw, qlm, use-cases repos↻ correctedinference-lab is a simulator; the other three repos not confirmed, removed
Reasoning example used Inkling model ID↻ correctedInkling ID was a guess; examples now use a verified ID
"Built from 80+ pages"↻ removed14 read in full, ~12 via snippets, ~140 indexed
36 models, 26 integrations, 13 workbooks✔ held upCounted from the Models table, sidebar and llms.txt
Prompt caching, reasoning, Anthropic, S3 data sources "exist"✔ held upPages found and read (S3 page index-only)
Analytics endpoints undocumented? unverifiedCLI has a "Usage & Analytics" page not yet read
✔ verified each row traces to a source slide in this deck

What to re-check next, and how to refresh this hub

Read these next (highest value)

  • Dedicated Realtime, Data Sources / S3 (Beta), Get Support, Tool calling
  • CLI pages, especially install and "Usage & Analytics" (could settle the analytics-endpoint question)
  • Webhooks and Organizations (March data only)
  • Control Layer how-tos (the nav omits them; re-score them)
  • Whether batch-skill still redirects to doubleword-skill
  • The community skills (Nnamdi Odozi, OpenClaw, Termo) which were not re-checked

Cheapest reliable refresh path

  • Fetch docs.doubleword.ai/llms.txt for the page list; most pages have a .md twin.
  • Re-copy the Models table into the data block of this file; the table, calculator and every discount figure recompute from it.
  • Static doc pages fetch well; the interactive API-reference viewer returns little useful text (from earlier crawl notes).
  • Docs deploys were out of sync on 5 Oct (D3): compare a page's sidebar before trusting one fetch.
Single source of truth? Closer than v5, but not yet: roughly a third of the platform is carried by index descriptions or March data. Treat any slide without a ✔ verified pill as a pointer, not a fact.
Section 10

Quick reference

Links checked against the live sidebar and llms.txt

All links

✔ verified every docs link is present in the live sidebar or in llms.txt; marketing links come from the homepage footer

Start building

Create a key at app.doubleword.ai · free tokens on signup (amount not confirmed) · pip install autobatcher

v5.1 · verified 5 Oct 2026 · 14 pages read in full · see Section 09 for what is and isn't confirmed