Application collections
An application collection groups the tests, repository association and plugin selection for one application in your current team. It can contain tests stored in Reflow and tests stored in Git.
Create collection
Section titled “Create collection”After reflow login, run these commands from the application Git checkout:
reflow collections list --jsonreflow collections create --repo . --jsonreflow init --collection <returned-collection-id>reflow target http://localhost:3000 --group my-app --collection <returned-collection-id>The create command reads the checkout at --repo (default: the current
directory). It infers the display name from the checkout directory and the
repository association, the canonical GitHub owner/repo, from its origin
remote. Credentials embedded in a remote URL are never saved. No checkout files,
tests, Git commits or runs are created by this command.
--name "My app"changes only the display name. The association still comes fromorigin.--repository-id owner/repobinds that GitHub repository instead oforigin. When the checkout has GitHub remotes, it must be one of them, such as a fork’s upstream.- A checkout whose
originis missing or not on GitHub receives alocal:<collection-id>association when--repository-idis omitted.reflow collections createhas no option for a local association in a checkout with a GitHuborigin. For one there, such as a second collection for the same checkout, call the local MCP tool with a name and norepository; it reads no checkout:reflow mcp call manage_collections '{"action":"create","name":"My app (golden)"}'. A collection bound to GitHub cannot be rebound to a local association later.
The response includes collection_id, the current test_storage default and
revision, and preference_changed: false. Creation accepts the existing team
default. New teams default to keeping tests in Reflow. It does not require a
separate confirmation in the browser or change the team’s preference. Changing
that preference remains an owner/admin action in Team settings.
Creation requires a current team membership and author/run scope, like other
application authoring. It does not grant execution approval to a closed-beta team.
A team has one collection per name and per repository association, so a second
collection for the same GitHub repository is refused even with a new --name.
List and select the existing collection, or create a local association as above.
List and select
Section titled “List and select”reflow collections list --jsonreflow collections select <collection-id>reflow config get test-storage --jsonCreate and select remember the application in the private Reflow profile, scoped
to the current API, team and user. Selection is validated against live team
membership; it never silently switches teams. Pass --collection to override it.
An existing execution target takes precedence over the remembered selection until
you explicitly run reflow target --collection <id> again. Selection does not reset test data or execute anything.
Listings carry each collection’s plugin lock revision and storage, but only the
selected collection includes its full plugin lock. Other entries show
pluginLock: null; this is not an uninitialized application. Pass --collection
(or select it) to read that application’s lock.
MCP onboarding
Section titled “MCP onboarding”Call get_reflow_context. When no collection is selected, next_action points
at manage_collections:
action: "list"returns the current team’s collections.action: "create", repository: "/absolute/path/to/app"infers local checkout metadata. Optionalnameandrepository_idoverride it. Withnameand norepositoryorrepository_id, the local tool reads no checkout and creates alocal:<collection-id>association.action: "select", collection_id: "..."validates and remembers the local selection. Passrepositoryto validate the checkout association too.
Use the returned ID for init_plugins and manage_execution. Application code
and services remain on the author device. No browser extension is needed to
create or select the collection.
Hosted HTTP MCP exposes the same tool but cannot inspect a local checkout. Supply
name and optional repository_id: "owner/repo" for create. Hosted selection is
request-scoped: pass collection_id on subsequent tools. Continue plugin
installation and local execution on the author device.
Uncertain responses
Section titled “Uncertain responses”Retain the returned new_collection_id and any operation/session IDs. Inspect
get_reflow_context with that collection_id, or reflow collections list,
before retrying. Local authoring retains its operation receipt; inspect it with
reflow flows operation --operation-id <id> --operation-session <id>.
Do not blindly repeat create after a timeout. A rejected duplicate is not permission
to rename or rebind an existing application.
An older team whose storage associations are not activated receives an explicit administrator action instead of instructions to create more collections. Creation never bypasses that migration guard.