A minimalistic, all-local, fully containerized, open-source AI agent.
For first-time setup:
make initβοΈ Configuration Required: Configure authentication credentials in
.env.email_mcpand.env.caldav_mcp. (I use the Mailo service for email and calendar.)
To start OpenGem, simply run:
make run- Docker
- Docker Model Runner enabled (Docker settings β AI β Docker Model Runner β Enable Docker Model Runner)
Everything runs in a container:
- Agent
- Dispatcher
- UI
- Code/Shell commands executed by the agent
- MCP servers
Everything runs locally:
- Agent
- Language model (i.e. Gemma 4)
Cron queries are queries that are scheduled to run at specific intervals. They are triggered by the Dispatcher.
Cron query memory is a special type of memory that stores the results of cron queries, allowing the agent to access and reason about this information over time. This enables the agent to have a sense of time and to make decisions based on historical data, which is crucial for tasks that require long-term planning and context awareness.
There is no settings UI β all configuration is done through conversation.
The core agent is a LangChain agent, following the ReAct ("Reasoning + Acting") pattern.
Comparable to the "system prompt" in a traditional LLM setup. The persona defines the agent's identity, behavior, and constraints, and is stored in a dedicated file (PERSONA.md).
The dispatcher is responsible for handling the cron queries. The cron queries are configured in workspace/config/cron_queries.json.
The UI is based on assistant-ui, a Typescript/React Library for AI Chat.
The MCP servers are configured in workspace/config/mcp_servers.json.
- DuckDuckGo web access (via MCP server)
searchfetch_content
- Skills
load_skill
- Code execution / shell (via LangChain
ShellToolMiddleware)shell
- File system access (via Deep Agents
FilesystemBackend)lsread_filewrite_fileedit_fileglobgrep
- E-Mail (via MCP server
ai-zerolab/mcp-email-server)list_available_accountsadd_email_accountlist_emails_metadataget_emails_contentsend_emaildelete_emailsdownload_attachment
- Calendar (via MCP server)
list-calendarscreate-eventlist-eventsupdate-eventdelete-event
- Cron query memory
read_cron_query_memorywrite_cron_query_memory
- Configuration / settings
- Cron queries
list_cron_queriesupdate_cron_querydelete_cron_query
- MCP server configuration
list_mcp_serversupdate_mcp_serverdelete_mcp_server
- Skills (via
SkillMiddleware)list_skillsupsert_skill
- Cron queries
- set timezone (
TZ) incompose.yaml



