{"id":44852363,"url":"https://github.com/rwellinger/thwellys-ai-toolbox","last_synced_at":"2026-02-17T06:33:14.937Z","repository":{"id":317684380,"uuid":"1035834038","full_name":"rwellinger/thwellys-ai-toolbox","owner":"rwellinger","description":"Your AI-powered music production workflow — from first idea to finished release.  Capture song ideas, write lyrics with AI assistance, generate full songs, create cover art, and manage your music projects — all in one self-hosted application.","archived":false,"fork":false,"pushed_at":"2026-01-31T15:48:31.000Z","size":73080,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-01T03:37:47.947Z","etag":null,"topics":["ai","ai-chat","angular","apple-silicon","colima","complete-solutions","docker","docker-compose","graphic-generator","graphics","macos","mureka","ollama","ollama-api","openai","phython3","song-generation","song-lyrics"],"latest_commit_sha":null,"homepage":"https://www.thwelly.ch","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rwellinger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-11T06:53:15.000Z","updated_at":"2026-01-31T15:48:33.000Z","dependencies_parsed_at":"2025-10-02T12:38:51.188Z","dependency_job_id":null,"html_url":"https://github.com/rwellinger/thwellys-ai-toolbox","commit_stats":null,"previous_names":["rwellinger/thwelly_ai_tools","rwellinger/aiproxy","rwellinger/thwellys-ai-toolbox"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/rwellinger/thwellys-ai-toolbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwellinger%2Fthwellys-ai-toolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwellinger%2Fthwellys-ai-toolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwellinger%2Fthwellys-ai-toolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwellinger%2Fthwellys-ai-toolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rwellinger","download_url":"https://codeload.github.com/rwellinger/thwellys-ai-toolbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rwellinger%2Fthwellys-ai-toolbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29535981,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T05:00:25.817Z","status":"ssl_error","status_checked_at":"2026-02-17T04:57:16.126Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-chat","angular","apple-silicon","colima","complete-solutions","docker","docker-compose","graphic-generator","graphics","macos","mureka","ollama","ollama-api","openai","phython3","song-generation","song-lyrics"],"created_at":"2026-02-17T06:33:14.422Z","updated_at":"2026-02-17T06:33:14.926Z","avatar_url":"https://github.com/rwellinger.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# thWelly's AI Toolbox\n\n**Your AI-powered music production workflow** — from first idea to finished release.\n\nCapture song ideas, write lyrics with AI assistance, generate full songs, create cover art, and manage your music projects — all in one self-hosted application.\n\n[![Build Status](https://github.com/rwellinger/thwellys-ai-toolbox/actions/workflows/release.yml/badge.svg)](https://github.com/rwellinger/thwellys-ai-toolbox/actions)\n[![License: ELv2](https://img.shields.io/badge/License-ELv2-blue.svg)](LICENSE)\n[![Angular](https://img.shields.io/badge/Angular-20-red.svg)](https://angular.io/)\n[![Python](https://img.shields.io/badge/Python-3.12-blue.svg)](https://www.python.org/)\n\n---\n\n## The Workflow\n\n```\nIdea → Sketch → Lyrics → Song → Cover → Project\n```\n\n| Stage | What happens | AI helps with |\n|-------|--------------|---------------|\n| **Idea** | Capture a musical concept or mood | — |\n| **Sketch** | Structure your idea with title, genre, mood | Generate catchy titles |\n| **Lyrics** | Write verses, chorus, bridge | Improve, rewrite, extend lyrics |\n| **Song** | Generate full audio from lyrics | Use your own tool (Suno, Mureka, etc.) |\n| **Cover** | Create album artwork | Image generation (DALL-E 3) |\n| **Project** | Organize files, sync with DAW | S3 storage, CLI integration |\n\n---\n\n## Features\n\n### Song Sketches\nCapture and organize your song ideas before they slip away. Tag with genre, mood, and tempo. Track workflow status (draft, ready, used, archived). Convert sketches directly to full songs when you're ready.\n\n### Lyric Creation\nSection-based editor for verses, choruses, bridges, and more. AI-powered tools help you improve phrasing, rewrite weak lines, or extend sections. Build your song architecture with drag \u0026 drop, then export to the music generator.\n\n### Music Generation\nUse your preferred AI music generation tool (such as Suno, Mureka, or others) to generate songs from your lyrics. Export lyrics directly from the lyric editor in the format your tool needs. Prompt suggestions and lyric formatting are optimized for the most popular AI music generation tools.\n\n### Cover Art\nDALL-E 3 integration creates album artwork. One-click AI prompt enhancement for better results. Built-in text overlay editor adds titles and artist names. Gallery view keeps all your artwork organized.\n\n### Project Management\nComplete file management for music production. Hierarchical folder structure (Arrangement, Mixing, Stems, etc.) mirrors your DAW project. S3 cloud storage with batch upload/download. CLI tool syncs files between cloud and local DAW folder.\n\n### AI Chat Assistant\nMulti-model support via Ollama (Llama, Mistral, etc.). Persistent conversation history. Use it for brainstorming, research, or general creative assistance.\n\n### Equipment Tracking\nTrack your music production software, plugins, and gear. Secure credential storage (encrypted). License management for iLok, online activations, and serial keys.\n\n---\n\n## API Keys \u0026 Costs\n\n**This project is free and open source.** However, some AI features require API keys from external providers that may incur usage costs:\n\n| Feature | Provider | Cost |\n|---------|----------|------|\n| Cover Art Generation | [OpenAI](https://platform.openai.com/) (DALL-E 3) | Pay-per-use |\n| AI Chat (cloud) | [OpenAI](https://platform.openai.com/) or [Anthropic](https://console.anthropic.com/) | Pay-per-use |\n| AI Chat (local) | [Ollama](https://ollama.ai/) | Free (runs locally) |\n\n**Important:**\n- All API keys are configured in your local `.env` file on your own infrastructure\n- You obtain and manage API keys directly with each provider\n- The project author has no access to your keys or usage data\n- Ollama provides a free, local alternative for AI chat features\n\n---\n\n## Quick Start\n\n### Prerequisites\n\n- Python 3.12+ with Conda/Miniconda\n- Node.js 20+ with npm\n- Docker (via Colima on macOS)\n- PostgreSQL 15+\n- Redis\n\n### Development Setup\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/rwellinger/thwellys-ai-toolbox.git\n   cd thwellys-ai-toolbox\n   ```\n\n2. **Backend Setup**\n   ```bash\n   cd aiproxysrv\n   conda create -n mac_ki_service_py312 python=3.12\n   conda activate mac_ki_service_py312\n   pip install -r requirements.txt\n\n   # Copy and configure environment\n   cp env_template .env\n   # Edit .env with your API keys (OpenAI)\n\n   # Run database migrations\n   cd src \u0026\u0026 alembic upgrade head\n\n   # Start backend\n   python src/server.py\n   ```\n\n3. **Frontend Setup**\n   ```bash\n   cd aiwebui\n   npm install\n   npm run dev\n   ```\n\n4. **Start Celery Worker** (for async tasks like music generation)\n   ```bash\n   python src/worker.py\n   ```\n\n---\n\n## For Developers\n\n### Tech Stack\n\n| Layer | Technologies |\n|-------|-------------|\n| **Frontend** | Angular 20, TypeScript, Angular Material, SCSS, RxJS |\n| **Backend** | Python 3.12, FastAPI, SQLAlchemy 2.0, Pydantic 2.0 |\n| **Async Processing** | Celery 5.4, Redis |\n| **Database** | PostgreSQL 15 |\n| **Storage** | S3-compatible (MinIO, AWS S3, Backblaze B2) |\n| **AI Services** | OpenAI (DALL-E 3, GPT), Ollama |\n| **Deployment** | Docker, Docker Compose, Nginx, GitHub Actions |\n| **Code Quality** | Ruff (Python), ESLint (TypeScript), import-linter |\n\n### Architecture\n\nThis project follows a **3-layer architecture** with strict separation of concerns:\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                    Frontend (Angular 20)                     │\n│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────────────┐ │\n│  │  Pages  │  │Services │  │Components│  │ ApiConfigService│ │\n│  └────┬────┘  └────┬────┘  └─────────┘  └────────┬────────┘ │\n└───────┼────────────┼────────────────────────────┼───────────┘\n        │            │                            │\n        ▼            ▼                            ▼\n┌─────────────────────────────────────────────────────────────┐\n│                   Backend (FastAPI)                          │\n│  ┌────────────┐  ┌─────────────┐  ┌──────────────────────┐  │\n│  │ Controller │→ │ Orchestrator │→ │ Transformer/Service │  │\n│  │  (HTTP)    │  │ (Coordinate) │  │  (Pure Functions)   │  │\n│  └────────────┘  └──────┬──────┘  └──────────────────────┘  │\n│                         │                                    │\n│  ┌──────────────────────┴───────────────────────────────┐   │\n│  │              Repository Layer (CRUD)                  │   │\n│  └───────────────────────┬──────────────────────────────┘   │\n└──────────────────────────┼──────────────────────────────────┘\n                           │\n        ┌──────────────────┼──────────────────┐\n        ▼                  ▼                  ▼\n┌──────────────┐  ┌──────────────┐  ┌──────────────┐\n│  PostgreSQL  │  │    Redis     │  │  S3 Storage  │\n└──────────────┘  └──────────────┘  └──────────────┘\n```\n\nFor detailed architecture documentation, see [docs/arch42/README.md](docs/arch42/README.md).\n\n### Project Structure\n\n```\nthwellys-ai-toolbox/\n├── aiproxysrv/          # Python Backend (FastAPI)\n│   ├── src/\n│   │   ├── adapters/    # External API clients (OpenAI, Ollama)\n│   │   ├── api/         # Controllers \u0026 Routes\n│   │   ├── business/    # Business logic (transformers, orchestrators)\n│   │   ├── db/          # Repository layer (SQLAlchemy)\n│   │   └── celery_app/  # Async task processing\n│   └── fonts/           # Font files for text overlays\n│\n├── aiwebui/             # Angular 20 Frontend\n│   └── src/app/\n│       ├── pages/       # Feature pages\n│       ├── services/    # API services\n│       ├── components/  # Shared components\n│       └── models/      # TypeScript interfaces\n│\n├── scripts/\n│   ├── build/           # Release \u0026 build automation\n│   ├── cli/             # CLI tool (aiproxy-cli)\n│   └── db/              # Database seeding\n│\n├── forwardproxy/        # Nginx reverse proxy\n└── docs/                # Documentation (arc42, patterns)\n```\n\n### API Documentation\n\nThe backend provides auto-generated OpenAPI documentation:\n- **Swagger UI**: `http://localhost:5050/docs`\n- **ReDoc**: `http://localhost:5050/redoc`\n\n### CLI Tool\n\nThe CLI tool integrates with your local DAW workflow:\n\n```bash\n# Install\nmake install-cli\n\n# Login\naiproxy-cli login\n\n# Clone project to local folder\naiproxy-cli clone \u003cproject-id\u003e ~/Music/Projects/ -d\n\n# Mirror sync (local to cloud)\naiproxy-cli mirror \u003cproject-id\u003e \u003cfolder-id\u003e ~/path --dry-run\n```\n\nSee [scripts/cli/README.md](scripts/cli/README.md) for full documentation.\n\n### Testing \u0026 Code Quality\n\n```bash\n# Backend\nmake lint-all     # Ruff + import-linter\nmake test         # pytest\n\n# Frontend\nmake build-prod   # Linters + Tests + Production build\nmake lint-fix     # Auto-fix issues\n```\n\n---\n\n## Deployment\n\nFor production deployment instructions including Docker Compose configurations, Nginx setup, and backup strategies, see [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md).\n\n---\n\n## Documentation\n\n- **Architecture**: [docs/arch42/README.md](docs/arch42/README.md) - Comprehensive arc42 documentation\n- **UI Patterns**: [docs/UI_PATTERNS.md](docs/UI_PATTERNS.md) - Frontend component patterns\n- **Code Patterns**: [docs/CODE_PATTERNS.md](docs/CODE_PATTERNS.md) - Backend patterns\n- **CLI Tool**: [scripts/cli/README.md](scripts/cli/README.md) - Command-line interface\n\n---\n\n## License\n\nThis project is licensed under the [Elastic License 2.0 (ELv2)](LICENSE).\n\n**You may:**\n- Use, copy, and modify the software\n- Use it for personal and commercial purposes\n- Fork and create derivative works\n\n**You may not:**\n- Provide the software as a hosted/managed service (SaaS)\n- Remove or alter license notices\n\n---\n\n## Author\n\n**Robert Wellinger**\n\n---\n\n## Acknowledgments\n\n- [OpenAI](https://openai.com/) - DALL-E 3 and GPT APIs\n- [Ollama](https://ollama.ai/) - Local LLM infrastructure\n- [Angular](https://angular.io/) - Frontend framework\n- [FastAPI](https://fastapi.tiangolo.com/) - Backend framework\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frwellinger%2Fthwellys-ai-toolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frwellinger%2Fthwellys-ai-toolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frwellinger%2Fthwellys-ai-toolbox/lists"}