Provider Commands
Provider commands install and manage third-party service integrations (SMS, payments, storage, email) and starter templates that extend your project with pre-built feature sets.
forge provider:add
Add a third-party service provider to your project. FORGE updates forge.yaml, automatically appends the required environment variables to both .env and .env.example (with deduplication), and displays the variables for reference.
Usage
forge provider:add <PROVIDER>Available Providers
| Provider | Category | Description |
|---|---|---|
sms:twilio | SMS | Twilio SMS and voice messaging. |
sms:unifonic | SMS | Unifonic SMS gateway (popular in MENA region). |
payments:stripe | Payments | Stripe with Apple Pay and Google Pay support. |
payments:hyperpay | Payments | HyperPay payment gateway. |
payments:checkout | Payments | Checkout.com payment processing. |
storage:s3 | Storage | AWS S3 compatible object storage. |
email:sendgrid | SendGrid transactional email delivery. |
What provider:add Does
When you add a provider, FORGE performs the following steps:
1. Validate the provider type and driver
2. Update forge.yaml with the selected driver
3. Append environment variables to .env and .env.example
- Skips variables that already exist (deduplication)
- Creates the files if they don't exist
- Adds a section header (e.g. "# Sms Provider (twilio)")
4. Display the required environment variables for referenceTIP
If you run provider:add again for the same driver, existing variables are not duplicated. FORGE checks each KEY= before appending.
Examples
# Add Twilio SMS
forge provider:add sms:twilio
# Add S3 storage
forge provider:add storage:s3After adding a provider, the required environment variables are automatically written to .env and .env.example:
# Sms Provider (twilio)
TWILIO_ACCOUNT_SID=your_account_sid
TWILIO_AUTH_TOKEN=your_auth_token
TWILIO_FROM_NUMBER=+1234567890Replace the placeholder values in .env with your actual credentials before running the application.
Development Drivers
Drivers named log (e.g. sms:log, email:log, payment:log) require no environment variables. They log output to the console and are intended for local development.
TIP
Provider service wrappers implement a common trait interface. For example, all SMS providers implement SmsProvider, making it straightforward to swap providers without changing application code.
forge provider:remove
Remove a previously added provider from the project.
Usage
forge provider:remove <PROVIDER>Example
forge provider:remove sms:twilioThis reverses the steps performed by provider:add — removing the service file, configuration block, and unused dependencies.
WARNING
Removing a provider does not clean up code that calls the provider's service. Review your handlers and services for any references after removal.
forge provider:list
Display all available and installed providers.
Usage
forge provider:list [OPTIONS]Options
| Option | Type | Default | Description |
|---|---|---|---|
--category | string | — | Filter by category: sms, payments, storage, or email. |
Example Output
forge provider:list┌──────────────────────┬───────────┬───────────┐
│ Provider │ Category │ Status │
├──────────────────────┼───────────┼───────────┤
│ sms:twilio │ SMS │ Installed │
│ sms:unifonic │ SMS │ Available │
│ payments:stripe │ Payments │ Available │
│ payments:hyperpay │ Payments │ Available │
│ payments:checkout │ Payments │ Available │
│ storage:s3 │ Storage │ Installed │
│ email:sendgrid │ Email │ Available │
└──────────────────────┴───────────┴───────────┘forge provider:list --category=sms┌──────────────────────┬───────────┬───────────┐
│ Provider │ Category │ Status │
├──────────────────────┼───────────┼───────────┤
│ sms:twilio │ SMS │ Installed │
│ sms:unifonic │ SMS │ Available │
└──────────────────────┴───────────┴───────────┘Template Commands
Templates are pre-built feature bundles that add domain-specific functionality to your FORGE project. Unlike providers (which add a single integration), templates scaffold entire feature sets including models, handlers, pages, and migrations.
forge template:add
Add a starter template to your project.
forge template:add <TEMPLATE>Example
forge template:add crmWARNING
Templates should be added early in a project's lifecycle. Adding a template to a project with significant custom code may produce merge conflicts in shared files like route registrations and sidebar navigation.
forge template:list
Display all available templates.
forge template:listExample Output
┌────────────┬─────────────────────────────────────────────────┐
│ Template │ Description │
├────────────┼─────────────────────────────────────────────────┤
│ base │ Authentication, users, roles, permissions, CMS │
│ crm │ Contacts, deals, pipelines, activities │
│ helpdesk │ Tickets, SLA, knowledge base, canned responses │
│ ecommerce │ Products, orders, cart, inventory, coupons │
│ booking │ Appointments, availability, calendar, reminders │
└────────────┴─────────────────────────────────────────────────┘forge template:info
Display detailed information about a specific template, including its description, included modules, required providers, and generated files.
forge template:info <TEMPLATE>Example
forge template:info crmTemplate: crm
Description: Contacts, deals, pipelines, activities
Modules:
• contacts — Contact management with custom fields
• deals — Deal tracking with pipeline stages
• pipelines — Configurable sales pipelines
• activities — Activity logging and reminders
Generated files:
• 8 models
• 8 migrations
• 6 admin pages
• 4 seeders
Required providers:
• email (for notifications)See Also
- Project Commands — use
--templatewithforge newto start with a template - Generator Commands — scaffold custom resources beyond what templates provide
- Deployment Commands — deploy projects with configured providers