Archipelago
Ship your Flutter app in days, not weeks.
About Archipelago
Archipelago is a CLI toolkit that generates production-ready Flutter apps from a modular monorepo template. Like its namesake — a chain of islands connected by water — each feature is a self-contained island, connected by shared infrastructure.
You generate a full workspace once with archipelago create, then drop in features and capabilities on demand with archipelago generate <brick>. Every brick is a Mason template validated against a living reference app.
Getting Started
# Install the CLI globally
dart pub global activate archipelago_cli
# Check system requirements
archipelago doctor
# Authenticate (required to generate)
archipelago auth login
# Scaffold a new project
archipelago create --output ./my_app
Then bootstrap the workspace:
cd my_app
dart pub get
melos bootstrap
Core Workflow
1. Create a project
archipelago create scaffolds the whole modular monorepo (it is a shortcut for archipelago generate flutter_modular_monorepo). Run it interactively and the CLI opens an ephemeral config file for you to fill in (app name, organization, state management, network library, vendors, etc.), or pass a pre-filled config for CI.
# Interactive — edit the generated config, save, continue
archipelago create --output ./my_app
# CI / non-interactive
archipelago create --config ci_config.json --output ./my_app
| Flag | Description |
|---|---|
--config, -c |
Path to a pre-filled config JSON file (CI mode — skips the interactive prompt). |
--output, -o |
Output directory. Defaults to .. |
--provision-firebase |
After generation, print Firebase setup steps and write a provision-firebase.sh script (.cmd on Windows). |
--provision-supabase |
After generation, print Supabase setup steps and write a provision-supabase.sh script. |
The
--provision-*flags are opt-in and informational only. The CLI never runsfirebase init,supabase init, or any cloud auth flow — those require interactive authentication and are left to you.
2. Generate features into an existing project
archipelago generate <brick> (alias gen) adds a feature or capability into an already-generated project. The brick's post-generation hooks wire it into the workspace, the app DI graph, and pubspec.yaml for you.
# Add features
archipelago generate auth_sdk
archipelago generate home_sdk
archipelago generate paywall_sdk
archipelago generate webview_sdk
# CI / non-interactive
archipelago gen auth_sdk --config auth_config.json
| Flag | Description |
|---|---|
--config, -c |
Path to a pre-filled config JSON file (CI mode). |
--output, -o |
Output directory (project root). Defaults to .. |
--local-bricks |
Path to a local Archipelago repo. Bypasses the R2 download and loads the brick from bricks/<slug>/ or bundles/<slug>.bundle. |
Run archipelago brick list to see every brick available for your subscription tier.
Brick Source
By default, bricks are fetched from Archipelago's Cloudflare R2 catalog. Two persistent overrides are available via archipelago config set:
# Default: download bricks from the hosted R2 catalog
archipelago config set source r2
# Enterprise: resolve bricks from your own git fork
archipelago config set source git
archipelago config set repo https://github.com/your-org/archipelago-fork.git
# Inspect the resolved configuration
archipelago config show
When source is git, every create/generate clones (and caches) the configured repo and stages bricks from bricks/<slug>/ instead of R2 — so Enterprise users can customize brick source while keeping the same workflow.
For a one-off override without changing the persistent config, pass --local-bricks <repo> to generate:
archipelago generate auth_sdk --local-bricks ../archipelago
Featured Bricks
Authentication & onboarding
auth_sdk— login/register flow with event-driven listeners and scoped DI.social_auth_sdk,biometric_auth_sdk— social and biometric sign-in.introduction_sdk— onboarding/intro carousel.
Monetization
paywall_sdk— pricing UI, mock purchase flow, subscription management.rating_review_sdk— in-app rating prompts.
WebView & mini-apps
Archipelago splits WebView into two bricks:
| Brick | Tier | Capabilities |
|---|---|---|
webview_sdk |
Free | Basic WebView: URL loading, navigation controls, progress tracking, one-way JS calls, and URI-scheme interception. No JS bridge. |
webview_sdk_advanced |
Pro | Everything in webview_sdk plus a bidirectional JS bridge (typed handlers + Promises), request/response interceptors for auth-header injection, deeplink routing back to native, and a full mini-app container — a manifest registry, bridge dispatcher, lifecycle state machine, and capability handlers, config-driven via assets/config/mini_apps.yaml. |
archipelago generate webview_sdk # free, basic
archipelago generate webview_sdk_advanced # Pro: JS bridge + mini-app container
The mini-app container ships inside
webview_sdk_advanced— there is no longer a standalone mini-app brick.webview_sdk_advancedrequireswebview_sdkto be installed first.
AI
ai_chat_sdk— Pro streaming chat UI with multi-provider support (OpenAI, Anthropic).
Infrastructure & capabilities
network_sdk, websocket_sdk, monitoring_sdk, analytics_sdk, feature_flag_sdk, connectivity_sdk, push_notification_sdk, feedback_sdk, permission_guard, launch_tracker_sdk, shorebird_sdk, and more.
Monorepo Toolkit (devtools/)
Every generated project ships a free monorepo toolkit at devtools/, exposed through a monorepo_toolkit CLI. The most-used commands for day-to-day flavored development:
# From the project root, via the devtools toolkit:
dart run monorepo_toolkit <command>
| Command | Description |
|---|---|
build-prepare <debug|release> |
Swap debug/release dependencies (e.g. monitoring_impl → monitoring_noop) at the pubspec.yaml level before a build, then restore. |
env switch <flavor> |
Switch the active environment (.env := .env.<flavor>) for the selected flavor. Also: env init, env add <KEY>, env sync. |
flavor |
Manage flavors defined in flavors.yaml (flavor list, flavor add, flavor sync, flavor generate). |
run |
Interactive runner — pick an app, flavor, and device, then launch flutter run with the right --flavor and entry point. Pass --app, --flavor, --device to skip the prompts in CI. |
The toolkit also bundles affected change detection, coverage, graph (dependency-graph enforcement), deps, app/workspace scaffolding, and asset/size tooling.
All Commands
Project
| Command | Flags | Description |
|---|---|---|
archipelago create |
--config, --output, --provision-firebase, --provision-supabase |
Scaffold a new modular-monorepo project. |
archipelago generate (alias gen) |
--config, --output, --local-bricks |
Generate a brick into an existing project. |
archipelago doctor (alias dr) |
--verbose, --brick, --fix |
Check system health, dependencies, and brick compatibility. |
archipelago update |
Update the Archipelago CLI to the latest version (via pub). |
Authentication
Archipelago uses device-bound API tokens — your token is pinned to the device that logged in.
| Command | Flags | Description |
|---|---|---|
archipelago auth login |
--token, --interactive |
Authenticate with your API token (or open the browser to fetch one). |
archipelago auth logout |
Sign out and clear stored credentials. | |
archipelago auth status |
Show current authentication and subscription status. | |
archipelago auth activate |
--promo |
Activate a free trial with a promo code. |
archipelago auth rotate-key |
Rotate your device-bound API key. |
archipelago auth login --token <your-api-token>
archipelago auth activate --promo LAUNCH2026
Configuration
| Command | Description |
|---|---|
archipelago config show |
Print the resolved CLI configuration (source, repo, telemetry). |
archipelago config set <key> <value> |
Set source (r2/git) or repo (enterprise fork URL). |
archipelago config telemetry |
--enable, --disable, --status — manage anonymous usage telemetry. |
archipelago config telemetry --disable
archipelago config show
Brick management
| Command | Flags | Description |
|---|---|---|
archipelago brick list (alias ls) |
List all bricks available for your tier. | |
archipelago brick download |
--all |
Download a specific brick (or all bricks) into the cache. |
archipelago brick update |
Update cached bricks to the latest versions. | |
archipelago brick info |
Show detailed information about a brick. |
Utilities
| Command | Description |
|---|---|
archipelago --version |
Show the current CLI version. |
archipelago completion install |
Install shell completion. |
Cloud CLI checks (archipelago doctor)
archipelago doctor includes an optional Cloud CLIs section. These checks (Firebase, gcloud, Supabase) are never fatal — they are informational so you know what to install before using the --provision-* flags.
Cloud CLIs (optional — required for --provision-*)
✓ firebase 13.0.0
! gcloud not installed (https://cloud.google.com/sdk/docs/install)
✓ supabase 1.131.7
Generated Project Includes
- Dual-GetIt DI — global scope for SDKs/infrastructure, local scope per feature.
- FeatureSDK + Registry — features self-register and contribute routes before the router is built.
- Two-phase init — blocking pre-launch (DI, routes) + non-blocking post-launch (analytics, flags).
- build_prepare — swap debug/release dependencies to strip debug-only code from release builds.
- Fastlane — iOS + Android build/deploy lanes.
- CI/CD — GitHub Actions or GitLab CI workflows.
- AI agent support — generated
CLAUDE.md/AGENTS.mdso AI coding assistants understand the architecture.
Philosophy
- Modularity: independent yet connected packages, like islands in an archipelago.
- Scalability: from small apps to enterprise solutions.
- Maintainability: clear structure and consistent patterns.
- Developer Experience: efficient workflows and tooling.
Documentation
License
Archipelago is available under the MIT License. See the LICENSE file for more info.
Support
Built with love for the Flutter community
Libraries
- archipelago_cli
- Archipelago CLI — toolkit for generating production-ready Flutter projects.