The assistant (pareto)
Since 0.4.3 / 0.3.11 the assistant opens with a welcome box in the brand colours (product line, version, machine, project, model, a tips line), takes Tab completion of its slash commands and sample names, and groups /help by product: Project, Samples (/pick), Settings and models (/models, /keys, /cost), Cloud (/cloud ..., when the build has the cloud commands), Chip (/hw, /pcb, when the build has them), This machine and session (/doctor, /status, /version). PARETOSTACK_PRODUCT=cloud|chip names the product in the welcome box. The catalogue is paretostack/branding.py.
Offline mode (/offline on, or paretostack models offline on for every later session): the local model only. Switching it on checks that Ollama is installed and reachable and that a text model suited to the machine is installed; when the network is reachable it compares the installed model with the registry's current version and the Ollama runtime with the latest release; it then offers the download or re-download (size shown, asks first, skippable, never silent); and only then turns the cloud backends (Claude, Anthropic, OpenAI) off for the session, so no code excerpt leaves the machine. With nothing usable installed and the download declined, offline mode stays off and says why. /offline off restores the previous model choice; the welcome box and /status show offline: local model NAME. Without network it says so and continues with what is installed. paretostack/offline.py.
pareto is a chat prompt in your terminal. You type a request or a slash command; it reads the project, shows the steps it will take, asks once before anything that runs your program, and prints the results as text plots. It does the same work as the other commands (analyze, plan, run, search, apply), in one place, and can optionally ask an AI model for settings advice. It does not need an AI model, and it never needs an API key.
Start it
| Where | Command |
|---|---|
| Windows (installer) | pareto in any terminal, or Start menu > ParetoStack > ParetoStack Command Prompt |
| Windows (zip) | pareto (the pareto.cmd of the package) |
| Linux, DGX | ./pareto from the package folder, or pareto once it is on your PATH |
| Any | paretostack chat (the same program) |
pareto PROJECT_FOLDER opens a project (a folder with a paretostack.yaml); with no folder it uses the current one if it has a paretostack.yaml, else the word_filter sample. In a release package the chat is a licensed command, like run: install your license first (paretostack license install license.json).
Models and keys
| Choice | What it is | Needs | What leaves your machine |
|---|---|---|---|
none |
rule-based advice only | nothing | nothing |
local |
a model on your own computer (Ollama), installed by install.sh --with-models or install.cmd -WithModels |
the local model | nothing |
claude / anthropic |
Claude | your Anthropic key, or Claude Code if it is installed on the machine and signed in | a short summary, only after you say yes |
openai |
OpenAI | your OpenAI key | a short summary, only after you say yes |
auto (the default) uses the local model if there is one, else rules only. A cloud model is used only when you pick it (--model claude when you start, or /model claude in the chat). The banner tells you which is in use ("model: none (rule-based advice only)").
Keys. paretostack keys setup (or keys set anthropic, keys set openai) stores a key in a private per-user file; it is never shown again (only its last four characters), and keys test only lists the provider's models. keys status shows what is set; keys remove anthropic deletes one. An environment variable (ANTHROPIC_API_KEY, OPENAI_API_KEY) is used instead of the file when it is set. Without any key, the cloud choices simply say they are not available and the chat carries on with rules.
What a cloud model is sent
Before the first send, the chat prints exactly what the model would receive and asks "Send it to claude?". It is a summary of facts and counts, never your source code:
- the machine: operating system, architecture, cores, RAM, processor features, the native target, which compilers exist;
- the project: its name, engine version, accuracy setting, target, the names of the processor targets this machine can run, languages, lines of code, whether it has a run recipe, the profile's wall time;
- the plan: up to 20 items with their id, title, number of places, number in hot code, whether the change is bit-exact, the version it needs, and its ceiling;
- for a plain request typed in words, also the names of the projects the chat knows (the samples and the current project).
The Claude backend is started in an empty folder with read-only tools, so it cannot read your project either. Say no and nothing is sent; the advice then comes from the rules.
Commands
| Command | What it does |
|---|---|
/arch |
this machine and the processor targets |
/project [PATH] |
show or change the project |
/samples, /examples [NAME] |
the sample projects (/examples copy NAME DIR writes one) |
/plan [NAME or PATH] |
what would change (nothing is run) |
/run [NAME or PATH] |
time it, change a copy, time it again, check the output (asks first: it runs your command) |
/search [BUDGET] |
the autonomous search: many candidates (asks first) |
/report |
the result card of the last run |
/patch |
the change as a patch file (the first lines are shown) |
/plot [all] |
a text plot of the speed-ups, for this project or for every sample you have run |
/suggest |
settings advice: version, accuracy, target, which items, search or not |
/apply |
write the last suggestion's settings into paretostack.yaml (asks first) |
/config target=NAME |
the per-user default processor target |
/model [auto, local, claude, anthropic, openai, none] |
which model advises |
/explain |
why the project got the result it got, from the measured facts |
/clear, /quit |
Anything else is a plain request: "optimize word_filter and show me the plot", "why is text_stats not faster?", "compare all samples". The chat shows the steps it read from your words and asks once before it runs your program; a connected model helps with unusual wording.
What it changes
Your files are not changed by /plan, /run, /search, /report, /plot or /explain. /patch writes a patch file. /apply writes settings into your project's paretostack.yaml, after asking. Applying a verified change to your code is paretostack apply, with the options described in the command line reference.
Scripts
pareto --script FILE reads the lines to type from a file, and --yes answers the questions (running your command, sending a summary to a cloud model) with yes. Use --yes only in scripts you trust: with --model none or local nothing is sent anywhere.
A short session
> /plan word_filter
● plan(word_filter)
... what would change, and how many places (nothing is run)
> /run word_filter
This runs the project's own command several times (it never changes your files). Continue? y
... verdict: pass, identical output, 21x faster
> /plot
... a text plot of the speed-up