Add Onboard to your SaaS with Codex

Codex-style workflows are great at turning a software task into code quickly.

They are less good at sparing you from future ownership.

That is the distinction that matters for first-run setup checklists.

The wrong question

A lot of AI-assisted development starts from: Can the model build it?

For a list of checkboxes and a progress bar, the answer is often yes.

The better question is: Once it exists, do I want to maintain it?

If the subsystem includes host identity, mixed user/workspace progress, facts, eligibility, BYO vs Hosted storage, author tokens, and test vs live keys, then the cost is not the initial generation. The cost is that your application now owns that product surface.

Codex is best used to adapt, not re-invent

Use Codex to:

  • scaffold the settings page where the checklist will live
  • wire user and workspaceKey from your session into the Onboard component
  • implement a BYO adapter against your API, or pass Hosted flowId + publishable key
  • mint authorToken from a Route Handler for live Hosted
  • keep secret keys server-side

That is a perfect AI-assist use case. Rebuilding a DAP from raw prompts is only attractive until you become the person debugging why dismiss counted as complete.

Example Codex task

Add Bootstrapware Onboard to this React app.

Requirements:
- New page at /app/setup
- Embed the Onboard component
- Import @bootstrapware/onboard/styles.css
- Pass user={{ id, name }} and workspaceKey from the existing session
- Start with createLocalAdapter for local demo, then document Hosted props
- Do not invent user.id
- Do not expose secret keys in the client
- Do not put host context or flags through MCP
- If env has no bsw_test_pub_ / bsw_live_pub_ value, stop and ask me to mint one
- Call completeStep from host actions; pass facts for reconciliation

Point Codex at package AGENTS.md and the copy-paste brief at give this to your coding agent. MCP may configure flows only. Never send host context.

Integration boundary

<Onboard
  flowId="flw_..."
  publishableKey="bsw_live_pub_..."
  user={{ id: session.userId, name: session.name }}
  workspaceKey={workspace.id}
  authorToken={authorTokenFromBff}
/>

Or pass an OnboardAdapter for BYO. Path C still passes flowId + publishableKey so published config loads. Adapter resolution: explicit adapter for progress → Hosted progress when there is no adapter and flowId + publishableKey → otherwise local.

This is the whole pitch in one sentence

Use Codex to build your product. Use Onboard to stop your product from becoming an accidental digital adoption platform.

Related: Onboard · Agents · AI coding agents · Claude Code · Agent prompt template