- Create a
.envfile with your API keys:
ANTHROPIC_API_KEY=your_key_here
OPENAI_API_KEY=your_key_here
GOOGLE_API_KEY=your_key_here- Build and run:
docker-compose up --build- Access the app at
http://localhost:8501
- Build the image:
docker build -t agno-skills-agent .- Run the container:
docker run -p 8501:8501 \
-e ANTHROPIC_API_KEY=your_key \
-e OPENAI_API_KEY=your_key \
-e GOOGLE_API_KEY=your_key \
-v agno_outputs:/app/outputs \
agno-skills-agent- Model Selection: Choose between GPT-5.1/5.2/5.3, Claude Sonnet 4, or Gemini 3.1 Pro in the UI
- Slim Image: Based on Python 3.12-slim with minimal dependencies
- LibreOffice Support: Includes LibreOffice headless for Excel formula recalculation
- Persistent Outputs: Named volume for reliable data persistence
- Visualization Support:
- Matplotlib charts (.png) - High quality 300 DPI
- Plotly interactive charts (.html)
- File Processing: PDF, DOCX, PPTX, XLSX support
All output files are saved to the outputs/ directory inside the container.
The docker-compose.yml uses a named volume outputs_data which:
- Persists data across container restarts
- Avoids permission issues
- Works consistently across different host systems
Access files from named volume:
# List files
docker run --rm -v outputs_data:/app/outputs alpine ls -la /app/outputs
# Copy files from volume to host
docker cp $(docker-compose ps -q agno-skills-agent):/app/outputs ./my_outputs
# Access via Docker Desktop (Volumes tab) or inspect
docker volume inspect outputs_dataTo use your local ./outputs directory instead, modify docker-compose.yml:
volumes:
- ./outputs:/app/outputs # Bind mount to local directoryNote: May require proper permissions on Linux/Mac:
mkdir -p outputs
chmod 777 outputsRequired API keys (at least one):
ANTHROPIC_API_KEY- For Claude modelsOPENAI_API_KEY- For GPT modelsGOOGLE_API_KEY- For Gemini models
If formula recalculation fails in sandboxed environments:
# The soffice.py helper automatically handles socket restrictions
from agent_skills.validators.scripts.soffice import run_sofficeEnsure the outputs/ directory has proper permissions:
mkdir -p outputs
chmod 777 outputsIf port 8501 is in use, change it in docker-compose.yml:
ports:
- "8502:8501" # Use port 8502 instead