Local Motion Get early access

User manual

Operator's manual

Version 0.1 (alpha) · Updated 2026-05-20

Local Motion is a desktop tool that listens to a live remote hearing, follows both sides of the argument in real time, and surfaces a response from a library you prepared in advance — fast enough to read aloud before the moment is over.

This is the day-to-day user manual. If you need configuration internals, JSON schemas, the agent architecture, or the implementation-status audit, see Tech docs.

New here? Read What it is → Install → Pre-hearing runbook.


What it is

Local Motion is a Windows desktop application that does three things in parallel:

  1. Captures audio from your microphone and from the video meeting you're in, locally on your machine.
  2. Transcribes both sides in near-real time so the agent has a rolling text record of the last 60 seconds.
  3. Listens for a pause in the other side's speech. When it detects one, it picks the strongest response from your library and renders it in an always-on-top panel — typically within a few seconds.

The result behaves like a junior associate whispering the right citation at the right second. You read the response. The work is yours; the speed is the tool's.

Who this is for

Solos, small-firm attorneys, pro se litigants, paralegals, and law students doing remote motion practice, depositions, oral argument, or chambers work. The common factor is that you have your own library and your own argument, and the bottleneck in a live hearing is retrieval speed.

Mental model

Most important property: the AI cannot cite anything you didn't give it. Internally, the model is invoked with a tool whose citation arguments are typed as enums regenerated from your current library on every reload. There is no free-form citation field. If you didn't put it on the shelf, it can't appear on the screen.

Citation-lock, in one sentence. The model can write a sentence; it cannot invent a case. The cases it cites are picked from the list you wrote, by name. Everything else in this manual — the panel, the hotkeys, the trigger — is plumbing around that single guarantee.

For the schema-enforced enum mechanism, see Tech docs → Citation-lock.

Glossary

One paragraph per term. The rest of the manual assumes these definitions.

Library

The three corpora Local Motion draws from during a hearing: cases (legal authorities), procedure (court rules and statutes), and knowledge (case-specific facts, dates, exhibits, demands, recurring themes). Built from documents you upload, reviewed and approved by you, then citeable by the agent.

The panel

The small always-on-top window that sits on top of your video call. Frameless, draggable, ignored by alt-tab. Renders the agent's most recent advice: the line to say, the citation cards, the reason, and a confidence indicator.

The trigger

The event that causes the agent to be invoked. Default: voice activity detection sees the other side stop talking for ~1.2 seconds. Alternates: pressing Ctrl+Return forces a rerun; typing into the panel sends a one-shot request; a maximum-interval timer prevents long monologues from going uncited.

The rolling transcript

An in-memory window of the last 60 seconds of transcribed speech, tagged [OTHER] for anything captured from system audio and [ME] for your microphone. This is what the model sees as "what just happened in the hearing."

Pinned card

An advice result you decided is worth keeping visible after the next trigger fires. Press Ctrl+. to pin; pinned cards stack below the primary panel.

Stale-law flag

An optional superseded marker on a case (overruled, limited, distinguished, etc.) that makes the panel render the card in red with a high-visibility pill. Set manually, or via one click from a CourtListener verification that returns a non-Published precedential status.

Activation key

The lm_… credential that unlocks the desktop app. Issued from the admin dashboard, validated on first launch, persisted locally. Carries a plan and a hearing quota.


Install & first run

Local Motion is a single Windows executable. Download → run.

Requirements

  • Windows 10 (build 1903+) or Windows 11, x64.
  • ~150 MB free disk space.
  • A working microphone and audio output (headphones strongly recommended — see below).
  • An internet connection while running, unless you've configured a local Whisper STT and a local LLM.
  • An activation key (lm_…) — emailed when your private-beta access is approved.
  • API keys for at least one supported STT and one supported LLM provider (Groq, OpenAI, Anthropic, or any compatible self-hosted endpoint).

Install steps

  1. Download the installer from your early-access email.
  2. Run it. On first launch, Windows SmartScreen may warn that the app is unsigned during alpha. Click More info → Run anyway.
  3. The Activation screen prompts for your key. Paste it, click Activate. On success the panel boots.
  4. The main panel appears at the top-right of your primary monitor. Drag it wherever you want.
  5. A second small window (Manual Input) is created and centered. Close it or leave it visible — it's the keyboard input surface.

For API-key setup details (env vars, BYO provider config), see Tech docs → API keys.

Activate the app

On first launch the Activation screen prompts for an lm_… key. Paste it; the app validates against the server; on success, the key is stored locally and the panel boots normally. Subsequent launches skip Activation.

Pro-se users: the Pro se plan is free permanently. See "Pro se users — isn't this UPL?" for the Rule 5.5 / Nolo-self-help framing if a court asks.

Hearing quota

Each app session counts as one "hearing" for billing purposes. Sessions under 2 minutes don't count. Plan quotas:

PlanQuota
Pro seUnlimited
Day pass5 hearings / calendar month
SoloUnlimited
Small firm250 hearing-hours / calendar month
CustomPer-deployment

When a session starts and your quota is exhausted, the app shows a red banner above the panel and auto-mutes audio. Manual input (typed text + quick prompts) still works — manual input doesn't count as a hearing.

Audio setup

Local Motion captures two audio streams:

System audio

Everything your computer is playing — the Zoom meeting, the Teams call, the Meet tab — is captured via Windows' built-in loopback mechanism. No virtual audio cable needed, no driver install.

Important: loopback captures the default output device. If you've explicitly set Zoom to route audio to a different speaker (rather than "Same as System"), loopback won't see it. Quickest fix: in Zoom → Settings → Audio → Speaker, set to "Same as System".

Microphone

Your microphone is captured via the system default input device. Windows Settings → Privacy & Security → Microphone must allow desktop apps to access the microphone. On first run, if access is denied, Local Motion shows a one-screen error with a deeplink.

For the WASAPI loopback / cpal internals, see Tech docs → Audio handling.

Headphones are not optional

Wear headphones during every hearing. If your speakers play Zoom audio out loud, your microphone picks it up. The system stream and the mic stream then both transcribe the same speech, and the agent sees opposing counsel's argument tagged [ME] — i.e., as something you said — and responds as if you'd just made that claim. Headphones eliminate this entirely.

Wired headphones are most reliable. Bluetooth works but can introduce a few hundred milliseconds of latency. For evidentiary hearings, prefer wired. Anything with isolation is fine — earbuds, over-ear, mono call-center headsets.


How the library works

The library is the universe of authorities, rules, and facts the agent is allowed to cite. It has three structured stores — cases, procedure, and knowledge — each with stable IDs. The agent picks from those IDs and nothing else.

The library is built by the platform from documents you upload — motions, briefs, opposing counsel's filings, prior orders, deposition transcripts, your own prep notes — and then reviewed and approved by you before any entry becomes citeable. The review step is load-bearing: it's the moment a human lawyer reads the proposed entry and says "yes, this is correct."

That gate is what gives the system its ethics defensibility under ABA Model Rule 1.1 (you reviewed it) and Rule 1.6 (you decided what to load). See the state ethics matrix for the rules-by-jurisdiction view.

Adding & editing entries

Three ways to get content into the library, all routed through the same validation + hot-reload pipeline:

1. Document ingest (primary path)

Open the Library window (panel header → LIBRARY or Ctrl+/), select the Ingest tab, pick a PDF / DOCX / TXT. The platform extracts proposed entries grouped by kind — cases, rules, facts, demands — and presents each in a review card with Accept / Edit / Reject. Citation verification fires automatically on each proposed case as you review it.

2. In-app form editor

The Library window's Cases, Rules, Knowledge, and Prompts tabs provide per-entry forms. Save → file watcher picks it up → agent's citation enum regenerates within ~300ms.

3. Direct JSON edit (always available)

The underlying JSON files live in your config directory and can be edited with any text editor that saves UTF-8. Same hot-reload pipeline as the other two paths.

Hot-edit during a hearing is a real workflow. Refining the wording of a holding during a recess, adding a case you just remembered, fixing a typo — save, and the next agent call uses the updated text. No restart, no reload button.

For the JSON schemas (cases / procedure / knowledge), the editing pipeline internals, and the validator, see Tech docs → Library schemas.

Citation verification

Every case citation you enter — in Document Ingest, in the Library Editor form, or in direct JSON — is auto-verified against the CourtListener corpus 800ms after the citation field stops changing.

What the check shows you

  • Verified — case found in CourtListener. Inline badge with canonical name + year + a "review treatments →" link to CourtListener's page for the case.
  • No match — citation format was recognized but no matching opinion exists. Strong hint to double-check before saving.
  • Non-precedential warning — case found, but CourtListener reports the precedential status as Unpublished, Errata, Separate, etc. One-click "flag as <status>" button writes a stale-law flag to the entry.
  • Unavailable — verification service not configured or unreachable. Neutral state; you can still save the citation.

Honest scope. The check verifies that a citation exists in the free corpus and gives you a fast path to the canonical record. It does not — and cannot, against the free API — definitively tell you whether a case is still good law. That's a citator-grade question (Shepard's, KeyCite). The check catches typos and fabrications; the stale-law badge records what's no longer reliable, on your judgment.

For the worker endpoint, the persisted verification record on each case, and the response schema, see Tech docs → Citation verification.

Stale-law badge

Any case entry can be flagged as no longer good law. When set, the panel renders the card with a red border, a high-visibility uppercase pill (OVERRULED, LIMITED, DISTINGUISHED, etc.), and an italic note below explaining the reason and superseding authority.

How a flag gets set

  • Manual — edit the case entry in the Library Editor and fill in the Superseded fields. Always available.
  • One-click from CourtListener — when citation verification returns a non-Published precedential status, the verifier offers a one-click button to apply a "non-precedential" stale flag.
  • Auto-detection of overruled/limited/distinguished from citing-opinions analysis — on the v0.2 roadmap; not yet built.

The lawyer remains responsible for keeping the library current. The mechanisms above are signals, not substitutes for Shepardizing / KeyCiting before relying on an authority.


The panel

The panel is the always-on-top window where advice appears. Frameless, draggable, ignored by alt-tab, skipped by taskbar previews. Default position: top-right of your primary monitor.

What the panel shows, top to bottom

  • Title bar. Wordmark, microphone mute toggle, library-count chip (e.g., 14c · 7r · 12k), and LIBRARY / REVIEW buttons.
  • Live indicator. A pulsing green dot plus the age of the last advice ("live · 2.1s ago"). Muted-grey when audio is paused.
  • SAY line. The single sentence to read aloud. Bold, large, white.
  • Citation cards. Up to three stacked: case (blue accent), rule (amber accent), knowledge (green accent). Any can be NONE. The case card has a + holding toggle to expand and read the holding text; flagged stale cases show a red badge.
  • Why line. A half-line in muted text explaining why this response is responsive to what the other side said.
  • "they → …" line + "wrong?" link. The captured transcript with an inline "wrong?" link that pushes the text into Manual Input for correction.
  • Input strip. Three tabs — listen, type, quick prompts — plus the relevant widget. See Input modes.
  • Quota banner (only when over quota). Red banner above the panel; audio is auto-muted; manual input still works.
  • Hotkey footer. Muted reminders for pin, hide, rerun, library.

Live controls during a hearing

  • Text size. Ctrl+= / Ctrl+- / Ctrl+0. Scales everything proportionally so hierarchy is preserved.
  • Window opacity. Ctrl+] (more opaque) / Ctrl+[ (more translucent). Useful for letting your notes show through.

Input modes

Three first-class input methods. The panel exposes them as a tab strip.

1. Listen (default)

Microphone is live, system audio is being transcribed, the trigger watches for silence on [OTHER]. Hands-free; you don't touch anything.

2. Type

A small text area where you can type a one-shot prompt — typically a short phrase like "adverse possession — fence rebuilt 2008". Ctrl+Enter submits. Useful for pre-fetching a response for an issue you expect to come up.

3. Quick prompts

A row of one-tap pills, themed to your matter (configurable in config.json under ui.quick_prompts). Faster than typing when you know which issue is up.

The trigger

Four paths fire the agent:

SourceWhen
Silence[OTHER] voice activity stops for ≥1.2 seconds (configurable).
Force rerunCtrl+Return at any time.
Type / quick promptSubmitting in type mode or tapping a pill.
Max intervalIt's been ≥15 seconds since the last trigger (configurable).

Triggers are debounced: a second trigger within 3 seconds is suppressed unless the transcript has changed by ≥30 characters. If the other side delivers a three-minute monologue, the max-interval rule ensures the agent still produces advice every 15 seconds.

Transcript correction

The captured they → … line below every advice card has an inline "wrong?" link. Click it to copy the captured text into the Manual Input box. Correct the wording, hit Ctrl+Enter, and the agent re-runs against your corrected version. The most common gap the citation-lock can't address — transcription drift — closed in one click.

Show the holding

Every case card has a small + holding toggle in the top-right. Click it to expand the card and reveal the verbatim one-sentence holding from your library. The point is to put the actual rule one click away from the SAY line, so you read what the AI is leaning on before reading it aloud.

Confidence states

ValueRenderMeaning
HStandard.Direct hit. The case fits; the response is on-point.
M"conf M" badge, slightly muted SAY.Best fit available, but loose. Read as a starting point.
L"conf L" badge in red, SAY in italics with "consider:" prefix.No strong answer. Often defaults to a polite request for a moment — buying you time rather than offering substance.

Pinning, transcript, and panic hide

Pinning

Ctrl+. pins the current card. Pinned cards stack beneath the main panel; up to three visible. Ctrl+Shift+. clears all pinned cards.

Transcript

Ctrl+T reveals a scrolling transcript pane with the last ~60 seconds of [OTHER] and [ME] text. Older content is dimmed.

Panic hide

Ctrl+Esc hides the panel instantly. Useful if you suddenly need to share your screen. Ctrl+\ brings it back.

Post-hearing review

Every advice card the agent surfaces during a session is captured to memory and disk. Open the Review window from the REVIEW button in the panel header.

What you can do

  • See every captured advice chronologically: the SAY line, what the other side said, the why, the cited IDs, the source (audio / manual).
  • Attach a 👍 / 👎 and a free-form note to each entry. Both auto-save 500ms after the last edit.
  • Export the full session as Markdown (human-readable; what you'd email a partner) or JSON (machine-readable; for internal tooling).

When sessions roll over

A new session begins when a hearing starts. If there's leftover data from a different hearing, it's archived before the new session starts fresh. Crash recovery: if the app dies mid-session, the next launch resumes from the on-disk record.

For the on-disk format, the IPC commands, and the persistence model, see Tech docs → Sessions & logs format.


Hotkey reference

All hotkeys are configurable. Defaults:

ComboAction
Ctrl+\Toggle panel visibility
Ctrl+.Pin current advice card
Ctrl+ReturnForce agent rerun on current transcript
Ctrl+Shift+.Clear all pinned cards
Ctrl+TToggle transcript visibility
Ctrl+EscapePanic hide (instant, no animation)
Ctrl+RForce config reload
Ctrl+PCycle panel position (corners)
Ctrl+= / Ctrl+- / Ctrl+0Text size up / down / reset
Ctrl+] / Ctrl+[More opaque / more translucent
Ctrl+MToggle microphone (mute audio capture)

Hotkeys register at the OS level — they fire even when Zoom has focus.

Pre-hearing runbook

Checklist for the morning of a hearing. Time budget: ~15 minutes.

The day before

  1. Verify every date, dollar amount, and exhibit reference in your knowledge entries is current.
  2. Verify your library contains every authority you intend to be able to cite — the agent can't cite anything that isn't there.
  3. Pick recurring themes you intend to use; confirm they're loaded.
  4. Update quick-prompt pills to match the issues you expect.

30 minutes before the hearing

  1. Put on headphones. Not optional.
  2. Launch Local Motion. Confirm the status bar shows green for STT and LLM providers.
  3. Join your own test meeting (or play audio from a separate device) and speak a few words. Verify the transcript pane (Ctrl+T) shows both [OTHER] and [ME] entries.
  4. Press Ctrl+Return to force an agent call. Confirm an advice card renders.
  5. Position the panel (Ctrl+P or drag). Tune opacity and text size.
  6. Practice Ctrl+Esc (panic hide) once and Ctrl+\ to bring it back.

During the hearing

  • Listen to the judge, not the panel. Glance at the panel only between exchanges, only at the SAY line.
  • Pin (Ctrl+.) anything you might want again two or three minutes later.
  • If the panel hasn't updated and you expect an answer, press Ctrl+Return.
  • If you screen-share, panic-hide first (Ctrl+Esc). Better: share only the specific window you intend to show.
  • Treat confidence L results as time-buyers, not substantive answers. The standard L output is a polite request for a moment.

After the hearing

  1. Open the Review window from the panel's REVIEW button. Walk through every advice card; attach thumbs + notes. Export as Markdown.
  2. Add any new authority or new fact you learned during the hearing to the library — Document Ingest accepts deposition transcripts and prior orders.

Disclosure & ethics

Local Motion is a research and preparation tool. It is not legal counsel. When asked what you used, the accurate description is short:

"I used a real-time research tool that listens to the hearing and retrieves authorities from a library I prepared in advance. Every citation it surfaces is one I had already curated before today; it cannot generate or invent a citation. The judgment about what to say is mine."

Every paid plan ships a small set of plain-language disclosure templates — for a candor-to-tribunal certification, a notice of AI assistance, and a response to a judicial inquiry. Templates are tracked against current published guidance from the ABA, NJ, NY, CA, TX, and FL state bars. See the state ethics matrix for the rules-by-jurisdiction view, or the Rule 3.3 framing on the objections page for the partner-track answer.

You are still responsible for verification. The citation-lock guarantees the agent cannot invent a case. It does not guarantee that the case you loaded is the strongest available authority, or that a statute hasn't been amended since you wrote the entry. Independent verification before reliance is your duty — same as with any prep tool. See "What if the case in my library was overruled?" for the stale-law analysis.

Troubleshooting

"API key not found" in the panel

The env var named in config.json isn't set. On Windows, set it with setx, close all terminals, and relaunch.

No transcript appears even though I'm talking

Likely causes: (1) Mic permission denied — check Windows Settings → Privacy → Microphone. (2) Wrong mic — set audio.mic_device explicitly in config.json.

Transcript shows my voice as [OTHER] (or opposing counsel as [ME])

Your speakers are routing voice back through the loopback. Wear headphones. This eliminates the loop entirely.

The trigger never fires

VAD isn't detecting silence. Either the other side never pauses (use Ctrl+Return to force) or system audio isn't being captured at all (check the transcript pane for [OTHER] entries).

Loopback isn't capturing the Zoom call

Zoom is routing audio to a non-default device. Fix: in Zoom → Settings → Audio → Speaker → set to "Same as System".

Advice never appears, but the transcript is filling

The LLM call is failing. Check the status bar for an error. Common: missing/invalid Anthropic or OpenAI key, rate limiting, network blocked.

Advice appears but cites NONE for everything

The agent doesn't have a strong match in your library. Usually correct behavior — add the relevant case. If you're sure you have a fit, check that the entry's holding and key_phrases are descriptive.

Panel is off-screen / on the wrong monitor

Press Ctrl+P to cycle corner positions. If fully off-screen, the next launch will re-center.

SmartScreen blocks the installer

Alpha builds are unsigned. Click More info → Run anyway. Code-signed installers are on the public-beta path.

Known limits

  • Windows only in v0.1. macOS is on the v0.2 roadmap.
  • Remote proceedings only. In-person trial use is a v3 problem with materially heavier regulatory complexity.
  • One active matter at a time in v0.1. Multi-case management is a Pro-tier feature.
  • No speaker diarization within [OTHER]. The judge and opposing counsel both appear as [OTHER]. The agent reads context, not strict speaker identity.
  • VAD can't fire when both sides talk over each other. Cross-talk doesn't produce silence. Use Ctrl+Return during heavy back-and-forth.
  • Allowlisted network calls only. Local Motion only contacts the STT and LLM endpoints you've configured plus localmotion.ai for activation, hearings-quota, and citation verification.

Reviewing for your firm's IT or security team? See Tech docs — architecture, data flow, network requirements, AI-provider list, configuration, and compliance posture. Found something missing or out of date? Tell us.