Start
Quickstart
On this page 6 sections
Run the wizard once, ask a question, check health. There is no default provider, API key, or model — the wizard collects them and writes config outside your project.
1. Run the setup wizard
./nllclw initThe wizard uses numbered menus for provider (openai, openrouter, or compatible), an optional token cap, assistant style, local capability profile, Telegram, WebSocket, and web search. It writes config.json to the user config directory — ~/.config/nllclw/config.json on most systems.
Prefer config.json for long-lived setup. If you would rather keep a global .env file, run ./nllclw init --env instead; it refuses to run if config.json already exists, because config.json would shadow it.
2. Ask a question
./nllclw "what are you?"stdin works too:
printf 'summarize this text\n' | ./nllclw3. Chat interactively
With a TTY and no prompt, nllclw starts a small terminal chat loop:
./nllclwExit with :q, :quit, or exit.
4. Check health
./nllclw status # quick health line
./nllclw doctor # full diagnostics report
./nllclw memory list # stored durable facts
./nllclw schedule list # scheduled tasksThese are local commands — they do not call the model.
Where settings come from
Configuration priority, highest first:
- OS environment variables
config.jsonin the user config directory.envin the same directory
OS env always wins, so a shell, service manager, or CI job can override file config without editing it. One-off override example:
NLLCLW_MODEL=gpt-4o ./nllclw "same question, different model"State files — transcript memory, facts, schedules — live in the platform user state directory, not beside the binary and not in the current project.
Next
- Channels — Telegram, WebSocket, heartbeat, daemon.
- Tools and memory — the capability model.
- Configuration — every
NLLCLW_*key.