Deployment Options
Local Development
Run Phoenix on your local machine with a single command. Perfect for development and testing.
Docker
Deploy Phoenix using Docker for containerized environments. Includes Docker Compose for complete setups.
Kubernetes
Deploy Phoenix on Kubernetes using Helm charts for production-scale deployments.
Phoenix Cloud
Use the managed Phoenix Cloud service. No infrastructure to manage, free tier available.
Local Development
The simplest way to get started with Phoenix is to run it locally.Quick Start
- Web UI on port 6006
- gRPC endpoint on port 4317 (for receiving traces)
- SQLite database in the current directory
Custom Configuration
You can customize the deployment using environment variables:Running in a Notebook
You can also launch Phoenix from a Jupyter notebook:When running in a notebook, Phoenix will automatically shut down when the notebook kernel stops.
Docker Deployment
Docker provides a consistent, isolated environment for running Phoenix.Single Container
Run Phoenix as a standalone container:Docker Compose with PostgreSQL
For production use, we recommend using PostgreSQL instead of SQLite. Create adocker-compose.yml:
docker-compose.yml
Environment Variables for Docker
Common environment variables for Docker deployments:| Variable | Description | Example |
|---|---|---|
PHOENIX_SQL_DATABASE_URL | Database connection string | postgresql://user:pass@host:5432/db |
PHOENIX_WORKING_DIR | Data directory | /phoenix/.data |
PHOENIX_PORT | HTTP server port | 6006 |
PHOENIX_HOST | Bind address | 0.0.0.0 |
PHOENIX_TELEMETRY_ENABLED | Enable/disable telemetry | false |
Kubernetes Deployment
For production deployments at scale, Phoenix provides Helm charts.Prerequisites
- Kubernetes cluster (1.19+)
- Helm 3.x
kubectlconfigured to access your cluster
Install with Helm
Add the Phoenix Helm repository and install:Custom Values
Create avalues.yaml file to customize your deployment:
values.yaml
External PostgreSQL
To use an existing PostgreSQL instance:values.yaml
Upgrading
Uninstalling
Phoenix Cloud
Phoenix Cloud is a fully managed service that eliminates the need to manage infrastructure.Benefits
- Zero infrastructure: No servers to manage or maintain
- Automatic scaling: Handles any workload size
- High availability: Built-in redundancy and backups
- Free tier: Generous free tier for development and small projects
- Collaboration: Built-in team features and access controls
Getting Started
Sign Up
Create a free account at app.phoenix.arize.com.
Pricing
Phoenix Cloud offers:- Free tier: Suitable for development and small projects
- Pay-as-you-go: Scale up as needed
- Enterprise: Custom pricing for large deployments
AWS Deployment
Deploy Phoenix on AWS using CloudFormation templates.CloudFormation Templates
Phoenix provides pre-built CloudFormation templates for AWS deployment. These templates are available in the GitHub repository. Templates include:- phoenix-network.yml: VPC and networking setup
- app.yml: Phoenix application deployment
- phoenix-auth.yml: Authentication configuration (optional)
For detailed AWS deployment instructions, see the templates in the
tutorials/deployment/AWS Cloudformation directory of the Phoenix repository.Security Considerations
Authentication
By default, Phoenix runs without authentication. For production deployments, consider:- Network isolation: Use firewalls, VPCs, or security groups to restrict access
- Reverse proxy: Use nginx or similar with authentication
- Phoenix Cloud: Built-in authentication and access controls
Database Security
When using PostgreSQL:- Use strong passwords
- Enable SSL/TLS connections
- Restrict network access to the database
- Regular backups
Data Privacy
Phoenix stores:- Trace data (LLM inputs/outputs)
- Evaluation results
- Datasets
- Use encryption at rest for sensitive data
- Configure data retention policies
- Consider data anonymization
Monitoring and Observability
Prometheus Metrics
Phoenix exposes Prometheus metrics on port 9090:Health Checks
Phoenix provides health check endpoints:- Liveness:
GET /health - Readiness:
GET /ready
Performance Tuning
Database Optimization
For high-throughput deployments:- Use PostgreSQL instead of SQLite
- Connection pooling: Configure appropriate pool sizes
- Indexing: Phoenix automatically creates necessary indexes
- Regular maintenance: Run VACUUM and ANALYZE on PostgreSQL
Resource Allocation
Recommended resources based on trace volume:| Traces/Day | CPU | Memory | Database |
|---|---|---|---|
| < 10k | 500m | 1Gi | SQLite or small PostgreSQL |
| 10k - 100k | 1000m | 2Gi | PostgreSQL (2 vCPU, 4GB) |
| 100k - 1M | 2000m | 4Gi | PostgreSQL (4 vCPU, 8GB) |
| > 1M | Contact us | Contact us | Enterprise setup |
Troubleshooting
Traces not appearing in Phoenix
Traces not appearing in Phoenix
Check:
- Phoenix server is running and accessible
- Firewall rules allow connections to port 6006 and 4317
- Application is configured with correct endpoint
- No network connectivity issues
Database connection errors
Database connection errors
Verify:
- Database is running and accessible
- Connection string is correct
- Database user has appropriate permissions
- For PostgreSQL, ensure the database exists
High memory usage
High memory usage
Solutions:
- Increase memory limits
- Configure shorter data retention
- Archive old traces
- Consider scaling horizontally
Next Steps
Tracing Guide
Learn how to instrument your applications to send traces to Phoenix.
Security Guide
Learn about security best practices and privacy considerations.