A terminal-based chat client for Google's Gemini AI that allows you to roleplay with multiple AI characters. Each character has their own personality, background, and speech patterns.
- Multiple Characters: Create and manage different AI characters with unique personalities
- Character Profiles: JSON-based character files with detailed information (name, age, personality, speech patterns, etc.)
- User Personas: Switch between different user personas to make characters respond to you differently
- Multiple Chats: Open multiple chat sessions with different characters or the same character
- Immersive Scenarios: Each character has custom opening scenarios for immediate roleplay immersion
- Persistent Characters: Characters are saved as JSON files in the
characters/directory
- Clone or download this project
- Set up your Gemini API key:
# Copy the example environment file
cp .env.example .env
# Edit .env and add your API key
# Get your free API key from: https://makersuite.google.com/app/apikey- Install:
./install.sh- Run the application:
run charcli in terminal (may need to logout and login again / reopen terminal!!)- Select a Character: Choose from available characters in the character selection screen
- Select Persona (Optional): Choose a user persona to influence how characters respond to you
- Start Chatting: Type your messages and press Enter to chat with the character
- Multiple Chats: Start a new chat with any character
- Quit: Press Ctrl+C to exit
Characters are defined as JSON files in the characters/ directory. Each character file contains:
{
"name": "Character Name",
"age": 25,
"title": "Character Title",
"basic_info": "Brief description of the character",
"personality": "Detailed personality traits",
"speech_patterns": [
"Example phrase 1",
"Example phrase 2"
],
"appearance": "Physical description",
"background": "Character backstory",
"goals": "Character's motivations",
"fears": "Character's fears",
"scenario": "The opening scenario that sets the scene for the roleplay. This will be the first message you see when starting a chat with this character."
}The project comes with three sample characters:
- Lyra - Warrior Maiden of the Northern Realms
- Eldrin - Master of the Arcane Archives
- Raven - Shadow of the Underworld
To create a new character:
- Create a new JSON file in the
characters/directory - Follow the character format shown above
- The character will automatically appear in the character selection screen
Personas allow you to define how characters should perceive and respond to you. Create personas in the personas/ directory:
{
"name": "Persona Name",
"info": "Description of who you are as this persona. Characters will respond to you based on this information."
}The project comes with three sample personas:
- Adventurer - Brave explorer seeking treasure and excitement
- Scholar - Learned academic who values knowledge above all else
- Merchant - Shrewd businessperson focused on trade and profit
- Create a new JSON file in the
personas/directory - Use the persona format shown above
- The persona will automatically appear in the persona selection screen
- Python 3.7+
- Google Gemini API key (free)
- Internet connection for API calls
- Local LLM mode