inferay

Run agent chats, terminals, file context, diffs, and repo workspaces in one desktop shell.

Terminal
$ npx inferay

Install or launch from your terminal.

Col3
Row2
inferaymain
Make Images a Files page with selection, details, delete, and chat handoff.

Reworking the page around the app shell patterns: centered table, local selection state, row metadata, and chat handoff without adding downloads.

src/pages/ImagesPage/index.tsx+2-2
@@@ -42,7 +42,7 @@
-42const pageTitle = "Images";
+42const pageTitle = "Files";
4343
-44<ImageGrid items={images} />
+44<FileRows files={files} />
4545<FileActions selected={selected} />

Checking the shell spacing against the current desktop layout.

Keeping route and page behavior as wiring while the package-owned logic stays outside the replica.

Matching the dark pane headers, thin borders, compact text scale, and bottom composer treatment.

Leaving this as static site UI so Vercel never imports desktop runtime hooks.

Verifying the message region scrolls independently from the fixed composer surface.

Keeping the tool activity pill available without shifting the pane layout.

Preserving the same workspace/sidebar density as the desktop shell.

Using prepared product-like content instead of a decorative marketing mock.

Editing files+2
Message… (/ commands, @ files)
inferaymain
Check the inline folder picker and composer spacing.

The folder picker stays docked at the bottom of an empty pane; the composer keeps its file and command affordances inside the input frame.

src/pages/Terminal/InlineDirectoryPicker.tsx

Checking the shell spacing against the current desktop layout.

Keeping route and page behavior as wiring while the package-owned logic stays outside the replica.

Matching the dark pane headers, thin borders, compact text scale, and bottom composer treatment.

Leaving this as static site UI so Vercel never imports desktop runtime hooks.

Verifying the message region scrolls independently from the fixed composer surface.

Keeping the tool activity pill available without shifting the pane layout.

Preserving the same workspace/sidebar density as the desktop shell.

Using prepared product-like content instead of a decorative marketing mock.

Reading files+2
Message… (/ commands, @ files)
New Session
Search folder…
Message… (/ commands, @ files)
inferaymain
Review the inline diff surface against the real app.

The diff card keeps the same dark file header, tabular line numbers, green additions, and red removals used in chat tool output.

src/pages/ImagesPage/index.tsx+2-2
@@@ -42,7 +42,7 @@
-42const pageTitle = "Images";
+42const pageTitle = "Files";
4343
-44<ImageGrid items={images} />
+44<FileRows files={files} />
4545<FileActions selected={selected} />

Checking the shell spacing against the current desktop layout.

Keeping route and page behavior as wiring while the package-owned logic stays outside the replica.

Matching the dark pane headers, thin borders, compact text scale, and bottom composer treatment.

Leaving this as static site UI so Vercel never imports desktop runtime hooks.

Verifying the message region scrolls independently from the fixed composer surface.

Keeping the tool activity pill available without shifting the pane layout.

Preserving the same workspace/sidebar density as the desktop shell.

Using prepared product-like content instead of a decorative marketing mock.

Message… (/ commands, @ files)
inferaymain
Make selected files start a chat without adding download actions.

Selection stays local to Files, then the selected paths are passed into a chat pane as context.

src/pages/ImagesPage/index.tsx

Checking the shell spacing against the current desktop layout.

Keeping route and page behavior as wiring while the package-owned logic stays outside the replica.

Matching the dark pane headers, thin borders, compact text scale, and bottom composer treatment.

Leaving this as static site UI so Vercel never imports desktop runtime hooks.

Verifying the message region scrolls independently from the fixed composer surface.

Keeping the tool activity pill available without shifting the pane layout.

Preserving the same workspace/sidebar density as the desktop shell.

Using prepared product-like content instead of a decorative marketing mock.

Reading files+2
Message… (/ commands, @ files)
sitemain
Check the site build after removing app-internal imports.

The marketing site now owns its static replica and builds without pulling desktop hooks into Vercel.

bun run build
[build] Complete!

Checking the shell spacing against the current desktop layout.

Keeping route and page behavior as wiring while the package-owned logic stays outside the replica.

Matching the dark pane headers, thin borders, compact text scale, and bottom composer treatment.

Leaving this as static site UI so Vercel never imports desktop runtime hooks.

Verifying the message region scrolls independently from the fixed composer surface.

Keeping the tool activity pill available without shifting the pane layout.

Preserving the same workspace/sidebar density as the desktop shell.

Using prepared product-like content instead of a decorative marketing mock.

Message… (/ commands, @ files)