vritti
by krshforever
README.md
# Vritti
**Creative OS MCP** — the agent becomes the designer.
A lightweight, no-API-key Creative OS that makes any AI agent a competent graphic designer with brand DNA memory, genre-aware generation, self-critique, and version control.
## Features
- **Zero API keys** — Pollinations.ai (free, no signup) + SVG fallback
- **Brand DNA** — lock colors/fonts/style once → generate forever
- **Genre skills** — horror, music, corporate, cinema, minimal, vibrant
- **35+ presets** — Instagram, LinkedIn, YouTube, TikTok, album covers, movie posters
- **Self-critique** — 6-dimension rubric scoring with auto-regenerate
- **Version control** — every generation tracked (adapted from Rudra Musical Git)
- **SVG generation** — skill-aware local fallback with rsvg-convert
- **Multi-engine** — Pollinations → HuggingFace → SVG fallback chain
## Install
```bash
# No dependencies beyond httpx + pillow (already installed on Termux)
cd ~/vritti
pip install -e .
# Or just use directly
PYTHONPATH=src python3 -m vritti.server
```
## Usage
### As MCP Server (stdio JSON-RPC)
```bash
# Add to your MCP config
{
"vritti": {
"command": "python3",
"args": ["-m", "vritti.server"],
"env": { "PYTHONPATH": "/path/to/vritti/src" }
}
}
```
### Python API
```python
from vritti.server import generate_image, create_brand, quality_check
# Create brand DNA
create_brand(
name="My Brand",
primary_color="#1a1a2e",
secondary_color="#e94560",
style="dark cinematic",
)
# Generate with brand
result = generate_image(
prompt="Ancient temple at midnight, dramatic lighting",
genre="horror",
brand="My Brand",
preset="movie-poster",
)
# Quality check
quality = quality_check(
image_path=result["path"],
prompt="Ancient temple at midnight",
genre="horror",
brand="My Brand",
)
print(f"Score: {quality['overall_score']}/100")
```
## MCP Tools
| Tool | Description |
|------|-------------|
| `generate_image` | Generate image from text prompt (Pollinations/SVG fallback) |
| `generate_carousel` | Multi-slide carousel for social platforms |
| `create_brand` | Create brand DNA profile (colors, fonts, style) |
| `list_skills` | List available genres, formats, principles |
| `list_engines` | List generation engines and status |
| `list_presets` | List 35+ platform presets |
| `list_brands` | List saved brand profiles |
| `get_version` | Get Vritti version info |
| `get_platform` | Get detected platform and output paths |
| `version_history` | Get generation version history |
| `quality_check` | Evaluate image quality against rubric |
## Skills
### Genres
- `horror` — deep reds, blacks, monochromatic
- `music` — genre-dependent (hip-hop bold, lo-fi muted)
- `corporate` — blues, whites, conservative
- `cinema` — dramatic, high contrast, color grading
- `minimal` — whitespace, single accent, breathing room
- `vibrant` — neon, high saturation, bold gradients
### Formats
- `instagram-square` — 1080x1080
- `instagram-carousel` — 1080x1350 (4:5)
- `album-cover` — 3000x3000 (Spotify/Apple requirement)
- `movie-poster` — 2700x4000 (27:40 at 300 DPI)
- `linkedin-carousel` — 1080x1350
- `youtube-thumbnail` — 1280x720
## Architecture
```
vritti/
├── src/vritti/
│ ├── server.py # MCP server (JSON-RPC over stdio)
│ ├── engines/ # Pollinations + HuggingFace + SVG
│ ├── svg/ # SVG generation + PNG conversion
│ ├── skills/ # Genre/format/principle loaders
│ ├── brand/ # Brand DNA CRUD
│ ├── quality/ # 6-dimension rubric scoring
│ ├── versioning/ # Version control (Rudra-adapted)
│ ├── output/ # 35+ platform presets
│ └── platform.py # Termux/Android/Windows detection
├── skills/ # JSON skill files
│ ├── genres/ # Horror, music, corporate, etc.
│ ├── formats/ # Instagram, album, poster specs
│ └── principles/ # Color theory, typography, composition
└── pyproject.toml
```
## License
MIT — LGCY Studios
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing