Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/onenot8/issueLoop/llms.txt

Use this file to discover all available pages before exploring further.

IssueLoop configuration is passed to issueloop.use() once at startup, before any scanning or ticket operations. Every option has a sensible default, so zero configuration is needed for a local trial — a fresh install works out of the box with a local Ollama instance.

The use() function

Call use() at the top of your script (or in your application’s startup routine) to configure the library globally. Calling it a second time replaces the previous configuration entirely.
issueloop.use(
    database="local",
    database_path=None,
    retention_days=30,
    llm=None,
    notify=None,
)
Each keyword argument maps to a top-level configuration concern. Arguments you omit fall back to their defaults. The function returns the newly constructed Config object, though you rarely need that return value — get_config() retrieves it at any time.

All configuration options

The table below covers every accepted field, including the nested keys inside the llm and notify dicts.
FieldValuesDefaultDescription
database"local", "supabase""local"Storage backend. "local" uses a SQLite file; "supabase" uses a hosted Postgres-backed project.
database_pathany filesystem pathNone (resolves to data/issueloop.db at runtime)Path to the local SQLite database. When None, the backend applies data/issueloop.db relative to the IssueLoop package root. Ignored when database="supabase".
retention_daysinteger30How many days completed tickets are kept before cleanup removes them.
llm.providerslist of provider dicts, in priority ordersingle Ollama defaultPriority-ordered list of LLM backends. IssueLoop falls back to the next entry automatically on failure.
llm.provider"ollama", "anthropic", "openai""ollama"LLM provider for single-provider configurations.
llm.apiKeystringNone (required for anthropic/openai)API key for the selected provider.
llm.tokenSizeinteger1024Maximum token budget passed to the LLM per call.
notify.webhookURL stringNoneEndpoint that receives a POST request if IssueLoop itself encounters an internal error.

LLMConfig fields

Internally, each entry in llm.providers (or the single llm dict) is normalised into an LLMConfig dataclass. The fields and their defaults are:
provider
str
default:"ollama"
The LLM backend to use. Accepted values are "ollama", "anthropic", and "openai".
model
str
default:"qwen2.5-coder:7b"
The model name as the provider expects it. For Ollama this is the tag used with ollama pull; for Anthropic and OpenAI it is the model identifier from their respective APIs.
api_key
str | None
default:"None"
API key for cloud providers. Not required for a local Ollama instance. Accepts both apiKey (camelCase) and api_key (snake_case) in the raw dict passed to use().
base_url
str
default:"http://localhost:11434"
Base URL for the provider’s API. The default points to a locally running Ollama server. Override this for a remote Ollama instance or a custom OpenAI-compatible endpoint.
token_size
int
default:"1024"
Maximum tokens per LLM call. Accepts both tokenSize (camelCase) and token_size (snake_case) in the raw dict.

NotifyConfig

The notify argument accepts a plain dict. Both fields are optional.
email
str | None
default:"None"
Email address to notify on internal IssueLoop errors.
webhook
str | None
default:"None"
HTTP/HTTPS URL that receives a POST payload when IssueLoop encounters a crash or unhandled exception.

camelCase and snake_case

IssueLoop accepts both naming conventions in the dicts you pass to use(). The internal _build_llm_config function normalises them:
  • apiKey and api_key are both read; apiKey is tried first.
  • tokenSize and token_size are both read; tokenSize is tried first.
  • baseUrl and base_url are both read; baseUrl is tried first.
This means the following two calls are equivalent:
# camelCase style
issueloop.use(llm={"provider": "openai", "apiKey": "sk-...", "tokenSize": 2048})

# snake_case style
issueloop.use(llm={"provider": "openai", "api_key": "sk-...", "token_size": 2048})
Mix and match freely — whichever key is present wins.

Config resolution order

get_config() always returns the current global config object. Calling use() replaces it atomically for all subsequent operations.
import issueloop

# Before any use() call — defaults are active
cfg = issueloop.get_config()
print(cfg.database)          # "local"
print(cfg.retention_days)    # 30

# Reconfigure
issueloop.use(database="supabase", retention_days=7)

# Now the new config is in effect everywhere
cfg = issueloop.get_config()
print(cfg.database)          # "supabase"
print(cfg.retention_days)    # 7
There is no file-based configuration for these options — they are code-only. The provider_config.yaml file is a separate convenience layer for the LLM backend only; see Provider Config for details.
use() is entirely optional. The defaults work out of the box with a local Ollama install — no API key, no database account, and no config file required to run your first scan.

Build docs developers (and LLMs) love