Knit is a local-first runtime that turns spoken and visual feedback on live software into structured change requests for coding agents.
Knit sits between a running application and the systems you use to change it. Instead of asking people to write long tickets, annotate screenshots by hand, or reconstruct UI problems from memory, Knit lets them review software in context: point at the interface, speak about what should change, inspect the captured request, and send an approved package to a coding agent.
The project is aimed at teams who want a tighter loop between live product review and implementation. Designers, PMs, QA, founders, and engineers can all describe software more naturally when they are looking at the real thing. Coding agents are useful, but they still need grounded intent. Knit is the layer that captures that intent in a way that is reviewable, structured, and safe to hand off.
- A supported desktop environment for the local daemon (Windows, Mac, Linux)
- A coding agent you actually plan to send work to, configured before your first submit
- Optional:
- Codex CLI or API access
- Claude Code-style CLI
- OpenCode-compatible CLI
- Python 3 for managed faster-whisper bootstrap (Speech to Text)
npm install -g @chadsly/knit
knit startOptional: Download un-archive and install/run from our release page
- Start the daemon (e.g. knit start).
- Open the local UI at
http://127.0.0.1:7777. - Start a review session and select your workspace (where your code lives).
- Capture feedback from the main UI, floating composer, or browser extension.
- Choose what the agent should do with the approved feedback.
- Preview the structured request.
- Approve and submit it to your configured adapter. You can watch the 'Queue and delivery" on the Main UI for your update to finish or just go queue another one
Software feedback is usually detached from the software itself.
- Bug reports and design notes are often written after the fact, when important context is already gone.
- Screenshots and screen recordings help, but they still force someone to explain what mattered, where it happened, and what should change.
- Coding agents can move quickly once they have good input, but vague tickets and ungrounded prompts still produce vague output.
- Teams end up spending too much time translating “what I meant” into something an implementation system can actually use.
For UI and workflow feedback, pointing and speaking are often more precise than typing a long description. Knit is built around that fact.
Knit runs locally and captures approved review context during explicit feedback sessions.
It combines:
- typed notes
- spoken notes
- pointer and page context
- snapshots
- optional event-triggered video
Then it normalizes those signals into a structured feedback package, lets the user review and approve the result, and hands that package to a coding-agent adapter.
The key idea is simple: keep the human in control, keep the software context attached, and make the handoff to code generation explicit instead of magical.
- Start a review session in the local Knit UI.
- Open the target app and interact with it while Knit tracks the approved review context.
- Speak, type, point, capture a snapshot, or attach a short clip to explain what should change.
- Review the structured request before anything is sent onward.
- Approve the package.
- Submit it to a coding-agent adapter.
- Review the next version and iterate again.
flowchart LR
A["Live app"] --> B["Review session in Knit"]
B --> C["Voice, pointer, snapshot, or note capture"]
C --> D["Structured feedback package"]
D --> E["Coding-agent adapter"]
E --> F["Revised software"]
F --> B
Available now in this repository:
- Local review sessions with explicit start, pause, resume, stop, and delete flows
- Main local web UI served by the daemon
- Floating composer for fast capture while switching contexts
- Chromium extension side panel for browser-grounded capture and submission
- Typed notes, audio notes, snapshots, and optional tab video
- Pointer and browser-context grounding, including URL, route, selection, and focused-element details
- Structured request preview before submission
- Submission intent presets so the same approved feedback can implement changes, draft a plan, or create Jira tickets
- Editable agent prompt templates exposed from the review UI before preview or submit
- Approval-gated submission flow
- Coding-agent adapters for
codex_cli,codex_api,claude_cli,claude_api, andopencode_cli - Bundled local CLI wrappers for Codex, Claude, and OpenCode under
scripts/ - Persisted submission queue with retry handling and restart recovery
- Encrypted local persistence for structured state and artifacts
- Audit logging, retention controls, and policy hooks
Available now, but worth calling out explicitly:
- Managed local transcription with faster-whisper
- Local CLI transcription mode
- LM Studio local transcription mode
- Remote transcription and remote submission controls that can be gated or disabled
Knit is not intended to be spyware, passive monitoring, or background surveillance software.
The trust model is explicit:
- capture happens inside explicit session boundaries
- the user starts and stops review sessions intentionally
- capture scope is narrow by default
- browser capture is tied to the page or tab being reviewed
- user approval happens before coding-agent handoff
- artifacts are stored locally with encryption and retention controls
- outbound behavior is policy-gated and can be restricted
- transcription and agent providers are pluggable rather than hard-wired
Important design principles in the current implementation:
- No silent always-on background capture by default
- Visible review workflow with current session state in the UI
- Window-scoped and tab-scoped capture patterns instead of broad uncontrolled monitoring
- Token-authenticated local control APIs
- Replay-protected mutation endpoints
- Secure local storage and audit boundaries
- Redaction, retention, and enterprise policy hooks are part of the design, not an afterthought
If you are evaluating Knit for serious use, start here:
At a high level, Knit is a local runtime with a small number of clear boundaries:
cmd/daemonStarts the local HTTP server, serves the main review UI, manages sessions, capture state, storage, policy checks, and submission orchestration.cmd/trayNative controller that ensures the daemon is running and exposes quick local controls.internal/sessionCanonical feedback and session lifecycle logic.internal/storageLocal encrypted persistence for structured data and artifacts.internal/serverMain UI, floating composer, extension endpoints, provider previewing, and submission APIs.internal/transcriptionLocal and remote transcription providers.internal/agentsAdapter layer that turns approved Knit packages into coding-agent requests.extension/chromiumBrowser companion UI for browser-grounded capture flows.
The architecture is deliberately agent-agnostic. Knit packages feedback into a structured internal form, then hands that off through adapters rather than baking one provider deep into the core runtime.
Knit is not:
- just a screen recorder
- just another chat shell around an LLM
- just ticket automation
Knit is built for grounded, human-directed software iteration.
What makes it different:
- It starts from a live app, not from a blank prompt box.
- It treats human review and approval as part of the workflow, not friction.
- It preserves visual and interaction context instead of flattening everything into prose.
- It is local-first by design, with explicit capture boundaries and operator controls.
- It is open-source and extensible at the adapter, transcription, and capture layers.
If you want the full operator walkthrough, use docs/GETTING_STARTED.md.
- Go installed locally
- A supported desktop environment for the local daemon and browser workflow
- A coding agent you actually plan to send work to, configured before your first submit
- Optional:
- Codex CLI or API access
- Claude Code-style CLI
- OpenCode-compatible CLI
- LM Studio
- Python 3 for managed faster-whisper bootstrap
Knit is meant to augment an existing coding workflow, not replace it. Before you start a review session, make sure your submit adapter, workspace, and any required API keys or CLI commands are configured in Settings -> Agent, knit.toml, or .env.
go run ./cmd/daemonThen open:
http://127.0.0.1:7777
On first run, Knit writes a user-facing config file at ./knit.toml by default. If a legacy ./.knit/knit.toml already exists, Knit will continue using it until you move it. Override either path with KNIT_CONFIG_PATH if you want the config somewhere else.
npm install -g @chadsly/knit
knit startpython3 -m pip install chadsly-knit
knit startgo run ./cmd/trayThe tray acts as a controller around the daemon. Quitting the tray does not automatically stop the detached daemon process.
go build -o ./dist/local/daemon ./cmd/daemon
go build -o ./dist/local/ui ./cmd/ui
go build -o ./dist/local/tray ./cmd/tray- Start the daemon or tray.
- Open the local UI at
http://127.0.0.1:7777. - Configure your coding agent, workspace, and provider credentials.
- Start a review session.
- Capture feedback from the main UI, floating composer, or browser extension.
- Choose what the agent should do with the approved feedback.
- Preview the structured request.
- Approve and submit it to your configured adapter.
The runtime configuration surface uses the KNIT_* environment namespace.
Common examples:
- Transcription mode:
KNIT_TRANSCRIPTION_MODE - Local transcription command:
KNIT_LOCAL_STT_CMD - Default submit adapter:
KNIT_DEFAULT_PROVIDER - Codex CLI adapter command:
KNIT_CLI_ADAPTER_CMD - Claude CLI adapter command:
KNIT_CLAUDE_CLI_ADAPTER_CMD - OpenCode CLI adapter command:
KNIT_OPENCODE_CLI_ADAPTER_CMD - Codex workdir:
KNIT_CODEX_WORKDIR - Storage directory:
KNIT_DATA_DIR - Local API token:
KNIT_CONTROL_TOKEN
See docs/GETTING_STARTED.md for the full environment surface.
When you run Knit from the repository, the runtime auto-fills the bundled wrapper scripts in scripts/ for codex_cli, claude_cli, and opencode_cli if those command fields are blank.
If you install a packaged daemon wrapper instead, use either:
npm install -g @chadsly/knit
knit startpython3 -m pip install chadsly-knit
knit startKnit now has two explicit config surfaces:
knit.tomlPersistent user defaults for capture, agent runtime, prompt templates, retention, and policy-oriented settings..envSecrets and env-only operational overrides such asOPENAI_API_KEY,ANTHROPIC_API_KEY, orKNIT_CONFIG_PATH.
That knit.toml file also controls UI-facing defaults such as whether Knit should automatically check for updates when the main UI loads.
The repository includes:
The configuration surface is broad, but it helps to think about it in five groups:
- Local CLI transcription
- Managed faster-whisper
- LM Studio local STT
- Remote OpenAI-compatible transcription
codex_clicodex_apiclaude_cliclaude_apiopencode_cli
The local CLI providers all consume the same delivery-intent model. The UI can ask them to:
- implement changes
- draft a plan
- create Jira tickets
- local data directory
- SQLite path
- encrypted artifact storage
- retention windows for audio, screenshots, video, transcripts, and structured state
- local control token
- capability gating
- config lock
- provider allowlists
- outbound allowlist and blocklist
- TLS pinning and CA overrides
- integrity and release-manifest validation hooks
- pointer sampling
- session controls
- transcription settings
- audio mode
- visual capture mode
- browser companion and extension pairing
For concrete settings, use:
cmd/ entrypoints for daemon, tray, and placeholder UI
internal/app/ application assembly and startup wiring
internal/server/ local HTTP API, main UI, floating composer, docs UI
internal/session/ session lifecycle and canonical feedback structures
internal/storage/ SQLite and artifact persistence
internal/transcription/ transcription providers and runtime management
internal/agents/ coding-agent adapter layer
extension/chromium/ Chromium extension popup and side-panel companion
packaging/ release packaging and npm wrapper scaffolding
scripts/ build, packaging, smoke, SBOM, and helper scripts
docs/ user docs, architecture notes, privacy, store assets
test/ release, packaging, and extension-oriented tests
Near-term areas worth pushing forward:
- richer DOM evidence capture with the broswer to allow the coding agent information about timing and user steps
- cleaner desktop app and tray workflows
- more coding-agent adapters and better provider isolation (need to test a lot more with Claude and OpenCode)
- persistent prompt-template library with built-in defaults, user-saved variants, and revert/reset flows shared across the main UI and popout composer
- improved fully local transcription paths
- stronger enterprise policy controls and deployment ergonomics
Issues and pull requests are welcome.
Useful contribution areas:
- capture modules and platform integration
- coding-agent adapters (and testing)
- schema and canonical feedback design
- UI and review ergonomics
- browser extension UX
- docs and onboarding
- security hardening and policy controls
If you want to contribute, start by reading:
The project is most useful when contributions make the feedback loop tighter, safer, and easier to trust.
Knit is released under the MIT License.

