Skip to content

SumoSettings Reference

sumospace.settings.SumoSettings

Bases: BaseSettings

Centralized configuration layer for SumoSpace. Values are populated in this order of precedence: 1. Explicit keyword arguments on instantiation 2. Environment variables (e.g. SUMO_PROVIDER) 3. Values loaded from a .env file 4. Default values defined here

auto_load_hooks class-attribute instance-attribute

auto_load_hooks: bool = False

If True, automatically load hooks from .sumo_hooks.py in the workspace. Only enable if you trust the contents of your workspace directory.

for_chat classmethod

for_chat(**kwargs) -> SumoSettings

Conversational chat with memory but no planning or tool execution. Use this for multi-turn conversations where the model needs to remember what was said earlier in the session. No committee, no RAG, no tool calls. Fast response times.

Source code in sumospace/settings.py
@classmethod
def for_chat(cls, **kwargs) -> "SumoSettings":
    """
    Conversational chat with memory but no planning or tool execution.
    Use this for multi-turn conversations where the model needs to
    remember what was said earlier in the session.
    No committee, no RAG, no tool calls. Fast response times.
    """
    defaults = {
        "committee_enabled": False,
        "rag_enabled": False,
        "memory_enabled": True,
        "execution_enabled": False,
    }
    defaults.update(kwargs)
    return cls(**defaults)

for_chat_stateless classmethod

for_chat_stateless(**kwargs) -> SumoSettings

Pure stateless single-turn inference. Fastest possible response. Every message is independent — no memory of previous turns. Use for one-shot Q&A, summarisation, or classification tasks where conversation history is irrelevant.

Source code in sumospace/settings.py
@classmethod
def for_chat_stateless(cls, **kwargs) -> "SumoSettings":
    """
    Pure stateless single-turn inference. Fastest possible response.
    Every message is independent — no memory of previous turns.
    Use for one-shot Q&A, summarisation, or classification tasks
    where conversation history is irrelevant.
    """
    defaults = {
        "committee_enabled": False,
        "rag_enabled": False,
        "memory_enabled": False,
        "execution_enabled": False,
    }
    defaults.update(kwargs)
    return cls(**defaults)

for_chat_with_context classmethod

for_chat_with_context(**kwargs) -> SumoSettings

Conversational chat grounded in your codebase or documents. Use this when users ask questions about ingested content — 'explain this function', 'where is X defined', 'summarise this doc'. No committee, no tool execution. RAG + memory enabled.

Source code in sumospace/settings.py
@classmethod
def for_chat_with_context(cls, **kwargs) -> "SumoSettings":
    """
    Conversational chat grounded in your codebase or documents.
    Use this when users ask questions about ingested content —
    'explain this function', 'where is X defined', 'summarise this doc'.
    No committee, no tool execution. RAG + memory enabled.
    """
    defaults = {
        "committee_enabled": False,
        "rag_enabled": True,
        "memory_enabled": True,
        "execution_enabled": False,
    }
    defaults.update(kwargs)
    return cls(**defaults)

for_coding classmethod

for_coding(**kwargs) -> SumoSettings

Full pipeline optimised for code tasks.

Source code in sumospace/settings.py
@classmethod
def for_coding(cls, **kwargs) -> "SumoSettings":
    """Full pipeline optimised for code tasks."""
    defaults = {
        "committee_enabled": True,
        "committee_mode": "full",
        "rag_enabled": True,
        "rag_top_k_final": 8,
        "shell_sandbox": True,
    }
    defaults.update(kwargs)
    return cls(**defaults)

for_research classmethod

for_research(**kwargs) -> SumoSettings

Planning + web search, no code execution.

Source code in sumospace/settings.py
@classmethod
def for_research(cls, **kwargs) -> "SumoSettings":
    """Planning + web search, no code execution."""
    defaults = {
        "committee_enabled": True,
        "committee_mode": "plan_only",
        "rag_enabled": True,
        "execution_enabled": True,
        "shell_sandbox": True,
    }
    defaults.update(kwargs)
    return cls(**defaults)

for_review classmethod

for_review(**kwargs) -> SumoSettings

Plan and critique only — never executes. Safe for untrusted tasks.

Source code in sumospace/settings.py
@classmethod
def for_review(cls, **kwargs) -> "SumoSettings":
    """Plan and critique only — never executes. Safe for untrusted tasks."""
    defaults = {
        "committee_enabled": True,
        "committee_mode": "full",
        "execution_enabled": False,
    }
    defaults.update(kwargs)
    return cls(**defaults)

from_file classmethod

from_file(path: str) -> SumoSettings

Load settings explicitly from a specific file.

Source code in sumospace/settings.py
@classmethod
def from_file(cls, path: str) -> "SumoSettings":
    """Load settings explicitly from a specific file."""
    return cls(_env_file=path)

to_kernel_config

to_kernel_config() -> KernelConfig

Compatibility shim for code still using KernelConfig directly. Deprecated: Pass SumoSettings to SumoKernel directly instead. Will be removed in v1.0.

Source code in sumospace/settings.py
def to_kernel_config(self) -> "KernelConfig":
    """
    Compatibility shim for code still using KernelConfig directly.
    Deprecated: Pass SumoSettings to SumoKernel directly instead.
    Will be removed in v1.0.
    """
    from sumospace.kernel import KernelConfig
    return KernelConfig(
        provider=self.provider,
        model=self.model,
        embedding_provider=self.embedding_provider,
        embedding_model=self.embedding_model,
        require_consensus=self.require_consensus,
        max_retries=self.max_retries,
        execution_timeout=self.execution_timeout,
        verbose=self.verbose,
        dry_run=self.dry_run,
        hf_load_in_4bit=self.hf_load_in_4bit,
        secondary_provider=self.secondary_provider,
        secondary_model=self.secondary_model,
        workspace=self.workspace,
        scope_level=self.scope_level,
        user_id=self.user_id,
        session_id=self.session_id,
        project_id=self.project_id,
        chroma_base=self.chroma_base,
        chroma_path=self.chroma_base,
        max_chunks_per_scope=self.max_chunks_per_scope,
    )