Your server's intelligent companion powered by cutting-edge AI models
Installation • Features • Commands • Models • Troubleshooting • Documentation
🤖 Gideon - AI Assistant for Discord
🌟 Overview
Gideon transforms your Discord server into an AI-powered hub, connecting members to state-of-the-art language and image models. With Gideon, users can have intelligent conversations, generate creative images, analyze visual content, summarize news feeds, manage URLs, create fantasy adventures, and organize discussions through an intuitive thread system.
✨ Features
🧠 Intelligence
- Multiple AI Models - Access OpenAI, Anthropic Claude, Google Gemini, and more through OpenRouter
-
Conversation Memory - Natural conversations with context across messages
-
Web Search - Search the web for current information through conversational AI responses
- Image Analysis - Upload and analyze images with vision-capable AI models
- Image Generation - Create stunning visuals with various Stable Diffusion models via AI Horde or a custom Cloudflare Worker
📰 News Feed Summaries
- RSS Feed Monitoring - Add and manage RSS feeds by category (tech, world, finance, etc.)
- AI Summarization - Automatically summarize new articles using configured AI models
- Channel Subscriptions - Subscribe channels to specific news categories or all feeds
- Scheduled Updates - Configure how often the bot checks for and posts news updates
- Manual Fetching - Manually trigger news updates or fetch news on demand
🧵 Organization
- Conversation Threads - Create dedicated topics with independent histories using Discord’s native threads
- Auto-Responses - Bot automatically responds to all messages in AI threads
- Dynamic URL Summarization - Instantly extracts and distills key information from any shared webpage, providing concise, up-to-date summaries directly in your chat.
🎲 Fantasy Game Master
- Interactive Adventures - Create and explore AI-driven tabletop RPG campaigns
- Multiple Settings - Choose from Fantasy, Sci-Fi, Horror, Modern, or Custom worlds
- Dice Rolling - Integrated dice mechanics with automatic result narration
- Campaign State Tracking - Track progress and character actions throughout your adventure
- Automatic Scene Visualization - Generate images of key moments in your adventure (requires Cloudflare Worker)
🛠️ Customization
- Model Switching - Change AI models on-the-fly with simple commands
- Channel Personalities - Set different system prompts per channel
- Admin Controls - Comprehensive configuration options for server admins
🚀 Installation
There are two ways to install and run Gideon: using Docker (recommended for ease of deployment and management) or directly with Python.
Prerequisites
For both methods:
- Git installed
- Discord bot token with Message Content Intent enabled (Discord Developer Portal)
- OpenRouter API key (OpenRouter.ai)
- AI Horde API key (optional, for
/imagine
command - AI Horde) - Cloudflare Worker URL & API Key (optional, for
/dream
command and Adventure scene visualization - requires self-setup, see Cloudflare Worker Configuration)
For Docker Installation:
- Docker installed
- Docker Compose installed (usually included with Docker Desktop)
For Python Installation:
- Python 3.8+
Docker Installation (Recommended)
- Clone the Repository:
git clone https://github.com/Emperor-Ovaltine/gideon cd gideon
- Configure Environment:
- Copy the example environment file:
cp .env.example .env
- Edit the
.env
file with your actual API keys and tokens (DISCORD_TOKEN
,OPENROUTER_API_KEY
, etc.). LeaveDATA_DIRECTORY
blank or commented out when using Docker Compose with the provided configuration, as the volume mount handles data persistence.
- Copy the example environment file:
- Build the Docker Image:
- Build the image using the included Dockerfile. This command builds the image and tags it as
gideon-bot:latest
.docker build -t gideon-bot:latest .
- (Optional) If you plan to distribute the image or use a registry like Docker Hub or GHCR, you would tag and push the image here.
- Build the image using the included Dockerfile. This command builds the image and tags it as
- Configure Docker Compose:
- Open the
docker-compose.yml
file. - Verify the
volumes
section. The defaultdocker-compose.yml
is set up to use a bind mount. It maps a directory from your host machine to the/app/data
directory inside the container. ```yamlExample docker-compose.yml volume section:
volumes: # This maps a host directory to the container’s data directory
- ./gideon_data:/app/data # Example: Creates ‘gideon_data’ in the current directory ```
- Important: Ensure the host path part (
./gideon_data
in the example) points to a location where Docker has permission to create/write files. Using a relative path like./gideon_data
will create the directory within yourgideon
project folder. - (Optional) If you pushed your image to a registry in step 3, update the
image:
line to point to your registry image (e.g.,image: your-dockerhub-username/gideon:latest
orimage: ghcr.io/your-github-username/gideon:latest
). Otherwise, leave it asimage: gideon-bot:latest
to use the locally built image.
- Open the
- Run the Container:
- Start the bot using Docker Compose in detached mode (runs in the background):
docker-compose up -d
- To view logs:
docker-compose logs -f
- To stop the bot:
docker-compose down
- Start the bot using Docker Compose in detached mode (runs in the background):
Python Installation
# Clone and enter repository (if not already done)
# git clone https://github.com/Emperor-Ovaltine/gideon
# cd gideon
# Set up environment and dependencies
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
# Configure bot
cp .env.example .env
# Edit .env with your Discord token, OpenRouter API key, AI Horde API key,
# AND set the DATA_DIRECTORY to an absolute path where the bot can write data.
# Example: DATA_DIRECTORY=/home/user/gideon_data
# If DATA_DIRECTORY is not set, data (including the SQLite database file, typically 'gideon.db')
# will be stored in a 'data' subdirectory within the project.
# Launch
python3 -m src
Discord Configuration
- Create an application at Discord Developer Portal
- Under “Bot” tab:
- Enable “Message Content Intent”
- Copy your bot token for the
.env
file
- Generate invite URL in “OAuth2 > URL Generator”:
- Scopes:
bot
,applications.commands
- Permissions: Send Messages, Read Message History, Embed Links, Use Slash Commands, Manage Threads (for
/thread
commands)
- Scopes:
Cloudflare Worker Configuration (Optional)
⚠️ IMPORTANT: Setting up and deploying the Cloudflare Worker is the responsibility of the end user. Gideon does not provide support for configuring or troubleshooting Cloudflare Workers.
If you want to use the /dream
command for generating images or enable scene visualization in Adventure mode:
- Create and deploy your own Cloudflare Worker that can generate images (e.g., using Cloudflare’s AI platform or another service).
- The worker should accept a JSON payload with at least a
prompt
field and return image data. - Set the
CLOUDFLARE_WORKER_URL
in your.env
file to your worker’s URL. - Optionally set
CLOUDFLARE_API_KEY
if your worker requires authentication (e.g., via a header likeAuthorization: Bearer YOUR_KEY
).
An example Cloudflare worker that has been tested with Gideon can be found here: flux1-cloudflare-worker
Example /dream output
🤖 Commands
General Commands
Command | Description |
---|---|
/chat |
Start a conversation with the AI (supports image uploads for vision models) |
/search |
Search the web for current information using the AI |
/reset |
Clear the conversation history for the current channel |
/summarize |
Summarize the current conversation history |
/memory |
Show conversation statistics (message count, history window) |
News Feed Commands
Command | Description | Permissions |
---|---|---|
/addfeed |
Add a new RSS feed to monitor | Admin |
/removefeed |
Remove an RSS feed | Admin |
/listfeeds |
List all configured RSS feeds | All Users |
/subscribechannel |
Subscribe the current channel to news categories | Admin |
/unsubscribechannel |
Unsubscribe the current channel from news updates | Admin |
/feedupdate |
Manually trigger an update for all feeds | Admin |
/getnews |
Fetch and display the latest news in the current channel | All Users |
/setfeedfrequency |
Set how often the bot checks for news (in hours) | Admin |
/feedstatus |
Show the status of news feeds and subscriptions | All Users |
/newsdigest |
Display the most recently generated AI news digest | All Users |
User Feed Commands
Command | Description | Permissions |
---|---|---|
/myfeeds list |
Show your saved personal RSS feeds | All Users |
/myfeeds add |
Add an RSS feed URL to your personal list | All Users |
/myfeeds remove |
Remove an RSS feed URL from your personal list | All Users |
/mynews |
Get a personalized news digest from your saved feeds | All Users |
Thread Commands
Gideon leverages Discord’s native thread system to organize conversations and create dedicated AI chat spaces.
Command | Description |
---|---|
/thread new |
Create a new AI conversation thread |
/thread message |
Send a message to a specific thread |
/thread list |
View all active AI threads in the channel |
/thread delete |
Remove an AI thread and its history |
/thread rename |
Change the name of an AI thread |
/thread setmodel |
Set the AI model specifically for a thread |
/thread setsystem |
Set the system prompt specifically for a thread |
Configuration Commands
Command | Description | Permissions |
---|---|---|
/setmodel |
Change the default AI model for the server | Admin |
/model |
View or change the current model for the channel/thread | All Users |
/setsystem |
Customize the default AI personality (system prompt) | Admin |
/setchannelmodel |
Set the AI model for the current channel | Admin |
/setchannelsystem |
Set the system prompt for the current channel | Admin |
/setmemory |
Set the message history limit (max messages) | Admin |
/setwindow |
Set the time window for memory (in hours) | Admin |
Image Commands
Gideon now uses a unified command for image generation with support for multiple backend providers.
Command | Description | Permissions | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/dream prompt:... [negative_prompt:...] |
Generate an image using the currently configured AI backend. | All Users | |||||||||||||||||||||
/dream manage set_provider provider: |