{"id":42164421,"url":"https://github.com/isometry/yaketty","last_synced_at":"2026-01-26T20:48:39.336Z","repository":{"id":318269558,"uuid":"1070302567","full_name":"isometry/yaketty","owner":"isometry","description":"Orchestrated conversations between AI personas using Ollama","archived":false,"fork":false,"pushed_at":"2025-10-18T13:33:24.000Z","size":74,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-19T08:12:22.038Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isometry.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-10-05T17:04:46.000Z","updated_at":"2025-10-18T22:02:21.000Z","dependencies_parsed_at":"2025-10-06T08:15:58.971Z","dependency_job_id":"318c9a67-59cb-4ff7-bd1f-3c5caa784655","html_url":"https://github.com/isometry/yaketty","commit_stats":null,"previous_names":["isometry/yaketty"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/isometry/yaketty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isometry%2Fyaketty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isometry%2Fyaketty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isometry%2Fyaketty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isometry%2Fyaketty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isometry","download_url":"https://codeload.github.com/isometry/yaketty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isometry%2Fyaketty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28787434,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"last_error":"SSL_read: 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":[],"created_at":"2026-01-26T20:48:38.538Z","updated_at":"2026-01-26T20:48:39.328Z","avatar_url":"https://github.com/isometry.png","language":"Go","readme":"# 🗣️ Yaketty\n\n**Yaketty** is a Go CLI tool for orchestrating conversations between AI personas using [Ollama](https://ollama.com). Create dialogues between historical figures, celebrities, fictional characters, or entirely original personas in custom scenarios.\n\n## ✨ Features\n\n- 🎭 **Rich Persona Library** - 44 embedded personas including Einstein, Shakespeare, Robin Williams, George Carlin, and many more\n- 📜 **Flexible Scenarios** - 13 embedded scenarios from rap battles to philosophical debates, comedy sketches to educational exchanges\n- 📦 **Single Binary Portability** - All personas and scenarios embedded at build time\n- 🔄 **Local Override Support** - Customize any persona/scenario by placing files in local directories\n- 🔧 **Highly Configurable** - YAML-based configuration with command-line overrides\n- 🎨 **Creative Combinations** - Mix and match any personas with any scenarios\n- 🧠 **Smart Dialogue** - Enhanced prompts ensure character consistency and engaging conversations\n- 📚 **Extensible** - Easy to add new personas and scenarios\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- [Ollama](https://ollama.com) installed and running\n- Go 1.22.5+ for building from source\n\n### Installation\n\n```bash\ngit clone https://github.com/isometry/yaketty.git\ncd yaketty\ngo build -o yaketty .\n\n# List all embedded personas and scenarios\n./yaketty list-personas\n./yaketty list-scenarios\n```\n\n### Your First Dialogue\n\n```bash\n# Einstein and Feynman discuss quantum mechanics\n./yaketty examples/eli5relativity.yaml\n\n# Eminem vs Tupac rap battle\n./yaketty examples/rap-battle-classic.yaml\n\n# Shakespeare and Mark Twain philosophical debate\n./yaketty scenarios/philosophy-duel.yaml -1 shakespeare -2 twain\n```\n\n## 📖 Configuration\n\nYaketty uses YAML configuration files that define the scenario and personas:\n\n```yaml\n# Basic structure\nscenario: |\n  The scenario description and context for the conversation.\n  This sets the stage and defines the rules of engagement.\n\nopening: |\n  The first message that starts the dialogue.\n\npersona1:\n  name: \"Character Name\"\n  persona: |\n    Detailed character description including personality,\n    speech patterns, beliefs, and mannerisms.\n\npersona2:\n  name: \"Other Character\"\n  persona: |\n    Another character description...\n\n# Optional: AI model parameters\noptions:\n  temperature: 0.8      # Creativity level (0.0-2.0)\n  num_ctx: 8192        # Context window size\n  top_p: 0.9           # Nucleus sampling\n```\n\n## 🎭 Personas\n\nYaketty includes a rich library of pre-built personas:\n\n### Historical Figures\n- **einstein** - Albert Einstein, theoretical physicist and pacifist\n- **darwin** - Charles Darwin, methodical naturalist\n- **shakespeare** - William Shakespeare, the Bard of Avon\n- **voltaire** - Voltaire, Enlightenment philosopher\n\n### Modern Icons\n- **obama** - Barack Obama, 44th President\n- **jobs** - Steve Jobs, Apple co-founder and visionary\n- **attenborough** - David Attenborough, nature documentarian\n- **sagan** - Carl Sagan, astronomer and science communicator\n\n### Comedy \u0026 Entertainment\n- **carlin** - George Carlin, legendary comedian and social critic\n- **williams** - Robin Williams, rapid-fire improvisation master\n- **elvis** - Elvis Presley, the King of Rock'n'Roll\n\n### Scientists \u0026 Thinkers\n- **feynman** - Richard Feynman, playful Nobel physicist\n- **twain** - Mark Twain, American humorist and satirist\n\n*[View all personas →](personas/)*\n\n## 📚 Scenarios\n\nPre-built scenarios provide context and structure:\n\n- **🏛️ debate** - Presidential debate format\n- **🎤 rap** - Underground rap battle\n- **🎭 sketch** - Improvisational comedy\n- **🏰 dnd** - Dungeons \u0026 Dragons roleplay\n- **⚡ enlightenment** - Philosophical podcast\n- **🎬 commentary** - Sports commentary\n- **🕰️ time-travel-cafe** - Cross-era conversations\n- **🔬 philosophy-duel** - AI consciousness debate\n\n*[View all scenarios →](scenarios/)*\n\n## 🛠️ Advanced Usage\n\n### Command Line Options\n\n```bash\n# Override personas\n./yaketty config.yaml -1 einstein -2 feynman\n\n# Override scenario\n./yaketty config.yaml -s philosophy-duel\n\n# Set custom opening line\n./yaketty config.yaml -o \"Let's discuss the nature of reality\"\n\n# Adjust creativity\n./yaketty config.yaml --temperature 1.2\n\n# Multiple system prompts\n./yaketty config.yaml -p \"Be extra witty\" -p \"Keep responses under 100 words\"\n```\n\n### Library System\n\nAll personas and scenarios are **embedded in the binary** for portability. They can be used by:\n\n**1. Using Embedded Personas/Scenarios** (default):\n```bash\n# List what's available\n./yaketty list-personas\n./yaketty list-scenarios\n\n# Use embedded personas\n./yaketty config.yaml -1 einstein -2 feynman\n```\n\n**2. Local Filesystem Override**:\n```bash\n# Create custom persona (overrides embedded version if names match)\ncat \u003e personas/custom.yaml \u003c\u003c EOF\nname: My Custom Persona\npersona: Custom personality description\nEOF\n\n# Use it - loads from local file instead of embedded\n./yaketty config.yaml -1 custom\n```\n\n**3. Inline in Config**:\n```yaml\npersona1:\n  name: \"Inline Persona\"\n  persona: \"Defined directly in config...\"\n```\n\n**Loading Priority**: Local files → Embedded files → Inline config\n\n### Model Configuration\n\n```yaml\npersona1:\n  model: llama3        # Specific model for this persona\n  options:\n    temperature: 0.9     # Per-persona settings\n    top_k: 40\n\npersona2:\n  model: mistral         # Different model for contrast\n  options:\n    temperature: 0.7\n```\n\n## 💡 Example Combinations\n\n**Educational Dialogues:**\n```bash\n# Science education\n./yaketty time-travel-cafe.yaml -1 einstein -2 feynman\n\n# Historical perspectives\n./yaketty enlightenment.yaml -1 voltaire -2 diderot\n\n# Literary analysis\n./yaketty philosophy-duel.yaml -1 shakespeare -2 twain\n```\n\n**Entertainment:**\n```bash\n# Comedy gold\n./yaketty sketch.yaml -1 carlin -2 williams\n\n# Musical legends\n./yaketty rap.yaml -1 elvis -2 eminem\n\n# Presidential perspectives\n./yaketty debate.yaml -1 obama -2 biden\n```\n\n**Creative Experiments:**\n```bash\n# Unlikely pairings\n./yaketty cooking-disaster.yaml -1 shakespeare -2 jobs\n\n# Cross-domain insights\n./yaketty museum-heist.yaml -1 attenborough -2 carlin\n```\n\n## 🤝 Contributing\n\n### Adding Personas\n\nCreate a new YAML file in `personas/`:\n\n```yaml\nname: Your Character\npersona: |\n  Detailed character description including:\n  - Background and expertise\n  - Speech patterns and catchphrases\n  - Core beliefs and values\n  - Personality quirks and mannerisms\n  - Communication style\n```\n\n### Adding Scenarios\n\nCreate a new YAML file in `scenarios/`:\n\n```yaml\nscenario: |\n  Context and rules for the dialogue.\n  What's the setting? What are the goals?\n\nopening: |\n  The first message to start the conversation.\n\n# Optional: specific roles\nroles:\n  - Role for persona1\n  - Role for persona2\n```\n\n### Guidelines\n\n- **Rich Detail**: Include enough personality details for distinctive voices\n- **Clear Context**: Scenarios should provide clear direction and constraints\n- **Engaging Openings**: Start with something that immediately draws both personas in\n- **Educational Value**: Consider what users might learn from the interaction\n\n## 🎯 Use Cases\n\n- **🎓 Education**: Historical figures explaining concepts to modern students\n- **🎪 Entertainment**: Unlikely celebrity conversations and debates\n- **💭 Exploration**: Philosophical discussions between great thinkers\n- **📝 Writing**: Character development and dialogue practice\n- **🧑‍🏫 Teaching**: Interactive lessons with historical personalities\n- **🎨 Creativity**: Experimental combinations for artistic inspiration\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) file for details\n\n---\n\n*\"The best conversations happen when great minds meet.\" - Yaketty*\n\n**⭐ Star this repo if you enjoy watching Einstein debate Shakespeare!**\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisometry%2Fyaketty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisometry%2Fyaketty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisometry%2Fyaketty/lists"}