AI-powered minimalist packing list generator using capsule wardrobe principles.
PackMin uses AI (OpenAI, DeepSeek, GLM, Gemini, or Anthropic Claude) combined with weather data to generate smart, efficient packing lists that maximize versatility while minimizing what you carry.
- π€οΈ Weather-aware - Fetches real forecast data for your destinations
- π Capsule wardrobe - Maximizes mix-and-match versatility
- π Multi-destination - Plan trips with multiple stops
- π§Ί Laundry-aware - Adjusts quantities based on laundry access
- π¦ Volume tracking - Estimates packing cube needs and luggage fit
- πΎ Multiple export formats - TXT, Markdown, CSV (for todo apps)
- π€ Multiple AI providers - Choose from OpenAI, DeepSeek, GLM, Gemini, or Anthropic
- β¨ OAuth providers - Use Gemini CLI or Claude CLI without API keys
- π§ Interactive setup - First-run wizard configures everything
git clone https://github.com/minhsao/packmin.git
cd packmin
pip install -e .pip install -r requirements.txt
pip install -e .Just run packmin β if no configuration exists, it will launch an interactive setup wizard:
packmin
# π PackMin - First Time Setup
# Choose AI provider, enter API keys, etc.You can re-run setup anytime with:
packmin --setupConfiguration is saved to ~/.packmin/.env (or .env in the current directory).
PackMin supports two types of AI providers:
These use CLI tools that authenticate via your browser:
| Provider | Install Command | Notes |
|---|---|---|
gemini-cli |
npm install -g @google/gemini-cli |
Run gemini once to authenticate |
claude-cli |
npm install -g @anthropic-ai/claude-code |
Run claude once to authenticate |
| Provider | Environment Variable | Get API Key |
|---|---|---|
deepseek |
DEEPSEEK_API_KEY |
platform.deepseek.com |
openai |
OPENAI_API_KEY |
platform.openai.com |
gemini |
GEMINI_API_KEY |
aistudio.google.com |
anthropic |
ANTHROPIC_API_KEY |
console.anthropic.com |
glm |
GLM_API_KEY |
open.bigmodel.cn |
For accurate weather forecasts, get a free API key from OpenWeatherMap:
OPENWEATHER_API_KEY=your_key_hereWithout this, PackMin will use seasonal estimates based on historical data.
You can also manually create ~/.packmin/.env or ./.env:
AI_PROVIDER=gemini-cli
# OPENWEATHER_API_KEY=your_key # optionalOr for API-key providers:
AI_PROVIDER=deepseek
DEEPSEEK_API_KEY=your_deepseek_api_key
ANTHROPIC_API_KEY=your_anthropic_api_key
ANTHROPIC_MODEL=claude-3-sonnet-20240229 # optional, this is the default# Defaults
DEFAULT_LUGGAGE_VOLUME=39 # liters
PACKING_CUBE_VOLUME=9 # liters- OpenWeather: Sign up at openweathermap.org (free tier available)
- DeepSeek: Get key from platform.deepseek.com
- OpenAI: Get key from platform.openai.com
- GLM (ZhipuAI): Get key from open.bigmodel.cn
- Google Gemini: Get key from makersuite.google.com
- Anthropic: Get key from console.anthropic.com
Simply run packmin and follow the prompts:
packminThe interactive wizard will ask for:
- Destinations with dates
- Traveler info (gender, age, clothing size)
- Activities and special events
- Laundry availability
- Luggage size
For scripted or quick use, provide flags directly:
# Single destination
packmin \
-d "Paris, France" \
-s 2025-06-01 \
-e 2025-06-07 \
-g male \
-a 30 \
--activities "sightseeing, nice dinners" \
--volume 39
# Multiple destinations
packmin \
-d "Paris, France" -s 2025-06-01 -e 2025-06-03 \
-d "Rome, Italy" -s 2025-06-04 -e 2025-06-07 \
-g female \
--laundry \
--format md \
-o my_trip.mdOptions:
-d, --destination TEXT Destination (can be repeated)
-s, --start-date TEXT Start date YYYY-MM-DD (pairs with --destination)
-e, --end-date TEXT End date YYYY-MM-DD (pairs with --destination)
-g, --gender TEXT Traveler gender
-a, --age INTEGER Traveler age
--size TEXT Clothing size
--shoe-size TEXT Shoe size
--activities TEXT Activities (comma-separated)
--laundry / --no-laundry Laundry available
-v, --volume FLOAT Luggage volume in liters [default: 39.0]
-n, --notes TEXT Additional notes for AI
-o, --output PATH Output file path
--format [txt|md|csv] Output format
--debug Enable debug output
-i, --interactive Force interactive mode
--help Show this message and exit.
Plain text packing list with all details.
Formatted markdown suitable for notes apps or documentation.
Simple format for importing into:
- Microsoft To Do
- Apple Reminders
- Any task manager that accepts CSV
pip install -e ".[dev]"pytestruff check .
ruff format .packmin/
βββ packmin/
β βββ __init__.py # Package exports
β βββ cli.py # Click-based CLI
β βββ config.py # Environment config
β βββ weather.py # OpenWeather integration
β βββ ai.py # AI providers (OpenAI/DeepSeek/GLM/Gemini/Anthropic)
β βββ prompts.py # AI prompt templates
β βββ models.py # Pydantic data models
βββ tests/
β βββ test_models.py # Unit tests
βββ pyproject.toml # Package config
βββ requirements.txt # Dependencies
βββ README.md
MIT