> ## Documentation Index
> Fetch the complete documentation index at: https://docs.5x.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Publishing & Deployment

> Publish your applications and configure deployment options for different use cases and environments

**Focus:** Learn how to publish your Data & AI Apps, configure deployment options, and manage access controls for different user groups.

Publishing your Data & AI App makes it available to users and configures how it runs in production. You can choose from multiple deployment options and set up access controls to ensure your application is available to the right users at the right time.

## Publishing workflow

### **Access the publish dialog**

To publish your app, navigate to the **Manage Apps** section and click the three-dots menu next to your application, then select **Publish**:

<img src="https://mintcdn.com/5x/2WYeRj_Bh8M3hHdn/images/data-ai-apps/publish-menu.png?fit=max&auto=format&n=2WYeRj_Bh8M3hHdn&q=85&s=1c87576ddeeae3370da1d1c41a14212e" alt="Publish Menu Option" style={{borderRadius: '12px', boxShadow: '0 4px 12px rgba(0, 0, 0, 0.1)'}} width="2588" height="232" data-path="images/data-ai-apps/publish-menu.png" />

This opens the **Publish app** dialog where you can configure all deployment settings:

<img src="https://mintcdn.com/5x/2WYeRj_Bh8M3hHdn/images/data-ai-apps/publish-dialog.png?fit=max&auto=format&n=2WYeRj_Bh8M3hHdn&q=85&s=3ae3a7f53c7fb6a412f498618436311d" alt="Publish App Dialog" style={{borderRadius: '12px', boxShadow: '0 4px 12px rgba(0, 0, 0, 0.1)', width: '33%', height: 'auto'}} width="710" height="1588" data-path="images/data-ai-apps/publish-dialog.png" />

## App configuration

### **Basic app settings**

Configure the essential settings for your published application:

**App emoji:**

* Select an emoji that represents your application
* This appears in the navigation and app listings
* Choose something that users will easily recognize

**App name:**

* Enter the display name for your application
* This is what users will see in the navigation
* Use clear, descriptive names that indicate the app's purpose

**Branch:**

* Select which Git branch to deploy from
* Typically `main` or `master` for production deployments
* You can use different branches for different environments

### **Technical configuration**

**Python version:**

* Select the Python version for your application
* Choose based on your app's requirements and dependencies
* Common options include Python 3.8.20, 3.9.23, 3.10.18, 3.11.13, 3.12.11, and 3.13.4

**Compute profile:**

* Configure the compute resources for your application
* Options range from basic to high-performance configurations
* Choose based on your app's computational needs and expected usage
* **Custom profiles**: Create and manage custom compute profiles from **Settings → Compute Profiles** in the platform

<img src="https://mintcdn.com/5x/2WYeRj_Bh8M3hHdn/images/data-ai-apps/compute-profile.png?fit=max&auto=format&n=2WYeRj_Bh8M3hHdn&q=85&s=c19d3e342a3eec558d3db187b7175f40" alt="Compute Profile Configuration" style={{borderRadius: '12px', boxShadow: '0 4px 12px rgba(0, 0, 0, 0.1)', width: '40%', height: 'auto'}} width="720" height="518" data-path="images/data-ai-apps/compute-profile.png" />

## Deployment options

### **Understanding deployment types**

Choose the deployment option that best fits your use case:

<img src="https://mintcdn.com/5x/2WYeRj_Bh8M3hHdn/images/data-ai-apps/deployment-options.png?fit=max&auto=format&n=2WYeRj_Bh8M3hHdn&q=85&s=b0c04f74267e3f57b11bd8026bbd37cb" alt="Deployment Options" style={{borderRadius: '12px', boxShadow: '0 4px 12px rgba(0, 0, 0, 0.1)', width: '40%', height: 'auto'}} width="716" height="952" data-path="images/data-ai-apps/deployment-options.png" />

<Tabs>
  <Tab title="Always-on">
    **Best for:** Production applications with consistent usage

    **Characteristics:**

    * Application runs continuously
    * Immediate access for users
    * Higher resource costs but better user experience
    * Suitable for mission-critical applications

    **Use cases:**

    * Production dashboards and reports
    * Customer-facing applications
    * Real-time monitoring tools
    * Applications requiring immediate availability
  </Tab>

  <Tab title="Scheduled">
    **Best for:** Applications with predictable usage patterns

    **Characteristics:**

    * App runs only during specified hours
    * Outside scheduled hours, starts on-demand
    * Balances cost and availability
    * Configurable time zones and schedules

    **Configuration options:**

    * **Time range:** Set start/end time or use CRON Expression
    * **Days:** Choose weekdays only or full week
    * **Timezone:** Configure for your location
    * **Automatic timezone:** Detect user's location

    **Use cases:**

    * Business hours applications
    * Regional applications with specific time zones
    * Cost-optimized production deployments
    * Applications with predictable usage patterns
  </Tab>

  <Tab title="On-demand">
    **Best for:** Development, testing, and low-frequency usage

    **Characteristics:**

    * App starts up when a user tries to access it
    * It usually takes some time to start
    * Automatically shuts down after 30 minutes of inactivity
    * Cost-effective for applications with sporadic usage

    **Use cases:**

    * Development and testing environments
    * Internal tools with occasional usage
    * Prototype applications
    * Applications with unpredictable usage patterns
  </Tab>
</Tabs>

## Access control and permissions

### **Role-based access control**

Configure who can access your application using role-based permissions:

<img src="https://mintcdn.com/5x/2WYeRj_Bh8M3hHdn/images/data-ai-apps/access-control.png?fit=max&auto=format&n=2WYeRj_Bh8M3hHdn&q=85&s=58a699c5ee5201c72806197d5d17f643" alt="Access Control Configuration" style={{borderRadius: '12px', boxShadow: '0 4px 12px rgba(0, 0, 0, 0.1)', width: '50%', height: 'auto'}} width="686" height="310" data-path="images/data-ai-apps/access-control.png" />

### **Permission best practices**

<CardGroup cols={2}>
  <Card title="Principle of least privilege" icon="shield">
    **Minimal access**

    Grant only the minimum permissions necessary for users to perform their tasks.
  </Card>

  <Card title="Regular reviews" icon="calendar">
    **Access audits**

    Regularly review and update access permissions as roles change.
  </Card>

  <Card title="Clear documentation" icon="file-text">
    **Permission tracking**

    Document who has access to what and why for compliance purposes.
  </Card>

  <Card title="Testing access" icon="check-circle">
    **Verify permissions**

    Test access controls to ensure they work as expected.
  </Card>
</CardGroup>

## Publishing process

### **Step-by-step publishing**

<Steps>
  <Step title="Configure app settings">
    Set your app name, emoji, branch, and environment
  </Step>

  <Step title="Select compute profile">
    Choose appropriate compute resources for your application
  </Step>

  <Step title="Choose deployment option">
    Select on-demand, always-on, or scheduled deployment
  </Step>

  <Step title="Configure access control">
    Set up view and edit permissions for different user roles
  </Step>

  <Step title="Review and publish">
    Review all settings and click Publish to deploy your application
  </Step>
</Steps>

### **Post-publishing**

After publishing, your application will:

1. **Appear in navigation** - Users with view permissions will see the app in their left navigation
2. **Be accessible** - The app will be available based on your deployment configuration
3. **Show in Manage Apps** - You can monitor and manage the app from the Manage Apps interface
4. **Display status** - The app status will show as "Published" in the apps list

## Managing published apps

### **App status management**

**Published apps:**

* Visible to users with appropriate permissions
* Accessible based on deployment configuration
* Can be managed through the Manage Apps interface

**Unpublished apps:**

* Not visible to regular users
* Still accessible to Admin users and users with Global edit access
* Can be republished at any time

### **Edit app details**

You can modify app settings after publishing by clicking **Edit details** from the three-dots menu.

This opens the same configuration dialog as publishing, allowing you to:

* Update app settings and configuration
* Change deployment options
* Modify access permissions
* Update compute profiles

### **Unpublishing apps**

To unpublish an app:

1. Go to the Manage Apps interface
2. Click the three-dots menu next to your app
3. Select **Unpublish** (this option appears for published apps)
4. Confirm the unpublishing action

Unpublished apps remain accessible to Admin users and users with Global edit access, but are hidden from regular users.

## Troubleshooting

### **Common publishing issues**

<AccordionGroup>
  <Accordion icon="exclamation-triangle" title="Publishing failures">
    **Issue:** App fails to publish

    **Solutions:**

    * Check that all required fields are filled out
    * Verify the selected branch exists and contains valid code
    * Ensure compute profile is appropriate for your app
    * Check for any configuration errors or conflicts
  </Accordion>

  <Accordion icon="clock" title="Deployment delays">
    **Issue:** App takes too long to start

    **Solutions:**

    * Consider upgrading to a higher compute profile
    * Optimize your app's startup time and dependencies
    * Use always-on deployment for frequently accessed apps
    * Review and optimize your requirements.txt
  </Accordion>

  <Accordion icon="users" title="Access issues">
    **Issue:** Users cannot access the published app

    **Solutions:**

    * Verify user roles and permissions are correctly configured
    * Check that users have the appropriate view permissions
    * Ensure the app is published and not unpublished
    * Verify deployment configuration is correct
  </Accordion>
</AccordionGroup>

***
