Frown Features
What makes FrownCode different from the base it started from.
FrownCode is no longer just a rename. It ships with a set of workflow and UX changes tuned for faster day-to-day use.
Latest production layer
FrownCode now has routing memory, provider checks, and shared app/TUI controls.
Use this page as the fast map for what changed beyond the base project: Auto routing, Caveman mode, /btw, /close, NVIDIA NIM, first-run desktop setup, and purple-first UI polish.
frown
Caveman on
Static fast path by default
OpenRouter free can advise only
Built for fast terminal work
FrownCode keeps the terminal-first workflow, but adds opinionated changes that make it feel lighter and more interruptible while you work.
frownis the main CLI command.- The TUI ships with Frown branding and a purple-first visual theme.
- The desktop app and TUI both expose shared Auto model controls.
- Thinking output can stay hidden while still letting the model reason in the background.
- Sessions compact automatically before context gets too close to full.
- Desktop settings include provider tests and first-run setup shortcuts.
- Auto decisions are persisted in message metadata so you can audit routing later.
Frown-only slash commands
/btw and /aside
Use /btw (or its alias /aside) to ask a side question or add an in-between instruction while a conversation or ongoing task is already in motion.
/btw also make the sidebar tighter and keep the previous work/aside did you include the newest imports?This is useful when you do not want to fully redirect the current thread but still want to inject a correction, reminder, or extra ask.
Generic Slash Commands
The prompt bar in both the desktop app and TUI now supports triggering ANY built-in command directly by typing its name with a leading slash. This lets you quickly run workflow commands without opening the command palette:
/undo: Undo the last message/redo: Redo an undone message/compact: Force a session compaction/fork: Fork the current session/share: Open the share/export dialog/clear: Clear the current prompt
Any command registered in the FrownCode command system can be triggered this way.
/close
/close is a direct alias for exiting the TUI.
/closeIt behaves the same as /exit, /quit, and /q.
/caveman
FrownCode includes built-in Caveman mode for compressed answers.
/caveman on/caveman lite/caveman full/caveman ultra/caveman offCaveman mode is enabled by default and can be changed at any time during a session.
/auto
Use /auto to tune how FrownCode picks a model when you keep the model selector on Auto.
/auto quality/auto reasoning on/auto prefer provider openai anthropic/auto avoid model mini nano/auto advisor onThis updates shared Auto rules used by both the TUI and desktop app.
/auto-rules
Use /auto-rules in the TUI to open the dedicated Auto Rules dialog.
/auto-rulesThe dialog lets you change:
- mode
- reasoning requirement
- preferred providers
- avoided providers
- preferred model patterns
- avoided model patterns
- OpenRouter advisor mode
Sidebar awareness
The sidebar now exposes extra working-state information so you can glance at what is happening without opening more UI:
- context usage
- current model
- provider
- Caveman mode status
This makes it easier to stay oriented in long sessions.
Shared Auto model routing
FrownCode includes an Auto model option in both the desktop app and TUI.
When Auto is selected, FrownCode can route each prompt to the best connected model based on:
- quality vs speed vs cost mode
- reasoning requirement
- preferred providers
- avoided providers
- preferred model name patterns
- avoided model name patterns
- media requirements such as image, PDF, audio, or video support
- optional advisor mode
Both app surfaces now expose dedicated UI for this:
- Desktop app:
Settings -> Models -> Auto Rules - TUI: model picker ->
Auto Rules...or/auto-rules
The prompt bar also shows why Auto picked the current model, so routing is not a black box. After a message is sent, FrownCode also keeps the Auto reason in the message metadata, so you can audit which rule or advisor choice routed the request.
If you also connect OpenRouter, FrownCode can use openrouter/free as a lightweight advisor for model choice.
That advisor helps pick from your configured models, but it is not the model that performs the real task.
Turn it on from either surface:
/auto advisor on/auto advisor offIn the desktop app, open Settings -> Models -> Auto Rules and toggle OpenRouter advisor.
openrouter/free is excluded from execution ranking and fallback execution, so it cannot complete real work even if every other model is unavailable.
Desktop app production controls
The desktop app now has first-run shortcuts and provider/model management built into the main flow:
- Add provider opens the provider connection panel.
- Tune Auto opens model settings with Auto Rules.
- Open project starts a workspace.
- Quick commands points users at
/btw,/caveman,/auto, and/close.
Provider settings include a Test action for connected providers. It refreshes provider metadata and checks that the provider is connected and returning usable models.
Auto Rules in desktop settings include:
- mode
- reasoning requirement
- OpenRouter advisor toggle
- preferred providers
- avoided providers
- preferred model patterns
- avoided model patterns
- live preview of the model Auto would pick
This makes the desktop app suitable for setting up providers without memorizing config keys.
Automatic compaction
FrownCode can compact sessions before the context window becomes a hard problem.
By default, auto-compaction starts around 85% of usable context instead of waiting until the session is almost exhausted.
You can tune this with config:
{ "compaction": { "auto": true, "threshold": 0.85, "reserved": 20000 }}NVIDIA NIM support
FrownCode supports NVIDIA NIM through the OpenAI-compatible API surface.
Use the NVIDIA-hosted endpoint:
https://integrate.api.nvidia.com/v1Then connect it from the TUI:
/connectAfter saving your API key, NIM models can appear in the model picker and be used like other providers.
See Providers for setup details.
Branding and release surface
FrownCode also replaces the old upstream-facing product surface with Frown-specific defaults:
- website and docs point to
frown.ammar.click - repo and release references point to
kyssta-exe/FrownCode - legal and product copy use
Kyssta - desktop and CLI product names use
FrownCode
What is still intentionally external
Some references may still use the old opencode-* package names when they refer to third-party packages that have not been forked yet.
Those are ecosystem dependency names, not the shipped FrownCode product name.