Terminal-native web UI for AI-assisted code and document review
Project description
inq
A lightweight, terminal-native web UI for reviewing and annotating code, PDFs, and markdown — together with AI.
inq is a self-hosted server. You run it on a remote machine, forward the port locally, and open it in a browser. It gives you a file explorer, a scrollable viewer for code / PDFs / markdown, and an annotation surface that humans and AI agents both write into. Threads stay anchored to the line (or page) you asked about, and persist per source.
┌─────────┬────────────────────────┬────────────────┐
│ FILES │ src/inq/sandbox.py │ THREADS │
│ inq/ │ 56 class Gitignore… │ sandbox.py:56 │
│ ai.py │ 57 def __init__( │ › what does… │
│ ▸ … │ 58 … │ · It walks … │
└─────────┴────────────────────────┴────────────────┘
Press @ on any line (or with a range selected) to ask the AI. Press # to leave a note — same anchor, no model roundtrip. Responses stream in, render as markdown, and stay threaded per anchor.
Quickstart
pip install inq-review # PyPI distribution; CLI is `inq`
inq init # pick provider, paste API key, choose model
inq --port 9090 --root . # serve the current directory
On your local machine:
ssh -L 9090:localhost:9090 user@remote
Open http://localhost:9090.
Features
- Anchored threads. Every question or note pins to a line range (code/markdown) or page (PDF). Threads persist per source at
~/.config/inq/threads/. - Two annotation modes.
@asks the AI (streaming, threaded follow-ups).#saves a comment-only note (no AI call). Both render side-by-side in the panel. - Multi-format viewers. CodeMirror for source,
pdf.jsfor PDFs (cmaps + standard fonts bundled so math/ligatures render correctly),react-markdownfor.mdfiles. - Multi-source. Browse the local filesystem by default; click "Open Drive folder" in the UI to pick a Google Drive folder via OAuth.
- Three providers. Anthropic, Google (Gemini), OpenAI — all with prompt-cached file context so follow-ups are cheap.
- Markdown export. "Copy md" buttons in the UI, or
inq notes --root <dir>for the same output from the CLI.
Providers
| Provider | Models | Where to mint a key |
|---|---|---|
| Anthropic | claude-sonnet-4-6, claude-opus-4-7, … |
https://console.anthropic.com/settings/keys |
gemini-2.5-pro, gemini-2.5-flash, … |
https://aistudio.google.com/apikey | |
| OpenAI | gpt-4o, gpt-4o-mini, gpt-4.1, … |
https://platform.openai.com/api-keys |
Credential resolution order: --api-key-file flag → <PROVIDER>_API_KEY env var → ~/.config/inq/config.toml (mode 0600) → macOS keychain (service inq).
Building from source
If you want to hack on the frontend, you'll need Node 20+:
git clone https://github.com/sutra-lab/inq && cd inq
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cd web
npm install
npm run build # produces src/inq/web/ — FastAPI mounts it at /
# or `npm run dev` for hot-reload on :5173 (backend stays on :9090)
Why
Reading code, specs, and documents deeply means asking questions inline — but most workflows force you into a chat window, losing context. Cursor and VS Code remote are heavy editor environments; Claude Code lives in the terminal, not in a scrollable viewer. inq is the small, focused tool that fits between them: zero-install on the client, browser-native, and built around asking questions in place.
See project-spec.md for the full design.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file inq_review-0.1.2.tar.gz.
File metadata
- Download URL: inq_review-0.1.2.tar.gz
- Upload date:
- Size: 2.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc9447bf988ebb4240282580ca02517cc7ef77c7cdd9a8aaf6d0713e33da9aea
|
|
| MD5 |
de141704b61914b79a26475f34801edc
|
|
| BLAKE2b-256 |
4305545593a9e6eb6ea3ba1e0af79798e43dee2f94152940f82e2caeeb162748
|
Provenance
The following attestation bundles were made for inq_review-0.1.2.tar.gz:
Publisher:
release.yml on sutra-lab/inq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
inq_review-0.1.2.tar.gz -
Subject digest:
cc9447bf988ebb4240282580ca02517cc7ef77c7cdd9a8aaf6d0713e33da9aea - Sigstore transparency entry: 1532029238
- Sigstore integration time:
-
Permalink:
sutra-lab/inq@785305d3ae6526a9e14f527abc59b7c7dc684fae -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/sutra-lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@785305d3ae6526a9e14f527abc59b7c7dc684fae -
Trigger Event:
push
-
Statement type:
File details
Details for the file inq_review-0.1.2-py3-none-any.whl.
File metadata
- Download URL: inq_review-0.1.2-py3-none-any.whl
- Upload date:
- Size: 2.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18d5f16a3049c62535fcb363ee5cde743175948e823e7a80a54b9dec7433db9d
|
|
| MD5 |
eabeba83979e97b8474e78bc26cf2174
|
|
| BLAKE2b-256 |
34db943b9a04f64219a7d7f4742ef8cfb6115f6efcaf17830e09751786f53a7e
|
Provenance
The following attestation bundles were made for inq_review-0.1.2-py3-none-any.whl:
Publisher:
release.yml on sutra-lab/inq
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
inq_review-0.1.2-py3-none-any.whl -
Subject digest:
18d5f16a3049c62535fcb363ee5cde743175948e823e7a80a54b9dec7433db9d - Sigstore transparency entry: 1532029331
- Sigstore integration time:
-
Permalink:
sutra-lab/inq@785305d3ae6526a9e14f527abc59b7c7dc684fae -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/sutra-lab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@785305d3ae6526a9e14f527abc59b7c7dc684fae -
Trigger Event:
push
-
Statement type: