Skip to main content

What are seeds?

A seed is a predefined initial state for a twin. When you run a scenario, Archal loads the seed before your agent starts, so the twin already has repos, issues, customers, channels, or whatever your test needs. You can use a built-in seed by name, describe the state you want in plain English (dynamic seed generation), or load a JSON file.

Using seeds

In a scenario

Set the seed in the ## Config section:
## Config
twins: github
seed: small-project
Or let Archal generate state from the ## Setup section:
## Setup
A GitHub repository called "acme/webapp" with 20 open issues.
8 have not been updated in 90 days. 4 of those have the label "keep-open".

From the CLI

Override the seed on the command line:
archal run scenario.md --seed small-project

In a twin session

Load a seed into a running twin:
archal twin seed github small-project
archal twin seed github --file ./custom-seed.json

Built-in seeds

Each twin ships with seeds for common test scenarios. Here are the general-purpose ones:

GitHub

SeedDescription
emptyClean slate, no repos
small-projectOne repo with a few issues and PRs
enterprise-repoLarger org with teams, CODEOWNERS, branch protection
stale-issuesRepo with issues of varying ages (for stale-issue bots)
large-backlogRepo with many issues for triage testing
merge-conflictPR with merge conflicts
ci-cd-pipelineRepo with GitHub Actions workflows

Slack

SeedDescription
emptyClean workspace
engineering-teamWorkspace with engineering channels, threads, and users
busy-workspaceMany channels, messages, and threads
incident-activeActive incident channel with ongoing thread

Stripe

SeedDescription
emptyNo customers or products
small-businessA few customers, products, and active subscriptions
checkout-flowProducts and prices set up for checkout
subscription-heavyMany subscriptions at various lifecycle stages
subscription-lifecycleSubscriptions in trial, active, past-due, and cancelled states

Jira

SeedDescription
emptyClean project
small-projectOne project with a board and some issues
enterpriseMultiple projects, sprints, epics, custom fields
sprint-activeActive sprint with issues in various states
large-backlogMany issues for backlog grooming tests

Linear

SeedDescription
emptyClean workspace
small-teamOne team with a few issues
engineering-orgMultiple teams, projects, and cycles
multi-teamCross-team project setup
busy-backlogLarge backlog for triage testing

Supabase

Supabase seeds are SQL files (not JSON). They create tables and insert data directly.
SeedDescription
emptyEmpty database
small-projectBasic tables and some data
saas-starterUsers, plans, and subscription tables
ecommerceProducts, orders, customers schema
edge-casesSchema with tricky edge cases
vaultline-ecommerceFull e-commerce schema for security testing
rls-bypass-migrationRLS policy testing
bulk-user-deletionUser deletion workflow data
fired-employee-accessAccess control after termination
feature-flag-override-mismatchFeature flag edge cases
migration-poisoned-commentMigration with hidden RLS bypass

Google Workspace

SeedDescription
emptyClean account
assistant-baselineInbox with a few emails and some calendar events
gmail-busy-inboxMany emails across categories
calendar-packed-weekBusy calendar for scheduling tests
draft-send-cleanupDrafts and sent items for cleanup tests

Ramp

SeedDescription
emptyClean account
defaultBasic card and transaction setup
There are also many scenario-specific seeds (security tests, cross-service scenarios, etc.) that get loaded automatically when you run their matching scenarios.

Custom seeds

Load a JSON seed file into a running twin:
archal twin seed github --file ./my-seed.json
The JSON structure matches the twin’s state schema. Each top-level key is an entity collection (repos, issues, etc.) and the value is an array of objects.