mcp server
smoke
An agentic coding assistant written in Golang primarily for use with Golang codebases
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 21, 2026smoke
About
Smoke is my attempt at an agentic coding assistant for Go. It is tailored to my needs. Read more about why I built it here.
The raink tool described in
this blog post was the direct inspiration for my /rank
command. My implementation is incomplete, but I still find it useful.
If people discover this repo and want to use it, I might write a more helpful README in the future. The code is quite messy in some places, documentation is sparse to nonexistent, and there are likely many bugs. Caveat emptor.
Motivation
- Pure hubris
CLI Usage
smoke [flags] [project path]
GLOBAL OPTIONS:
--help, -h show help
--version, -v print the version
LLM Configuration
--effort string, -e string The effort used for 'thinking'. Varies by provider. [$SMOKE_EFFORT]
--max-tokens int, -t int The max tokens to return in any given response (default: 8192) [$SMOKE_MAX_TOKENS]
--model string, -m string The provider's model to use, or an alias for it [$SMOKE_MODEL]
--no-stream, -S Disable streamed responses [$SMOKE_NO_STREAM]
--provider string, -p string One of the following: chatgpt, claude, grok, ollama [$SMOKE_PROVIDER]
--temperature float, -T float The temperature value to use with the model (default: 1) [$SMOKE_TEMPERATURE]
Local Configuration
--debug, -D Enable debug logging. [$SMOKE_DEBUG]
--session NAME, -s NAME The NAME of the session, which will be used to derive the log file and plan file names (default: "session") [$SMOKE_SESSION]
Providers
--anthropic-api-key string The API key for Anthropic. Required when provider is "claude" [$ANTHROPIC_API_KEY]
--ollama-host string The base URL for the Ollama API. Used when provider is "ollama" (default: "http://localhost:11434/v1") [$OLLAMA_HOST]
--openai-api-key string The API key for OpenAI. Required when provider is "chatgpt" [$OPENAI_API_KEY]
--xai-api-key string The API key for xAI. Required when provider is "grok" [$XAI_API_KEY]
Example invocation
smoke -D -p chatgpt -m 5.4 ~/projects/example
Example config file
Smoke will create a default config file in ~/.config/smoke/config.json if one does not already exist. Right now it's
only useful for configuring MCP servers. The default config includes support for the gopls MCP server
out of the box.
{
"mcp": {
"servers": [
{
"name": "example",
"command": "example_tool",
"args": [
"arg1",
"arg2"
],
"enabled": false,
"allowed_tools": [],
"denied_tools": [
"dangerous_*",
"evil_tool"
],
"plan_tools": [],
"env": [
{
"var": "EXAMPLE_ENV_VAR",
"value": "EXAMPLE VALUE"
}
]
},
{
"name": "gopls",
"command": "gopls",
"args": [
"mcp"
],
"enabled": true,
"allowed_tools": [],
"denied_tools": [],
"plan_tools": [],
"env": null
}
]
}
}