Skip to content

Configuration Reference ​

Klix has two main configuration layers:

  • app configuration through App and AppConfig
  • process arguments through CLIArgsParser

This page documents both.

App Configuration ​

When you create an app:

python
app = klix.App(
    name="OpsTool",
    version="1.0.0",
    description="Operations helper",
    state_schema=OpsState,
    persist_session=True,
    theme=klix.ThemeConfig(...),
)

You are effectively populating AppConfig.

Current high-level fields:

  • name
  • version
  • description
  • theme
  • config
  • persist_session
  • session_id
  • state_schema

name ​

Used for:

  • CLI program identity
  • help output
  • persistence directory naming
  • terminal metadata

Choose something stable. Renaming the app changes where persisted sessions are stored.

version ​

Used by:

  • --version process argument
  • startup displays if your app shows it
  • metadata

description ​

Used by:

  • argument parser description
  • your own help and documentation

state_schema ​

Dataclass type used to construct session.state.

Example:

python
@dataclass
class AppState(klix.SessionState):
    current_profile: str = "default"

persist_session ​

Boolean toggle for session state persistence.

When enabled:

  • the app constructs a SessionStateManager
  • state is saved on exit

See Persistence.

session_id ​

Optional identifier used to load a persisted session file through the state manager.

If you want deterministic resumes, you need to provide or manage this value in your own app flow.

theme ​

ThemeConfig instance controlling semantic colors.

See Theming.

Useful recent additions:

  • input_background
  • input_text_color

Example:

python
theme=klix.ThemeConfig(
    accent="#4F8CFF",
    input_background="#171B24",
    input_text_color="#F5F7FA",
)

config ​

AppConfig controls runtime prompt behavior that is not part of the semantic theme.

Current fields:

  • history_path
  • log_path
  • clear_input_on_submit
  • max_history_size

Example:

python
config=klix.AppConfig(
    clear_input_on_submit=True,
    max_history_size=100,
)

clear_input_on_submit is opt-in and clears the visible prompt line after submit without affecting command execution.

max_history_size limits per-session command history used by Up/Down navigation.

CLI Process Arguments ​

Klix wraps argparse in CLIArgsParser.

Built-in arguments:

  • -v, --version
  • --config
  • --debug

Example:

python
args = app._cli_args.parse_args()

The default App setup already creates this parser for you.

About --help ​

The parser is currently created with add_help=False.

That means:

  • argparse does not inject a default --help
  • command help is expected to be handled at the app level, usually with a /help command

This is an intentional design choice in the current codebase, but it can surprise users who expect standard process-level help behavior.

Adding Custom Process Arguments ​

CLIArgsParser exposes passthrough methods:

  • add_argument(...)
  • add_argument_group(...)

This is useful when your app needs startup flags before the interactive loop begins.

Common Mistakes ​

  • Confusing process arguments with slash commands. --debug is for process startup; /debug would be a command if you register it.
  • Renaming the app after shipping persistence to users.
  • Assuming persistence and session resume are the same thing.

Released under the MIT License.