Skip to content
Conduit

mcp server

smoke

An agentic coding assistant written in Golang primarily for use with Golang codebases

cneill/smokecommunitylistedunreviewed

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, 2026

smoke

Go package documentation

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
            }
        ]
    }
}
↑↓ navigate openesc close