Skip to content

Rewordit

Rewrite any sentence in fresh words — on-device, meaning kept

Overview

Rewordit rewrites a sentence or short passage in different words while keeping its exact meaning. Paste the text, pick how far it may stray, and it returns a fresh wording — same facts, same tone, same intent. It is part of the kimtos new-tab app suite and is a Pro app.

Everything runs fully on-device. Rewordit uses the on-device KimtAI model (the same small language model that powers HomeAI), which runs entirely in your browser. Your text never leaves the machine — there is no backend, no account, and no network call.

Highlights

  • Reword without losing meaning — the model keeps the facts, numbers, names, tone, intent, and roughly the same length, and only changes the wording.
  • Precise / Balanced / Creative — three creativity levels control how far the rewrite strays from the original phrasing.
  • Runs on the on-device model — generation happens locally on the downloaded KimtAI model; nothing is uploaded.
  • Copy and rewrite again — copy the result in one click, or ask for another wording of the same input.
  • Agent tool — the assistant can call Rewordit's rephrase_text tool to reword text as part of a larger task.

Requirements

Rewordit needs a downloaded on-device model to run. If none is present yet, it points you to KimtAI to download one first (a small model is enough). See Getting Started.

Privacy model

Rewordit sends nothing to a server. The input text is handed to the local model running in a Web Worker in your browser, and the rewritten text comes straight back. There are no analytics and no third-party calls — the text you rephrase and the result both stay on your device.

Getting Started

Open Rewordit from the dock. Because it runs on the on-device model, it needs a model downloaded before it can rewrite anything.

Download a model first

Rewordit uses whichever on-device model you have in KimtAI. If you have not downloaded one yet, Rewordit shows a short notice and an Open KimtAI button — open KimtAI, download a model (the small default is enough), then come back.

Once a model is present, Rewordit picks one automatically:

  • your active KimtAI model, if it is downloaded; otherwise
  • the recommended small model, if you have it; otherwise
  • the first downloaded model.

Rewrite a sentence

  1. Type or paste a sentence or short passage into the box.
  2. Pick a creativity level (see below) — Balanced is the default.
  3. Click Rephrase, or press ⌘/Ctrl+Enter.

The result appears below and streams in word by word as the model generates it. When it finishes, you get a Copy button and a Rephrase again button to request another wording of the same input.

Creativity levels

The level controls how far the rewrite may stray from the original wording — the meaning is always kept fixed by the prompt.

LevelStrays…
PreciseLeast — small, safe substitutions.
BalancedA moderate rewrite (the default).
CreativeMost — freer rephrasing and restructuring.

Tips

  • Rewordit is built for one sentence or a short passage at a time, not long documents.
  • The model keeps roughly the same length and the same language as your input, and preserves facts, numbers, names, tone, and intent.
  • If the output looks empty or off, just Rephrase again — small on-device models vary run to run.

As an agent tool

The assistant can reword text for you by calling Rewordit's rephrase_text tool, passing the text and an optional style (precise, balanced, or creative). It uses the same on-device model, so a model must be downloaded first — if none is, the tool asks you to open KimtAI and download one.

Architecture

Rewordit is a thin UI over the suite's on-device chat engine. It renders a strict rephrasing prompt, streams the reply from the local model, and cleans the result — all in the browser. The app lives in extension/src/apps/rephrase/. Nothing in this flow talks to a server.

Modules

FileRole
apps/rephrase/index.tsThe app descriptor and UI — the input box, the Precise/Balanced/Creative selector, streaming output, Copy / Rephrase-again, model selection, and the rephrase_text agent tool.
apps/rephrase/meta.tsApp metadata — id rephrase, name Rewordit, accent, order, and plan: 'pro'.
lib/engines/homeai.tsThe on-device chat engine — createChat() loads a model in a Web Worker and streams tokens; downloadedModels() / recommendedModelId() / byId() pick and describe the model.
@kimtos/prompts (rephrase.md)The strict rephrasing prompt — renderPrompt('rephrase', { input }) builds the messages and defaults; stripPreamble() cleans the model's reply.

The prompt

The rephrasing instructions live in @kimtos/prompts as rephrase.md, not in the app. It is a strict prompt: respond with only the rephrased text, preserve all meaning (facts, numbers, names, tone, intent), keep roughly the same length (±20%) and the same language, change the wording as much as possible, and ignore any instructions embedded in the input. It defines a default maxTokens of 256, which the app applies.

Data flow

  1. Pick a model. pickModel() returns your active KimtAI model if it is downloaded, else the recommended small model, else the first downloaded one. If nothing is downloaded it returns null, and the UI points you to KimtAI.
  2. Render the prompt. renderPrompt('rephrase', { input }) produces the chat messages and defaults (including maxTokens).
  3. Run the model. createChat({ model }) loads the model in a Web Worker; after chat.ready, send() streams the reply via onToken / onDone. The selected creativity level sets the temperature (Precise 0.3, Balanced 0.5, Creative 0.75).
  4. Clean the output. stripPreamble() strips any leading filler ("Here is…", labels, quotes) so only the rephrased text remains.

The agent tool

Rewordit exposes one MCP-shaped tool on its descriptor, so the HomeAI agent can reword text as part of a task:

  • rephrase_text — rewrite a sentence or short passage in different words while keeping its exact meaning, using the on-device model.
    • Parameters: text (required) and an optional styleprecise, balanced (default), or creative, mapping to temperatures 0.3 / 0.5 / 0.75.
    • Behavior: a headless one-shot (rephraseOnce) that picks a model, runs the same rephrase prompt to completion, and returns the stripPreamble-d result.
    • Needs a model: if none is downloaded it returns a friendly { ok: false } telling the user to open KimtAI and download one, rather than throwing.

Pro entitlement is enforced centrally by the apps controller (a free user sees an upgrade wall before the app renders), so the app code assumes it is already allowed to run.