Golem is a lightweight, extensible personal AI assistant built with Go and Eino. It allows you to run a powerful AI agent locally effectively using your terminal or through messaging platforms like Telegram.
Golem (גּוֹלֶם): In Jewish folklore, a Golem is an animated anthropomorphic being that is magically created entirely from inanimate matter (specifically clay or mud). It is an obedient servant that performs tasks for its creator.
-
🖥️ Terminal User Interface (TUI): A rich, interactive chat experience comfortably within your terminal.
-
🤖 Server Mode: Run Golem as a background service to interact via external channels (currently supports Telegram).
-
🛠️ Tool Use:
- Shell Execution: The agent can run system commands (safe mode available).
- File System: Read and manipulate files within a designated workspace.
- Web Search: Integrated web search capabilities.
-
🔌 Multi-Provider Support: Seamlessly switch between OpenAI, Claude, DeepSeek, Ollama, Gemini, and more.
-
Workspace Management: Sandboxed execution environments for safety and context management.
You can download the pre-compiled binary for Windows or Linux from the Releases page.
go install github.com/MEKXH/golem/cmd/golem@latestGenerate the default configuration file at ~/.golem/config.json:
golem initEdit ~/.golem/config.json to add your API keys. For example, to use Anthropic's Claude:
{
"agents": {
"defaults": {
"model": "anthropic/claude-4-5-sonnet-20250929"
}
},
"providers": {
"claude": {
"api_key": "your-api-key-here"
}
}
}Launch the interactive TUI:
golem chatOr send a one-off message:
golem chat "Analyze the current directory structure"To use Golem via Telegram:
- Set
channels.telegram.enabledtotrueinconfig.json. - Add your Bot Token and allowed User IDs.
- Start the server:
golem runThe configuration file is located at ~/.golem/config.json. Below is a comprehensive example:
{
"agents": {
"defaults": {
"workspace_mode": "default", // Options: "default" (~/.golem/workspace), "cwd", "path"
"model": "anthropic/claude-4-5-sonnet-20250929",
"max_tokens": 8192,
"temperature": 0.7
}
},
"channels": {
"telegram": {
"enabled": false,
"token": "YOUR_TELEGRAM_BOT_TOKEN",
"allow_from": ["YOUR_TELEGRAM_USER_ID"]
}
},
"providers": {
"openai": { "api_key": "sk-..." },
"claude": { "api_key": "sk-ant-..." },
"ollama": { "base_url": "http://localhost:11434" }
},
"tools": {
"exec": {
"timeout": 60,
"restrict_to_workspace": false
},
"web": {
"search": {
"api_key": "YOUR_BRAVE_SEARCH_API_KEY", // Optional
"max_results": 5
}
}
},
"gateway": {
"host": "0.0.0.0",
"port": 18790
}
}MIT