On this page

Rewrite workflow

Rewrite asks the installed CLI to generate, judge, detector-score, and select candidates. The desktop app supplies controls and renders the returned RewriteResult; it does not run any pipeline stage itself.

Input and controls

No number starts filled in: each is a field the operator types, and an empty one blocks Run with State the <setting>.

Control UI value CLI argument
text editor non-empty; as tall as its text plus one empty line, so the page scrolls stdin, final -
Text style every name skryba style list returned; default preserve --style <NAME>
Output language every name skryba language list returned; default preserve --language <NAME>
detectors empty, free text optional global --detectors
candidates per chunk typed, required --candidates
max words per chunk typed, required --max-words-per-chunk
temperature (nonnegative) typed, required; any finite value from zero up, the selected generator owning any upper bound --temperature, as typed
minimum quality typed, required global --minimum-quality, as typed
seed typed, required --seed
trained policy path empty optional --policy
written by Brama or My model (ster generate), default Brama --generator brama|local
checkpoint (local only) empty --local-model
your adapter (local only) empty, omitted when blank --adapter
revision (local only) empty, omitted when blank --local-revision
device (local only) cpu, metal, or cuda, default cpu --local-device
precision (local only) f32, f16, or bf16, default f32 --local-precision
max new tokens per candidate (local only) typed, required with the local generator; empty names it --local-max-new-tokens

The two pickers are filled from the CLI's catalog when the window opens and again after every change in Styles & languages; the chosen entry's instruction is shown under each picker, because that instruction is what every candidate is written to and judged against. Style and language are independent choices. The profile applies to every candidate and takes precedence over a sampled editing strategy or a personal adapter's learned voice. If the listing fails, the CLI's sentence is shown under the pickers instead. Full definitions: CLI rewrite.

The local controls appear only while My model (ster generate) is selected, under the app's caption: Each candidate is one ster generate run, so the checkpoint is mapped once per candidate. --local-chat-template is not exposed, so a local run takes the CLI default auto.

Empty text prevents Run with Paste the text to rewrite. A local run with no checkpoint prevents Run with Name the checkpoint your model runs on, or switch back to Brama. An empty number prevents Run with State the candidates per chunk., State the max words per chunk., State the temperature., State the minimum quality. or State the seed.

Invocation shape

skryba [--detectors NAMES] --minimum-quality Q rewrite --json --style preserve --language preserve --candidates N --max-words-per-chunk N --temperature T --seed N [--policy PATH] --generator brama -

Changing the two pickers replaces the profile values, for example --style academic --language en or --style status-update. Local generation replaces --generator brama with its own checkpoint and adapter arguments without changing the profile. The app always requests --json because the view needs the complete candidate evidence. Brama still runs the quality judge on the local route, so a valid Brama token and a detector key are required either way. Models must support the requested language.

Successful result

The top panel shows text, the style and language names the CLI returned in profile, and Copy. Every chunks[] item shows:

  • 1-based chunk number;
  • selected strategy and AI probability;
  • whether source fallback was used;
  • selected quality score and total candidate count;
  • Style: matched/not matched and Language: matched/not matched, from the selected evaluation;
  • selected per-detector rows and cache labels;
  • quality judge issues when non-empty.

The view does not render every losing candidate separately; the CLI JSON retains them. Selection and profile judgment are never repeated in Swift. These are the implemented display rules, not a captured graphical qualification run.

Keep mine

Under a finished rewrite the app offers Keep mine: an editor seeded with the CLI's own rewritten text. Change it into your own words and the pair — the model's text against yours — is recorded by a separate invocation of skryba writing-style keep, with both texts on stdin as one JSON object. Its status line never replaces the rewrite result it was read from. The form and its refusals are on the Writing style workflow page. Choosing a required register is separate from retaining or training your personal writing style.

Source fallback and refusals

When used_source_fallback is true, the detail reads:

No rewrite passed every check. The original text matched the requested style and language and was kept.

If the original does not match either profile choice, the CLI exits with a failure naming the chunk, requested style and language, match booleans, candidate rejection counts, and source judge issues. The app displays that stderr rather than a success result. A missing detector key or Brama credential also remains a failure; choosing a style does not bypass either dependency. A name removed from the catalog after the pickers were filled is refused by the CLI with the catalog's own sentence; the pickers are refreshed after every change made in this window.

Maintained as part of the website-owned Skryba documentation corpus.