π― Your First WAIIDE Instance
Calliope Integration: This component is integrated into the Calliope AI platform. Some features and configurations may differ from the upstream project.
This guide walks you through creating, accessing, and using your first WAIIDE instance, helping you understand the multi-instance architecture and key features.
π Creating Your First Instance
1. Access JupyterHub
Navigate to your JupyterHub instance:
http://localhost:80002. Login
Use your configured authentication method:
- PAM: System username/password
- OAuth: Click your OAuth provider button
3. Start a Named Server
From the Control Panel
- After login, you’ll see the JupyterHub control panel
- Look for “Named Servers” section
- Click “New Server” or “Add New Server”
Choose a Server Name
Pick a descriptive name for your instance:
- Good names:
waiide-dev,project-alpha,data-analysis - Avoid: Special characters, spaces, or very long names
Example: Enter waiide-dev as your server name
4. Container Startup
- JupyterHub will create a container named
username-waiide-dev - The startup process takes 30-60 seconds
- You’ll see a progress indicator
π Accessing Your Instance
Understanding the URL Structure
Your WAIIDE instance will be accessible at:
http://localhost:8000/user/[username]/[username]-[servername]/Example URLs:
- User:
testuser, Server:waiide-dev - Full URL:
http://localhost:8000/user/testuser/testuser-waiide-dev/
Key URL Features
- β
Clean URLs: No
/WAIIDE/or/proxy/port/paths - β Direct Access: WAIIDE loads immediately at the root
- β Unique Instances: Each server has its own URL namespace
- β Bookmarkable: Save and share specific instance URLs
π» Using WAIIDE
First Look at WAIIDE
When your instance loads, you’ll see:
- WAIIDE Interface: Full WAIIDE experience in your browser
- CalliopeAI Branding: Custom theme and extensions
- File Explorer: Access to your workspace
- Terminal: Integrated terminal access
Key Features to Try
1. Open a File
# WAIIDE will start in /home/calliope
# Try creating a new file
touch hello-world.py2. Use the Terminal
- Access:
View > Terminalor `Ctrl+`` - Full shell: Complete Linux environment
- Package installation:
pip,npm,aptavailable
3. Install Extensions
- Extension panel: Click the extensions icon (squares)
- Search and install: WAIIDE marketplace access
- Persistence: Extensions persist across container restarts
4. CalliopeAI Features
- Pergamon Theme: Beautiful dark/light themes included
- CalliopeAI Agent: AI-powered development assistance (if configured)
π Managing Multiple Instances
Creating Additional Instances
- Return to JupyterHub control panel:
/hub/home - Create another named server (e.g.,
data-science) - Access at:
/user/testuser/testuser-data-science/
Instance Isolation
- Separate Containers: Each instance runs independently
- Isolated Filesystems: No shared data between instances by default
- Independent State: Extensions, settings, and processes are separate
Switching Between Instances
- Control Panel:
/hub/homeshows all your instances - Direct URLs: Bookmark specific instances
- Instance List: See running/stopped instances
π Monitoring Your Instance
Container Status
# Check running containers
docker ps | grep testuser
# Check container resources
docker stats testuser-waiide-devJupyterHub Admin Panel
If you’re an admin user:
- Go to
/hub/admin - View all user instances
- Stop/start instances for users
π οΈ Customizing Your Instance
Environment Variables
Customize your instance behavior through JupyterHub configuration:
# In jupyterhub_config.py
c.DockerSpawner.environment = {
'USE_ALL_COMPONENTS': 'true',
'LOG_LEVEL': 'DEBUG',
'WAIIDE_THEME': 'pergamon-dark',
'CUSTOM_SETTING': 'value'
}Volume Mounts
Persist data between container restarts:
# In jupyterhub_config.py
c.DockerSpawner.volumes = {
'/home/{username}': '/home/calliope', # Persist home directory
'/shared': '/shared' # Shared volume across instances
}Resource Limits
Control instance resource usage:
# In jupyterhub_config.py
c.DockerSpawner.mem_limit = '4G' # 4GB RAM limit
c.DockerSpawner.cpu_limit = 2 # 2 CPU coresπ Understanding Instance Lifecycle
Instance States
- Starting: Container is being created and initialized
- Running: Instance is active and accessible
- Stopped: Container is stopped but not removed
- Failed: Startup failed - check logs
Starting an Instance
JupyterHub β DockerSpawner β Container Creation β Service Start β WAIIDE ReadyStopping an Instance
- From Control Panel: Click “Stop” next to instance name
- Automatic: Instances may stop after inactivity (configurable)
- Manual:
docker stop testuser-waiide-dev
Data Persistence
- With volumes: Data persists across restarts
- Without volumes: Data is lost when container is removed
- Best practice: Always configure volume mounts for important data
π¨ Troubleshooting First Instance Issues
Instance Won’t Start
# Check JupyterHub logs
sudo journalctl -u jupyterhub -f
# Check container logs
docker logs testuser-waiide-dev
# Check if image exists
docker images | grep waiideCan’t Access WAIIDE
- Check URL: Ensure you’re using the correct URL format
- Check Container:
docker ps | grep testuser - Check Logs:
docker logs testuser-waiide-dev - Try Refresh: Sometimes WAIIDE needs a browser refresh
Performance Issues
# Check system resources
htop
# Check container resources
docker stats
# Check memory usage
free -hAuthentication Problems
- Clear browser cache: Shift+Ctrl+R
- Check cookies: Clear JupyterHub cookies
- Re-login: Log out and back in to JupyterHub
β First Instance Checklist
After completing this guide, verify:
- Instance created successfully
- Can access WAIIDE at clean URL
- Terminal works within WAIIDE
- Can create and edit files
- Extensions can be installed
- Multiple instances can be created
- Can switch between instances
π― Common Workflows
Development Workflow
- Create instance for your project (
myproject-dev) - Clone repository in WAIIDE terminal
- Install dependencies (
pip install -r requirements.txt) - WAIIDE and test using WAIIDE features
- Stop instance when done (data persists with volumes)
Data Science Workflow
- Create instance (
data-analysis) - Install packages (
pip install pandas numpy jupyter) - Upload data via WAIIDE file explorer
- Create notebooks and analysis scripts
- Export results when complete
Multiple Project Workflow
- Instance per project:
project-a,project-b,project-c - Switch as needed: Use JupyterHub control panel
- Isolated environments: Each project has separate dependencies
- Resource management: Stop unused instances
β‘οΈ Next Steps
Congratulations! You’ve successfully created and used your first WAIIDE instance.
Continue Learning
- Complete Configuration Guide - Advanced setup options
- Architecture Overview - Understand how WAIIDE works
- Deployment Guide - Set up for production use
Advanced Topics
- ECS Integration - Deploy on AWS ECS
- Troubleshooting - Solve common issues
- Development - Extend and customize WAIIDE
π Need Help?
- Instance Issues: Check Troubleshooting Guide
- Configuration Questions: See Configuration Docs
- Performance Problems: Review Architecture Guide
π Happy coding with your new WAIIDE instance!