Managing Applications
Applications are the core entities in Manager, representing individual deployable services or apps within your SaaS platform.
What is an Application?
An application represents a deployable service with:
- Unique configuration - Application-specific settings
- One or more endpoints - Access points for the application
- Trigger integration - Automation and scheduled tasks
- User access - Role-based permissions
Applications are project-level since Wave 3
An application is defined once at the project level and enabled per tenant via Tenant2Application; it no longer belongs to a single tenant. One deployed proxy and backend per (application, environment) serve every enabled tenant. See Multi-tenancy and the Migration Guide.
Creating an Application
Step 1: Navigate
Applications live at the project level: open a project, then open its Applications page.
Step 2: Click Create
Click the Create Application button.
Step 3: Fill Details
- Name (required) - Application display name
- Slug (required) - Short URL-friendly identifier (auto-filled from the name, max 10 characters); unique per project
- Version (optional) - Application version (defaults to
0.1.0) - Description - Brief description
Step 4: Create
Click Create to save. The application is created at the project level. To give a customer organization access, enable it for that tenant (see Managing Tenants).
Application List
The applications table for a project shows:
- # - Application slug
- Name - Application display name
- Version - Application version
- Created at / Created by - Creation metadata
- Updated at / Updated by - Last modification metadata
Columns are sortable, and the list can be filtered by name.
Application Details
Click an application to open its detail page. From there, dedicated sub-pages are available:
Details
- Application metadata (name, slug, version, description)
- Creation and update timestamps, creator and editor
- User access management (add/remove users, assign
readonly/normalroles)
Endpoints
All ESB endpoints for this application:
- Endpoint names and target URLs
- Enabled/disabled state
- Per-endpoint machine user access
See Endpoints for details.
Settings
Application-specific configuration:
- Backend Settings - Modules, key-value pairs
- Frontend Settings - Themes, locales, modules
- Configuration Layers - View inheritance
See Settings Editor for a comprehensive guide.
Triggers
Automation configured for this application:
- Cron schedules
- Trigger names and descriptions
- Enable/disable toggles
See Triggers & Automation for details.
Editing an Application
- Navigate to application details
- Click Edit
- Update fields:
- Name
- Description
- Version
- Click Save Changes
Enabling for Tenants
An application is offered to a customer organization by enabling it for that tenant, not by cloning it:
- UI: the Application → Tenants tab (or Tenant → Applications) toggles enablement and edits per-(tenant, application) config.
- CLI:
pfy application enable --tenant <slug>/disable/list-tenants.
The cross-tenant application promote / copyApplication flow is removed in Wave 3 — with one project-level application there is nothing to promote between tenants. To move configuration between environments (dev → qas → run), copy config between environments rather than cloning the application. See the Migration Guide.
Deleting an Application
Permanent Deletion
Deleting an application removes all associated data including endpoints, triggers, and settings. This cannot be undone.
Steps
- Navigate to application details
- Click Delete
- Review what will be deleted:
- All endpoints
- All triggers
- All settings
- User associations
- Confirm the deletion
Application Domains
Applications are exposed on domains configured at the Proxy: each domain in the proxy's Caddyfile is mapped to an application (and its tenant). DNS for the domain must point at the proxy:
app.example.comSee the proxy documentation for domain setup.
Best Practices
Naming
- Use descriptive names: "Customer Dashboard", "Admin Portal"
- Include version if needed: "API v2", "Dashboard v3"
- Keep identifiers URL-friendly: lowercase, hyphens
Organization
- Group related services in same project
- Use consistent naming across environments
- Document purpose in description field
Configuration
- Override project settings only when necessary
- Keep application-specific customizations minimal
- Document custom configurations
Security
- Regularly review user access
- Use Personal Access Tokens for API access
- Monitor audit logs for suspicious activity
Common Use Cases
Multi-Environment Setup
Environments are modeled as tenants, each containing its own copy of the application:
Project: MyProduct
├─ Tenant: Development
│ └─ Application: MyProduct App
├─ Tenant: Staging
│ └─ Application: MyProduct App
└─ Tenant: Production
└─ Application: MyProduct AppMicroservices Architecture
Each service as an application:
Project: E-commerce Platform
├─ Application: Auth Service
├─ Application: Product Catalog
├─ Application: Shopping Cart
├─ Application: Payment Service
└─ Application: Order ManagementWhite-Label SaaS
Different branding per customer:
Project: Enterprise Clients
├─ Application: Client A Portal (blue theme)
├─ Application: Client B Portal (green theme)
└─ Application: Client C Portal (red theme)Troubleshooting
Cannot Create Application
Issue: "Project not found" error
Solution: Ensure you have access to the selected project and tenant
Endpoints Not Accessible
Check:
- Are the endpoints enabled and configured correctly?
- Does the calling machine user have access to the endpoint?
- Is DNS pointing to the proxy?
- Check application logs
Settings Not Taking Effect
Reason: Configuration might be cached
Solution:
- View effective configuration
- Verify settings are saved
- Restart application if needed
- Check configuration inheritance
Triggers Not Executing
Check:
- Are the triggers enabled?
- Is a backend registered and healthy for the application?
- Check backend logs for errors
See Also
- Endpoints - Configure application access
- Settings Editor - Customize application behavior
- Triggers & Automation - Automate tasks
- Configuration Layers - Understand inheritance