# The apps (https://docs.vitrinka.ai/start/apps)



## Desktop [#desktop]

The full web app in a native macOS window — the top bar and every module, boards with their chat and annotation islands — with nothing bundled locally, so it is always the version your deployment serves. It runs on macOS only — download it from [vitrinka.ai/download](https://vitrinka.ai/download) (signed and notarized; [vitrinka.ai/download/desktop/latest](https://vitrinka.ai/download/desktop/latest) is the stable link to the current build) — and adds what a browser tab cannot:

* **`vitrinka://` deep links** — a link like `vitrinka://w/acme/boards/x` opens or focuses the app on that board; `vitrinka board open` and `vitrinka board edit` use them.
* **⌥⇧Space** — summons the app from anywhere, or hides it again when it is in front.
* **An instant editor** — a file tree, PR-style diffs and Monaco tabs, opened by `vitrinka board edit`, Finder's **Open With**, or a card's open-in-editor.
* **A menu-bar tray** — the boards an agent is working on right now (live listener leases on this Mac), with open-work and open-question counts, and a few recent boards.
* **Sign-in in-app** — first-party, once; passkeys stay browser-only, so use your password here. GitHub and SSO sign-in open in your default browser, and that session stays there.

## Snap and the diary [#snap]

Each day has one personal board. Snap is the macOS menu-bar helper that gets moments onto it without leaving whatever you are doing. Download it from [vitrinka.ai/download](https://vitrinka.ai/download) (the stable link is [vitrinka.ai/download/snap/latest](https://vitrinka.ai/download/snap/latest)):

* **Area and screen snaps** — capture with `⌥⇧4` / `⌥⇧3`, or assign the native screenshot shortcuts. The images arrive on today's board.
* **Clipboard, drops and notes** — `⌥⇧C` snaps the clipboard (an image becomes media, a list becomes a checklist), files and links can be dropped onto the ✦, and the toast after a snap takes a one-line note.
* **Voice notes** — hold `⌥⇧M` and talk. The note is transcribed on your Mac and staged for you to correct before it is sent.
* **Meetings** — record the mic and the call's audio from the HUB or the ✦ menu. Captions run on the Mac, or the server transcribes when your organization has server transcription on. A meeting lands on today's board and can be promoted to a task carrying its audio, transcript and notes — [meetings](/use/day#meetings).
* **Send to Vitrinka** — the macOS Services menu sends selected text, files or images the same way as a drop.
* **Outbox** — captures are written to disk before upload. Pending items wait for a connection, and the server deduplicates repeated upload attempts.
* **The HUB** (`⌥⇧V`) — today's diary state, the Outbox, and the capture actions.
* **The recorder's keys stay free** — `⌥⇧A`, `⌥⇧N`, `⌥⇧P` and `⌥⇧S` belong to the [browser recorder](#extension), so Snap never binds them.

The server keeps the day board arranged and rolls days up into weekly, monthly and yearly views.

## The browser extension [#extension]

The journey recorder for Chromium browsers: screenshots, clicks, API calls with full bodies, console errors, an rrweb DOM stream and quick notes, projected live onto a journey board. It is installed and kept current by the CLI:

```bash
vitrinka setup extension setup     # unpack the release and register the update host
vitrinka setup extension update    # swap to the newest release; the extension reloads itself
vitrinka doctor                # report every link in the update chain
```

`vitrinka setup` offers the same setup. Recording, redaction and what a session becomes: [the browser recorder](/qa/extension).

## The in-app web recorder [#web]

`@vitrinka/web` mounts the same journey recorder inside a React web app, with no extension, so testers on phones and desktops record from a dev or preview build. The server refuses it on a production domain unless that domain's rule opts in. Wiring it in: [the web recorder](/qa/recorder/web).

## The Expo recorder [#expo]

`@vitrinka/expo` records journeys inside an Expo / React Native app — the same session shape the browser extension produces, so the boards, the digest and the fixing loop are identical. Wiring it in: [the Expo recorder](/qa/recorder/expo).

## The bug-report widget [#widget]

A report button inside your own app, served by your deployment as one script tag: the person reporting sends a masked screenshot, the console tail and failed requests without ever seeing vitrinka, and the report waits in quarantine until an admin approves it — [the bug-report widget](/qa/report-widget).

<Callout type="warn">
  Captured data is sent to the server you configure. The desktop uses its sign-in session, and Snap shares the CLI's sign-in. A recorder is linked by approving a code in your browser (**Link a device** in the account menu, or **Link this browser** in the extension) and receives a recorder token that can create sessions and append to the ones it started itself, and reads back nothing but their status — never a session another credential started. Unattended builds use a recorder key an admin mints for one project; the extension also accepts a personal token for someone who records into several workspaces. Installation and updates use their configured release services.
</Callout>
