Where each part of the code lives and what each file does.
Start at the Interface map, then open the file below that lists the path you need; each lists one area's files in docs/code-layout/.
For the server's design, protocols, and HTTP API, see How omp-agents works; for the interface, see Using omp-agents.
- Interface map: a part of the screen, by the name you would call it, and the component and file that draw it.
- Server:
src/. - Page:
web/. - Starter kit and docs:
templates/omp/anddocs/. - Desktop:
desktop/.
Each part of the screen, by the name you would call it, with the component that draws it. Start a UI change here, then read that file's entry under Page.
- Composer, the box you type a prompt in:
InputMessageinweb/components/ui/input-message.tsx, with its text field,PromptEditor, inweb/components/prompt-editor.tsx. A live session mounts it inweb/components/conversation.tsx, and the new-session page inweb/components/new-session.tsx. - Gray strip under the composer, with the directory and the context ring:
ComposerTrayinweb/components/composer.tsx; the ring isContextRinginweb/components/context-ring.tsx. - Rows above the composer: queued prompts in
web/components/composer-queue.tsx, suggested prompts inweb/components/composer-suggestions.tsx, scheduled sends inweb/components/scheduled.tsx, and the open question,UserRequestCardinweb/components/user-request.tsx, drawn byquestion-card.tsx. - Changed files and images above the composer:
ChangesCardinweb/components/changes-card.tsx, mounted byconversation.tsx, and below a past session's transcript bypast-conversation.tsx. Its Files section isChangedFileListinchanged-files-section.tsx; its Images section isMediaStripinmedia-section.tsx, with the selection bar that sends images to a pull request or Linear issue. The sections fold independently, with closed sections kept byuseStoredKeys. A subagent's recorded edits openFileChangesDialoginchanged-files-section.tsx, with Kobra-inspired cards fromweb/components/file-diff.tsx. /and@menus:CompletionPopupinweb/components/completion-popup.tsx, overweb/mentions.ts.- Model and thinking switch:
ModelSlotinweb/components/model-slot.tsx, whose menu isweb/components/model-picker.tsx. - Conversation pane:
web/components/pane.tsx, laid out byPaneGridinweb/components/pane-grid.tsx, with the panes' divider inweb/components/split-resize-handle.tsx. Its header isConversationHeaderinweb/components/conversation-header.tsx, and a past session's view isweb/components/past-conversation.tsx. Which split a plain click brings back, and each split's sizes, live inweb/pane-navigation.ts, whichweb/dashboard-state.tsruns for every pane change. - Desktop link address at the bottom left:
DesktopLinkPreviewinweb/components/desktop-link-preview.tsx, mounted byweb/app.tsx. - Transcript:
web/components/transcript.tsx, with message bubbles fromweb/components/ui/chat-message.tsxand tool calls and thinking asActivityGroup, on shadcn'sTracefromweb/components/ui/trace.tsx. A message's code block isCodeBlockfromweb/components/ui/code-block.tsx, whichweb/components/message-markdown.tsxrenders for each fence. In a session's conversation, amermaidorchartfence isSessionVisualfromweb/components/session-visual.tsxinstead, through theSESSION_AGENT_PRESETandSESSION_PROMPT_PRESETthatMessageRowpasses, and its chart is shadcn'sweb/components/ui/chart.tsx. The turn minimap on its left edge isTranscriptMinimapinweb/components/transcript-minimap.tsx, with its turns fromoutlineinweb/transcript-view.ts. Chat history, the blurred column of the session's prompts over it, isPromptHistoryinweb/components/prompt-history.tsx, opened byPromptHistoryButtonfrom the same file in the live composer'srightSlotinweb/components/conversation.tsx. A tool row's image thumbnails open one viewer that the transcript owns,ImageViewerfromweb/components/media-viewer.tsx, over every tool image of the conversation. - Trajectory, a pane's turn-by-turn view:
Trajectoryinweb/components/trajectory.tsx, which the road-icon toggle after the session's title inweb/components/pane.tsxswaps for the transcript. - Replay from here: the sibling prompt-row action in
web/components/trajectory.tsxopensReplayDialoginweb/components/replay-dialog.tsx;FormDialogprovides its focus, escape, and pending-submit behavior. - Replay comparison: Compare replay in
web/components/pane.tsxopensReplayCompareDialoginweb/components/replay-compare.tsx, with ordered tools, complete final text, request hashes and bodies, tokens, and cost. - Scroll-to-bottom arrow:
MessageScrollerButtoninweb/components/ui/message-scroller.tsx, placed byweb/components/transcript.tsx; button variants live inweb/components/ui/button.tsx. - Left sidebar:
Rosterinweb/components/roster.tsx, wired byweb/components/app-sidebar.tsx, insideDashboardSidebarfromweb/components/sidebar-panel.tsx, which slides it open and shut and draws its toggle over the header's corner; the Sessions tab isweb/components/session-list.tsxand a row isweb/components/session-row.tsx. - Right sidebar, the session details:
SessionDetailsinweb/components/session-details.tsx, insideDashboardSidebarfromweb/components/sidebar-panel.tsx, whichweb/app.tsxmounts; a project's coordinator showsweb/components/project-details.tsxinstead. Its tabs are PRs insession-pull-requests-tab.tsx, Tickets insession-tickets-tab.tsx, and Processes insession-processes-tab.tsx, all inweb/components/. The Images section and the transcript shareImageViewerfromweb/components/media-viewer.tsx, with the image, its caption,N of M, previous and next buttons and arrow keys, open in a new tab, and Close. - Pull request details, with the Summary, Timeline, Code, and Review draft tabs:
PullRequestDetailContentinweb/components/pull-requests/pr-details/index.tsx, with Summary insummary.tsxand Review draft inreview-draft.tsxbeside it. The floating comment and review composer at its bottom right, on the Pull requests page only, isPullRequestComposerinpr-details/composer.tsx.header.tsxdraws T3's crumbs, Check out menu, inline-confirmed primary action, title editor, base freshness warning, copyable command and branch, stack menu, and linked-sessions count; the Check out menu isCheckoutMenuincheckout-menu.tsx. The Reviewers and Labels pickers and collapsible Description, Checks, and Comments sections live in Summary.web/components/segmented-tabs.tsxprovides its T3-styled 24px tabs with Radix keyboard navigation and tab-panel semantics.checks.tsxdraws the checks status line and grouped popover, over the pure summary and grouping inweb/pull-request-checks.ts. Timeline inweb/components/pull-requests/pr-timeline.tsxdraws T3's activity rail, conversation and reply disclosures, review verdicts, lifecycle markers, and commit links, over pure grouping and ordering inweb/pull-request-timeline.ts.code.tsxholds the Code tab's commit scope and which files are folded, and composescode-toolbar.tsx, its toolbar,diff-preferences.ts, the diff options it keeps on this computer,viewed-files.tsx, GitHub's viewed state and the Viewed checkbox,code-files.tsx, the diffs and file tree, anddiff-controls.tsx, the line comment box. A pull request row's Review draft tag isReviewDraftTaginweb/components/pull-requests/pr-row.tsx. The same details show in two places, so reproduce a layout bug in the one the user means: the Pull requests page'spr-page.tsx, and the right sidebar's PRs tab, a much narrower column. The open#Nstrip above the page's details isPullRequestTabsStripinweb/components/pull-requests/pr-tabs.tsx, backed byweb/pull-request-tabs.ts; the sidebar's PRs tab has none. - Bottom bar, with plan quota, the Terminal button, and CPU, memory, and disk:
StatusBarinweb/components/status-bar.tsx; the terminal panel isweb/components/terminal/terminal-panel.tsx. - The three things called Files:
- The changes card's Files section, a session's changed files:
ChangedFileListinweb/components/changed-files-section.tsx. - The session changes dialog that a file or Review opens:
web/components/changes/session-changes-dialog.tsx, with its explorer inchanges-explorer.tsxand tree infile-tree.tsxbeside it. - Settings › Files, omp's own config files:
Filesinweb/components/settings/files-tab.tsx.
- The changes card's Files section, a session's changed files:
- A file opened from a path in agent text:
web/components/file-dialog.tsx. - Ask about this, the button on selected text and the discussion panel at the top right: the button is
AskAboutSelectioninweb/components/ask-about-selection.tsx, which wraps the transcript inconversation.tsxandpast-conversation.tsxand the explorer inweb/components/pull-requests/pr-details/code.tsx; the panel isDiscussionPanelinweb/components/discussion-panel.tsx, whichweb/app.tsxmounts, overweb/discussions.ts. - Command palette (Cmd+K):
web/components/command-palette/, overweb/command-palette.ts. - Keyboard shortcuts: the table in
web/shortcuts.ts, the page-wide handlers inweb/use-page-shortcuts.ts, and the reference dialog inweb/components/shortcuts-dialog.tsx. - Notification bell:
NoticesBellinweb/components/notices.tsx; toasts come fromweb/components/toaster.tsx. - System notifications of sessions that ask or finish, and the desktop app's Dock badge:
useAttentioninweb/use-attention.ts, shown bydesktop/attention.tsin the desktop app; their switch isSessionNotificationsinweb/components/settings/preferences-tab.tsx. - Pages, each routed by
web/routing.ts:- New session:
web/components/new-session.tsx, also used for todo drafts and scheduled starts, with the board above its composer,NewSessionBoardinnew-session-board.tsx, which lists whatweb/new-session-board-model.tspicks. - Pull requests:
web/components/pull-requests/pull-requests-page.tsx, with the Rebase N behind button at its top, its board viewPullRequestsKanbaninpull-requests-kanban.tsxwith each cardPullRequestCardinpr-row.tsx, and one pull request inpr-page.tsxbeside it. - Tickets:
web/components/tickets/tickets-page.tsx. - Todo:
web/components/todo/page.tsx. - Notes:
web/components/notes/page.tsx, with its sidebar lists inweb/components/notes/nav.tsx. - Calendar:
web/components/calendar/calendar-page.tsx. - Inbox:
web/components/inbox/inbox-page.tsx. - Routines:
web/components/routines/routines-page.tsx. - Projects:
web/components/projects/projects-page.tsx; a project's Project and User notes trees areProjectNotesListinproject-parts.tsxbeside it, overnoteRowsinweb/notes-model.ts. - Settings:
web/components/settings/settings-page.tsx, one*-tab.tsxper section listed inSETTINGS_SECTIONSinweb/routing.ts. Settings › Analytics' context-source table:ContextSourcesinweb/components/settings/context-sources.tsx. Settings › Integrations' Google account lines, with Add account, Remove, and the workspace picker:GoogleAccountsRowinweb/components/integrations/google-accounts.tsx. Settings › Worktrees, with its Merged marks and Remove merged:WorktreesTabinweb/components/settings/worktrees-tab.tsx. Settings › Sync, with its remote, Sync button, last outcome, conflict choices, and item switches:SyncTabinweb/components/settings/sync-tab.tsx.
- New session:
- List on the left with the open item on the right, split by a line you drag:
ListSplitinweb/components/list-split.tsx, overweb/components/drag-separator.tsx. - Shared primitives (buttons, menus, dialogs, tooltips):
web/components/ui/, from the Fluid registry and some from shadcn's, with the shadcn utilities they need inweb/shadcn.css; change them only asweb/components/ui/PATCHES.mddescribes. - Colors, the font, text sizes, and the
surface-glassutility: the tokens inweb/globals.css, which are T3 Code's light and dark values for every token the two apps share, with the system font stack and T3'stext-2xs(11px) andtext-3xs(10px); the--surface-*,--shadow-*,--hover,--active,--selected,--tint, and--focus-ringtokens stay Fluid's, since T3 has none of them.
The server lives in src/; its files, listed by area:
- Entry point, routes, sockets, and session registry
- Shared types, omp facades, analytics, and subprocesses
- Sessions and transcripts
- Git, worktrees, pull requests, merges, and sync
- Linear, Google, todos, shared lists, and inboxes
- Routines, scheduled sends, projects, usage, settings, and tests
The page lives in web/.
src/server/page.ts bundles web/index.html and web/main.tsx with Bun.build, and bun-plugin-tailwind compiles Tailwind v4.
Its files, listed by area: