anarlog Documentation

Open source Granola AI Alternative

9,521 stars Rust Rust 1 file · ~51,752 tokens #local-first#notetaking#open-source#react#rust#tauri#typescript
RAW Doc

Technical Documentation: fastrepl/anarlog

ℹ️ Provenance: Multi-Tier Ingestion · CodeWiki Reference

Overview (README.md)

Note: The team is now building char. The anarlog community application remains open-source, MIT-licensed, and maintained as the local-first meeting notetaker in this repo. Source-visible enterprise components are commercially licensed.

anarlog is an open-source alternative to Granola. It takes notes in your meetings without sending a bot to join the call: it listens to your device audio, can transcribe on your machine, and keeps app data in a local SQLite database.

It is built for people who want AI meeting notes without handing their conversations to someone else's cloud, and for anyone who needs to get a notetaker past a security review with a straight face.

Why anarlog

  • No bot joins your call. anarlog captures audio directly on your device. Nothing appears in the participant list, and nothing records from inside the meeting.
  • Local when you choose it. On supported Macs, available built-in transcription models run on-device. Local Intelligence providers keep summaries and chat on your computer too.
  • Your data, in a format you can read. Sessions, notes, and transcripts live in local SQLite. Recordings and attachments are plain local files. Export Markdown whenever it fits your workflow.
  • Bring your own AI. Use a supported hosted provider, your own API key, or an OpenAI-compatible local server such as Ollama, LM Studio, or Unsloth.
  • Readable source, MIT. The community application is MIT-licensed. Fork it, audit it, sell it, or build it yourself.
  • Cloud is opt-in, not required. Hosted AI, encrypted CloudSync, and sharing exist when you want them. Nothing depends on them.
  • A front door for your org. Source-visible enterprise components and commercial deployment options give security and IT teams a real path to yes.

What runs where

Part of the workflow Where it happens
Audio capture and recording Your device
Transcription Your device with an on-device model, or the provider you select
Notes and transcript storage Local SQLite plus local files
AI summaries and chat Your choice: local model, your own API key, or optional hosted AI
Sync and sharing Off by default, opt-in encrypted CloudSync

How AI works

anarlog keeps audio transcription separate from the language model used for summaries and chat. You can change either one without changing the other.

Stage App setting Anarlog Cloud Local or bring your own
Audio → transcript Transcription Managed Pro (Cloud) prefers Soniox 5 for live and batch transcription, with eligible fallbacks based on language and mode. Soniqo or Apple Speech when available, or your selected transcription provider and model
Transcript + memo → summary, title, or chat Intelligence Managed Auto (also shown as Pro (Cloud)) currently uses the latest Claude Sonnet alias through OpenRouter. Your selected API, subscription, OpenAI-compatible server, or eligible Apple Intelligence

The active provider and model are always visible under Settings → Transcription and Settings → Intelligence. Read Models and providers for the current routes, local model list, and privacy boundaries.

Get started

  1. Download Anarlog for macOS, Windows, or Linux.
  2. Open it and join a meeting. anarlog records on your device and transcribes with the model you selected.
  3. Generate a note, edit it like a document, and export Markdown when you need it.
  4. Optional: connect an LLM provider or a local model in settings for summaries and chat.

Product docs live at docs.anarlog.so. To build the desktop app or website from source, follow Local development.

Repository map

Path What lives there
apps/desktop Tauri v2 desktop app: React and TypeScript UI, Rust backend
apps/web anarlog.so website, account portal, and shared-note pages; not the desktop notepad
apps/api Optional hosted services for AI, sync, sharing, and integrations
apps/cli Local CLI and MCP server
apps/mobile iOS and Android client, available as a beta through TestFlight and Google Play
apps/stripe Billing integration
apps/watch/apple watchOS companion source built with the mobile app
plugins/* Tauri capabilities such as local STT, database access, calendar, export, and notifications
crates/* Rust libraries for audio capture, transcription, diarization, storage, and services
packages/* Shared TypeScript packages for the editor, database, UI, and plugin SDK
supabase/ Hosted authentication, sharing, sync, billing, and Cloud API data
skills/anarlog Published agent skill for the CLI and MCP server
enterprise/ Source-visible enterprise components, commercially licensed

Local development

The local-first desktop app and website start without secrets. Hosted AI, CloudSync, authentication, billing, and connected integrations need their optional local services and configuration.

You need Node.js 22 or later, pnpm 11.1.1, Rust 1.94.0, process-compose 1.122.0 or later (brew install process-compose on macOS), and the Tauri v2 system dependencies. Apple Silicon Macs also need Xcode with its Metal Toolchain component to compile the MLX shader library (Xcode 26 and later: DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer xcodebuild -downloadComponent MetalToolchain); the Command Line Tools alone are not enough. On Debian or Ubuntu, the repository can install the required toolchains and system packages:

bash
bash scripts/setup-linux.sh

Install the workspace and start the app you want to work on:

bash
pnpm install --frozen-lockfile
pnpm dev:desktop
# or
pnpm dev:web

Process Compose builds shared UI first, manages the app processes, and saves logs under .process-compose/. Use pnpm dev for the combined desktop, web, API, and local Supabase stack after configuring the optional backend.

Read CONTRIBUTING.md for backend setup, process controls, validation commands, code ownership, and the contribution workflow. Ask DeepWiki for a code-indexed explanation of a subsystem.

Name history

anarlog started as Hyprnote, then briefly used the char name.

We later split the work into two projects. char is the team's current productivity app. anarlog is this open-source, local-first meeting notetaker.

This repository is not the current char codebase, and anarlog is not being retired. Its community application stays MIT-licensed, forkable, buildable from source, and built for local notes you control.

If you came here from Granola, welcome. If you came here from Hyprnote, welcome back.

Either way, it's yours.

Contributing

Issues, pull requests, bug reports, and docs fixes are all welcome.

Contributions outside enterprise/ are distributed under the MIT license.

License

Maintained by fastrepl.

Contributors


README (`docs/README.md`)

Anarlog documentation

This Mintlify project is published at docs.anarlog.so.

Deployment

Configure the Mintlify project with docs/ as its documentation directory and docs.anarlog.so as its custom domain. In Mintlify's domain setup:

  1. Add the verification records shown in the dashboard.
  2. Wait for both records and TLS provisioning to verify.
  3. Point the docs CNAME to the target shown by Mintlify.

The website redirects the previous anarlog.so/docs/* routes to the matching path on the custom domain.

Local preview

Install the Mintlify CLI, then run it from this directory:

bash
npm install mint
cd docs
mint dev

Update docs.json whenever a page is added, moved, or removed. Keep CLI and MCP reference content aligned with apps/cli/src/cli.rs and apps/cli/src/mcp.rs. Mintlify publishes the custom agent skill from skill.md; keep it aligned with ../skills/anarlog/.

Before deploying, run:

bash
mint validate
mint broken-links --check-anchors --check-redirects

Index (`docs/index.mdx`)


title: "Anarlog"

Anarlog records your microphone and computer audio without joining the call as a bot. Each meeting stays together as an editable memo, transcript, and summary.

Use the private demo in Anarlog, then record a real meeting. Choose the right build for macOS, Windows, or Linux. Start from your calendar or from a new note. Work with your memo, summary, transcript, and exports. Use Anarlog Cloud, your own provider, or local models. See the Settings language list and which models cover it. See on-device, Anarlog Cloud, and bring-your-own-key pricing. Use Soniqo, Apple Speech, a whisper.cpp `.bin`, or a Deepgram-compatible local server. Use Soniqo Parakeet Batch on Apple Silicon, or a hosted after-recording model. See the current cloud routes, on-device models, and bring-your-own-provider behavior. Record, transcribe, summarize, and chat with local models. See what stays local and what hosted features receive. Create a meeting note from audio, SRT, or VTT files. Use templates, instructions, languages, and your dictionary. Invite people, send a recap, or share a view-only link. Bring supported exports from another meeting assistant.

Browse all common questions →

The short version

  1. Open a calendar event or create a note.
  2. Click Join & record or Record.
  3. Take rough notes in Memos while Anarlog listens.
  4. Stop listening, then review Summary and Transcript.

Your app data is stored locally by default. Hosted AI, sync, sharing, connected calendars, and the optional Cloud API send the content needed for the feature you choose. See Data, privacy, and retention for the exact boundaries.

New to Anarlog? Open the **Welcome to Anarlog** note and click **Join & record**. It uses a private, prerecorded demo meeting.

Quickstart (`docs/quickstart.mdx`)


title: "Your first meeting"

[Download Anarlog](https://anarlog.so/download), open it, and follow the setup screen. See [Install the desktop app](/desktop-installation) to choose the right macOS, Windows, or Linux build. Allow **Microphone** so Anarlog can hear you. Allow **System Audio** so it can hear everyone else on the call. Sign in if you want Anarlog Cloud, sync, or connected calendars. Choose where Anarlog stores its local data. Open **Welcome to Anarlog** and click **Join & record**. Anarlog opens a prerecorded meeting and treats it like a real call. When the video ends, return to Anarlog and stop listening. Open **Memos**, **Summary**, and **Transcript** to see what Anarlog captured.

Find your way around

  • The sidebar keeps upcoming meetings and recent notes within reach.
  • The center of the app shows the open memo, summary, or transcript.
  • Chat works with the open meeting and any additional context you add.
  • Settings controls audio, AI providers, storage, sync, imports, integrations, and developer tools.

You can rename a note from its title and keep several notes open in tabs. A meeting note stays useful before, during, and after the call.

Record a real meeting

Open a calendar event or create a note, then click Join & record or Record in the top-right corner. See Record meetings for the full flow.

If Anarlog cannot hear the call, start with audio troubleshooting.


Agents Overview (`docs/agents/overview.mdx`)


title: "Agent overview"

Anarlog gives agents three ways to access meeting context. The Anarlog plugin prefers the local CLI or local MCP when the agent can access your database. Remote agents use Cloud MCP through OAuth. Local CLI and MCP reads are bounded; both can also stage proposals for human review. Hosted Cloud API and remote MCP are read-only.

Transport Choose it when Output
CLI The agent has shell access on your computer Local reads by default; authenticated Cloud reads are optional; JSON with --json
Local MCP The agent supports a local MCP server Structured tool results and contextual resources from your database
Cloud MCP The agent runs remotely or cannot access your local database Hosted snapshots through OAuth; requires personal or paid-Team Pro access and explicit opt-in
  1. Honor an explicit source request. Otherwise, use local MCP or check local CLI readiness with anarlog --json doctor; use Cloud when local access is unavailable.
  2. List recent meetings or search by a short title fragment. If a meeting is missing, check an already-connected alternate source unless the user restricted access.
  3. Use a returned meeting ID. Never infer or invent one.
  4. Fetch the meeting detail before requesting transcript text.
  5. Fetch recurring history only when earlier meetings are relevant.
  6. Read transcript pages only until the task has enough evidence.

Keep each meeting's reads on the source where it was found and label the source in the answer. Report database errors instead of silently falling back to Cloud.

Freshness

Local reads work offline and include unsynced changes. They do not require Cloud Sync to finish. Cloud Sync is encrypted; Cloud API & Connectors uploads a separate readable snapshot after opt-in. Sync completion does not establish snapshot freshness.

Report freshness only when an interface provides it. A meeting's updated_at records a content change, not a completed sync or snapshot upload. If freshness matters and cannot be verified, say it is unknown.

Safety boundary

Agents should use an Anarlog interface, not SQLite. The supported interfaces apply Anarlog's rules for canonical notes, generated summaries, excluded participants, recurring meetings, and transcript text.

Meeting reads stay bounded. An agent cannot apply a note or summary change. It can stage a proposal with CLI proposals commands or the local MCP propose_* tools. A human reviews the unified diff in the desktop app and applies or declines it. Hosted Cloud API and Cloud MCP stay read-only. CLI export can create a separate file; replacing a file requires --force.

Local CLI and MCP access stays on your computer. Cloud access uploads a separate server-readable copy of your meeting data. Review the Cloud API disclosure before enabling it.

Use JSON output and resolve meeting IDs deliberately. Run local stdio or connect a remote agent through OAuth. Enable hosted access and connect with OAuth or a connector key. Receive signed meeting events at your endpoint.

AGENTS (`docs/AGENTS.md`)

Anarlog documentation instructions

Scope

  • This is the Mintlify project published at https://docs.anarlog.so.
  • Write for Anarlog users, developers, and agents using the CLI or MCP server.
  • Configuration lives in docs.json; content pages are MDX.
  • The public agent skill is served from skill.md. Keep its workflow aligned with the packaged skill in ../skills/anarlog/.

Sources of truth

  • Treat apps/cli/src/cli.rs as the CLI command contract.
  • Treat apps/cli/src/mcp.rs as the MCP tool and resource contract.
  • Treat current release automation as the source of truth for installation channels.
  • Do not infer product behavior from the raw SQLite schema.

Writing

  • Use active voice and second person.
  • Keep headings and sentences concise.
  • Put the result before implementation detail.
  • Use Anarlog for the product and anarlog for the executable.
  • Use root-relative links between Mintlify pages. Use https://docs.anarlog.so in external instructions and agent metadata.

Accuracy boundaries

  • Document only commands, options, tools, resources, and output behavior present in the source.
  • Mark planned features and distribution channels as forthcoming.
  • Never describe Homebrew, standalone release binaries, or Windows package-manager installation as available until release automation publishes them.
  • Document desktop-bundled CLI installation only for platforms whose release workflow includes the CLI sidecar and installer UI.
  • Never tell users or agents to read, migrate, or modify the SQLite database directly.
  • Keep transcript examples bounded. CLI and MCP transcript pages default to 200 words and cap at 500 words.

Verification

  • Check docs.json after adding or moving a page.
  • Run pnpm exec dprint fmt 'docs/**/*' 'skills/**/*' from the repository root.
  • Run pnpm exec dprint check 'docs/**/*' 'skills/**/*' before submitting.
  • Run mint validate and mint broken-links --check-anchors --check-redirects from docs/ before deploying.

Ai Setup (`docs/ai-setup.mdx`)


title: "Transcription and AI"

Anarlog uses two model settings:

  • Transcription turns meeting audio into a transcript.
  • Intelligence creates summaries and powers chat.

Open Settings → Transcription or Settings → Intelligence to choose a provider and model.

Models and providers explains the current Anarlog Cloud routes, built-in on-device models, and how bring-your-own-provider requests work.

Choose a setup

Sign in and choose Anarlog for the quickest setup. Hosted models require a paid Anarlog plan. Download Soniqo on a supported Apple Silicon Mac, use Apple Speech when macOS 26 reports it available, or choose **On-device file** to pick a whisper.cpp `.bin`. Configure a provider, enter its API key, then select it under Model being used. API keys stay on this computer and do not sync to other devices. Connect LM Studio, Ollama, or Unsloth, or use Apple Intelligence on an eligible Mac.

Models labeled Live show text during the meeting. Models labeled After recording transcribe after you stop.

To keep transcription, summaries, and chat on your computer, follow Use Anarlog offline. For every on-device transcription path, see How can I use on-device models?. To compare on-device, Cloud, and bring-your-own-key cost, see How can I compare the costs of all the transcription options?.

Subscription providers

You can use an existing paid plan for Intelligence without a separate API key. Open Settings → Intelligence → Configure Providers and connect Claude, ChatGPT, Grok, GitHub Copilot, or Kimi Code. After the connection finishes, select that provider under Model being used.

Mobile summaries

In mobile 0.1.5 and later, open Settings → Summary provider to connect ChatGPT subscription, Claude subscription, Grok subscription, GitHub Copilot subscription, or Kimi Code. Complete the provider's sign-in or enter your Kimi Code membership API key, then choose a summary model.

Connect each device separately. A connection on your desktop does not sign in your phone, and subscription credentials stay in that device's secure storage rather than syncing with notes.

Apple Intelligence

On an eligible Mac running macOS 26 or later:

  1. Turn on Apple Intelligence in System Settings and wait for its model to finish downloading.
  2. In Anarlog, open Settings → Intelligence → Configure Providers → Apple Intelligence.
  3. Select System Language Model under Model being used.
Apple Intelligence support is experimental and currently handles text only.

LM Studio

  1. Install LM Studio and download a model.
  2. Start its local server on port 1234 and enable CORS.
  3. In Anarlog, open Settings → Intelligence → Configure Providers → LM Studio.
  4. Select the LM Studio model under Model being used.

Ollama

  1. Install Ollama.

  2. Start it and pull a model:

    bash
    ollama serve
    ollama pull llama3.2
  3. In Anarlog, open Settings → Intelligence → Configure Providers → Ollama.

  4. Select the Ollama model under Model being used.

Unsloth

  1. Install Unsloth Desktop and load a model.
  2. Start its local server on port 8888 and copy the API key. It starts with sk-unsloth-.
  3. In Anarlog, open Settings → Intelligence → Configure Providers → Unsloth and paste the API key.
  4. Select the Unsloth model under Model being used.

Only models currently loaded in Unsloth appear in the list.

What leaves your computer

Your app data remains local. Local transcription and local Intelligence providers process content on your computer. If you select Anarlog Cloud or another hosted provider, Anarlog sends the audio or text needed for that request to the selected provider.

See Data, privacy, and retention for a feature-by-feature explanation.


Automatic Capture (`docs/automatic-capture.mdx`)


title: "Automate meeting capture"

Anarlog can start an event-backed note at its scheduled time, remind you when another meeting app uses your microphone, and stop listening when the call ends.

Start scheduled meetings automatically

Open Settings → Meetings and enable Start when meeting begins.

When a calendar-backed note reaches its scheduled start time, Anarlog starts listening. This setting does not apply to ordinary notes without a calendar event.

If another meeting is already recording, Anarlog skips the overlapping scheduled start. It does not queue that meeting to start after your current recording ends.

Anarlog discards empty automatic captures while preserving the calendar note and any content recorded on another device.

Enable Join scheduled meetings on the same page to open the meeting link when listening starts. That toggle stays disabled until Start when meeting begins is on.

Keep Anarlog running and make sure microphone and system-audio access are allowed. See Connect a calendar if your events are not visible.

Detect unscheduled calls

Open Settings → Notifications and enable Microphone detection. Anarlog watches for sustained microphone activity and notifies you that a meeting may have started.

Microphone detection is a reminder; it does not start recording by itself. Choose a detection delay from 5 seconds to 2 minutes, and exclude apps that should not trigger a meeting prompt.

Microphone detection is available on macOS and Linux. On macOS, Accessibility permission is required to detect meeting apps and synchronize mute state; manage it under Settings → Permissions. On Linux, enable the meeting toggles under Settings → Meetings and allow assistive-technology access for the desktop session when prompted.

Stop when the call ends

Under Settings → Meetings, enable Stop when meeting ends. Anarlog stops listening when the meeting app releases the microphone.

This control is available on macOS and Linux.

If you switch audio devices or use an app with unusual microphone behavior, automatic stop detection can misfire and end the recording early without warning. Check that the recording is still active before closing the meeting.

Capture meeting chat

On macOS and Linux, Settings → Meetings also includes:

  • Post recording disclosure in meeting chat, which tells participants when listening starts.
  • Capture meeting chat in Memos, which saves visible chat from supported meetings. On macOS this uses Accessibility; on Linux it uses assistive-technology access.

These features are not available on Windows.

Posting a disclosure does not by itself confirm consent. Recording-consent rules depend on where you and the other participants are located; see [Record meetings](/meetings).

Keep controls nearby

Enable Show floating bar under Settings → Meetings to keep compact recording controls visible while Anarlog listens.

Event and microphone notifications can also respect your system's Do Not Disturb mode from Settings → Notifications.


Automations (`docs/automations.mdx`)


title: "Automate meeting follow-up"

Automations run repeatable work when a meeting ends. They are part of Anarlog Pro.

Use a starter

Open Automations and choose a starter from the sidebar:

Starter What it does Configuration
Share a meeting recap in Slack Posts the meeting title and AI summary. Connect Slack and choose a channel.
Update project notes in Notion Appends a dated meeting update to a page. Connect Notion and choose a page.
Turn action items into Linear issues Creates issue drafts from assigned follow-ups. Connect Linear and choose a team.
Export every meeting as Markdown Writes the memo, summary, and transcript to a local file. Choose an export folder.
  1. Select the starter.
  2. Connect the service or choose the local folder it needs.
  3. Review the trigger, source content, and result preview.
  4. Click Save & enable.

An enabled starter runs after a meeting ends and the content it needs is ready. Disable it when you want to keep the setup without running it.

Check whether it ran

The automation detail shows whether it is enabled and the result of its last run. A failed run includes a short error. Check the selected destination and reconnect the service when authorization has expired.

For Markdown exports, confirm that the chosen folder still exists and is writable. The local export does not need Slack, Notion, or Linear access.

Choose Markdown export content

In a Markdown export action, choose any combination of Memo, Summary, Transcript, and Collect action items. Keep at least one section selected.

Leave Filename blank to use the meeting date and title, or enter a pattern such as {date} {title}.md. Include meeting ID adds a short ID suffix to distinguish similarly named meetings. Anarlog refuses to overwrite a file belonging to a different meeting or an unrelated file; choose another name if an export reports a collision.

These options belong to desktop Automations. CLI meetings export still exports a complete meeting and uses the output path you provide; it does not accept these automation settings.

Build a custom workflow

Click + in the Automations sidebar to start a workflow. Add a trigger, then stack actions the way you would in Zapier:

  1. Choose when it should run: after the meeting summary is ready, or after the meeting ends.
  2. Add one or more actions: Slack recap, Notion update, Linear issues, or Markdown export.
  3. Configure each destination.
  4. Click Save & enable.

Enabled custom workflows run automatically, the same way starters do. Chat on the right can still help you refine the workflow; it is not required to make the automation run.

Examples:

  • After the summary is ready, post to Slack and append the same recap to a Notion page.
  • After the meeting ends, export Markdown and create Linear issues from action items.
Automations send meeting content to the destination you configure. Use only workspaces, channels, pages, teams, and folders that should receive that content.

Save summaries to Google Drive

Choose Save meetings to Google Drive under Get started to open the template.
Configure it and choose Save draft or Save & enable. Reopening the template
returns to the same configuration without creating another automation.
Or, in a custom workflow, choose After the meeting summary is ready, then add
Save to Google Drive. Connect your Google account and choose a folder in My
Drive or a shared drive where you can add files. Choose Markdown (.md) or
Google Docs as the file format, then enable the workflow. Existing workflows
continue to use Markdown.

Every note summarized after you enable the workflow is exported to that folder
as one file in the selected format containing its summary, transcript, title, date, and meeting
ID. Notes without a transcript include a message that no transcript is available.
Choose a collection folder that should receive all of these notes; this action
does not filter by Anarlog folder or automatically route projects.

Generating a summary again updates the existing export for that meeting and
folder and format. Changing formats keeps previous exports and uses the new
format on subsequent runs; it does not convert old exports in bulk. Renaming a note updates its exported filename. Anarlog owns the exported
file content, so a later export replaces edits made directly to that file.

The action shows the exported file link or its latest unresolved failure. Use
Retry Google Drive export to retry that delivery without replaying successful
Slack, Notion, or Linear actions. If the destination changes, generate the summary
again to export to the new folder. Changing the format also requires a new
summary run rather than retrying a delivery in the old format.

Google Docs retries search for an existing export before creating a document.
If a creation response is lost and Drive search has not indexed the document yet,
a retry can create a duplicate. There is no separate recovery queue or guarantee
of exactly-once creation.

Anarlog must be open to run the workflow. This action does not backfill older
notes or queue deliveries while the app is closed. It uses the same plan access
as other connected automation actions and sends the exported content through
Anarlog's integration API to Google Drive; CloudSync is not required.


Calendar (`docs/calendar.mdx`)


title: "Connect a calendar"

Open Calendar in the sidebar, add an account, and enable the calendars you want Anarlog to show. Connected events appear in the calendar and timeline.

Anarlog uses calendar events for titles, times, participants, reminders, and meeting links. It does not add a bot to your calls.

Google and Outlook connections are read-only. Anarlog reads calendar and event details to show upcoming events and associate them with your notes. It does not create, edit, or delete events in Google Calendar or Outlook.

Apple Calendar

Apple Calendar is available on macOS.

  1. Choose Apple Calendar.
  2. Allow Calendar access when macOS asks.
  3. Enable the calendars you want to see.

If access was denied, open Settings → Permissions in Anarlog. Use Open beside Calendar to change the macOS permission.

Google Calendar

  1. Sign in to Anarlog.
  2. Choose Google Calendar, then finish authorization in your browser.
  3. Return to Anarlog and enable the calendars you want to sync.

Outlook Calendar

  1. Sign in to Anarlog.
  2. Choose Outlook Calendar, then finish authorization in your browser.
  3. Return to Anarlog and enable the calendars you want to sync.

Use calendar reminders

In Anarlog 1.4.29, a reminder for an event with a meeting link offers Join & record. This opens the meeting and starts listening. Use the arrow beside that action and choose Open meeting to join without starting a recording.

For an event without a meeting link, the reminder offers Start recording. Keep Anarlog running and allow microphone and system-audio access before recording.

File meeting notes into folders

In Anarlog 1.4.29, open a calendar event and choose Add to folder to file its note. After filing a recurring meeting, choose Auto-add to put future meeting notes in the same folder. Open the event's folder menu to choose Change auto-add folder or Stop auto-add. Moving one meeting's note does not change the rule for future meetings. These folder rules stay on the device where you set them.

Manage or delete connected calendar data

To control which calendars appear in Anarlog, open Calendar, expand the provider, and turn individual calendars on or off.

To disconnect Apple Calendar:

  1. Open Calendar.
  2. Hover over or right-click Apple Calendar.
  3. Open ••• and choose Disconnect.

This resets Anarlog's macOS Calendar access and removes Apple Calendar events from active views. Your notes remain.

To disconnect Google Calendar or Outlook Calendar:

  1. Open Calendar and expand Google or Outlook.
  2. Hover over or right-click the connected account heading.
  3. Open ••• and choose Disconnect.

Disconnecting stops future access and syncs. After Anarlog refreshes, the account's cached calendars and events disappear from active calendar views. Your notes and memos remain, including event context already associated with a note. The OAuth connection becomes inaccessible immediately and its stored credentials are scheduled for permanent deletion within 31 days.

You can also revoke Anarlog's access from your Google Account connections, the Microsoft My Apps portal for a work or school account, or Microsoft account app access for a personal account.

To permanently remove calendar-derived data retained on a Mac, you currently need to remove all local Anarlog app data from that Mac:

This deletes Anarlog's entire local database on that Mac, not just calendar data — including notes, memos, summaries, and settings that have not been exported, synced, or shared elsewhere. Export anything you want to keep first, and contact us before deleting anything if you need help identifying the correct folder.
  1. Export anything you want to keep, then quit Anarlog.
  2. In Finder, choose Go → Go to Folder.
  3. Move any of these folders that exist to Trash:
    • ~/Library/Application Support/anarlog
    • ~/Library/Application Support/hyprnote
    • ~/Library/Application Support/com.hyprnote.stable
  4. Empty Trash before reopening Anarlog.

This removes Anarlog's local database and settings on that Mac, including cached calendar data and event context stored with local records. It can also remove other Anarlog data stored in those folders. It does not delete files you exported or copies you chose to sync or share. You can request deletion of your Anarlog account and cloud-stored data at [email protected].

Google and Outlook connections are included with Anarlog Pro. Apple Calendar uses the calendar accounts already connected to your Mac.

If events are missing, refresh the calendar list, confirm the calendar is enabled, and reconnect any account marked Reconnect required.


Chat (`docs/chat.mdx`)


title: "Chat with your meetings"

Anarlog Chat can answer questions about the open meeting, search your other meetings, and help turn a conversation into follow-up work. Chat uses the Intelligence model selected under Settings → Intelligence.

Ask about the open meeting

  1. Open a meeting note.
  2. Open Chat.
  3. Ask a question or choose a suggested prompt. The open meeting is added automatically when its content is available.

Useful requests include:

  • “What are my action items from this meeting?”
  • “Draft a follow-up email to the participants.”
  • “What decisions did we make?”
  • “Compare this meeting with the previous project review.”
  • “Find meetings where we discussed the launch date.”

Chat can search meeting titles and content, recurring meeting history, contacts, and connected calendar events when the request needs them.

While a meeting is recording, suggested prompts can recap the last five minutes, suggest what to ask next, or list action items so far. After generating a summary, choose Make shorter or Make longer to adjust it.

Reasoning and tool steps appear in a single Activity row. Expand it to inspect the steps; a spinner shows when work is still running. Answers and proposed edits remain visible below it.

Organize meetings

Ask Chat to list folders, create a folder, or move meetings into an existing folder. For example: “Move my launch review meetings into Projects/Launch.” Folder moves change where meetings appear; they do not merge or rewrite their contents. Chat reports meetings it moved, left unchanged, or could not move.

Folder management is available in desktop Chat. Local CLI/MCP writes remain limited to reviewed note proposals, and hosted MCP remains read-only.

Conversation dates appear above the messages. Hover over a message to see its time.

Guide the context

Chat uses the open meeting automatically and can add other meetings, people, and records when your request needs them. You can also drag another meeting into Chat to include it in your next message.

The app does not show this context as removable chips. Name the meeting or person in your request when similarly named records could be confused, or say “Use only this meeting” to keep the answer scoped. Start a new chat when you want a clean conversation without the earlier message history.

Review proposed changes

Chat can propose a summary edit or transcript correction. Review the proposed change before you apply it. A proposal does not silently replace your note.

For direct transcript editing, speaker reassignment, and re-transcription, see Notes, summaries, and transcripts.

Chat sends the prompt and required context to your selected Intelligence provider. A local provider keeps that model request on your computer. A hosted provider receives the text needed to answer.

Chat can also search the public web when a request needs current external information. The search query leaves your device even if your Transcription and Intelligence models are local. See [Data, privacy, and retention](/data-and-privacy) before using sensitive context with hosted models or web search.

Contacts (`docs/contacts.mdx`)


title: "Contacts and CRM"

Anarlog keeps people and organizations together with your meeting notes. You can connect a CRM to look up a contact when you need more detail.

Connect a CRM

  1. Sign in to Anarlog and open Settings → CRM.
  2. Choose Connect beside HubSpot, Attio, or Pipedrive, then finish authorization in your browser.
  3. Return to Anarlog. Use Test beside the connected CRM to check that contact lookup works. If the connection needs attention, choose Reconnect.

Connections are managed through your Anarlog account. You can disconnect one from Settings → CRM.

Close connections are not yet available. Salesforce connections currently require an installed Anarlog client app; customer installation support is still being prepared.

Fill in a contact

Open a contact and choose Enrich in the toolbar. Anarlog looks for a matching record in your connected CRMs and reports which one it found. It fills only empty name, email, company, job title, phone, and LinkedIn fields; details you already entered stay as they are.

If no CRM is connected, Enrich stays unavailable until you connect one in Settings › CRM. If no match is found, check the contact's name or email and try again.

Multiple email addresses

A contact can hold several email addresses. Open the contact and choose Add email under the Email field to add another address; each additional address can be edited or removed individually. The first email stays the primary address shown and copied elsewhere.

Anarlog matches contacts by all of their email addresses — calendar attendees, session participants, and contact search all recognize every address on the contact. Merging duplicate contacts keeps both contacts' emails: the duplicate's address is preserved as an additional email.


Customize Summaries (`docs/customize-summaries.mdx`)


title: "Customize meeting summaries"

Use a named template when you want fixed sections. Customize Auto when you want to control Anarlog's default summary prompt.

Choose a template

Open a meeting and use the template picker beside Summary. Templates can emphasize decisions, action items, a one-on-one format, or another structure.

Changing the selected template does not rewrite an existing summary automatically. Regenerate the summary to apply the new template.

Customize Auto

  1. Open Settings → Templates.
  2. Select Auto.
  3. Edit Summary format, then click Save.

For example:

text
Start with decisions. Then list action items with an owner and due date. Keep background context to three bullets.

The editor controls the requested format. You can request paragraphs, bullets, or a mixture, including an executive overview. Summaries include detailed coverage by default. After generating a summary, use Make shorter or Make longer in Chat to adjust its length.

Meeting notes, transcript, session details, and participants are always sent separately. Editing the format cannot remove that source material.

The Auto prompt applies only when Auto is selected. Named templates continue to use their configured sections and do not inherit the Auto customization. Use Reset to default format to restore the built-in prompt.

Improve names and specialized terms

Under Settings → Dictionary, add names, acronyms, product names, and other terms that transcription often gets wrong.

The dictionary helps recognition, but it does not replace choosing the correct spoken languages or a model that supports them. See Languages for multilingual meetings.

Apply your changes

New summaries use the currently selected format. Regenerate an older summary when you want it to use the latest template or Auto prompt.


Data And Privacy (`docs/data-and-privacy.mdx`)


title: "Data, privacy, and retention"

Anarlog stores its app data on your computer and captures meetings without adding a bot to the call. Data leaves your computer only when you use a connected or hosted feature that needs it.

Security, legal, and procurement teams should use the security page for encryption, processors, retention, and the evaluation packet. A hosted trust center comes later, when certification programs start.

What stays on your computer

Your notes, local transcripts, settings, recordings you choose to keep, and downloaded local models are stored locally. You can write notes, record audio, and use configured local models without sending meeting content to Anarlog Cloud.

Cloud Sync can copy encrypted notes to your other signed-in devices. Transcription and Intelligence API keys, model selections, calendar connections, and most other settings stay on the computer where you set them.

Do not edit the app database directly — this can corrupt your notes. Use Anarlog's export tools when you need a portable copy.

When content is sent elsewhere

The destination depends on the feature you choose:

  • A hosted Transcription provider receives the audio needed to create a transcript.
  • A hosted Intelligence provider receives the text and instructions needed to create a summary or chat response.
  • Connected calendars send the calendar and event details needed to show upcoming events and associate them with your notes.
  • Cloud Sync sends end-to-end encrypted notes to keep your devices up to date. Anarlog cannot read the recovery key. API keys and most settings stay on each device.
  • Sharing uploads the generated summary and any audio you explicitly include. Your private memo is not part of the shared note.
  • Chat sends the prompt and required context to your selected Intelligence provider. Public web search also sends the search query to the search service.
  • Cloud API & Connectors, when you explicitly enable it, uploads a separate server-readable copy of meeting titles, notes, summaries, participants, action items, and transcripts so remote agents can work while your desktop is offline. Turning it off deletes those copies.

Anarlog Cloud, your own API-key providers, and local providers are separate choices. Review the provider's own retention and training policies before sending sensitive content.

See Models and providers for the current Anarlog Cloud routes and how direct provider requests work.

Keep a meeting fully local

  1. Select an on-device model under Settings → Transcription.
  2. Select LM Studio, Ollama, Unsloth, or eligible Apple Intelligence under Settings → Intelligence.
  3. Avoid cloud sync, share links, Cloud API & Connectors, and hosted providers for that content.

See Use Anarlog offline for the full setup.

Choose how long audio is kept

Open Settings → Meetings and find Audio file retention under Audio. Choose:

  • Don't save
  • 1 day
  • 3 days
  • 1 week
  • 1 month
  • Forever
Once the retention period passes, the audio is gone for good — the meeting note and transcript remain, but the recording does not. If you need the recording later, right-click the meeting in the sidebar, choose **Show in Finder**, and copy the audio before its retention period ends.

Anarlog uses bounded temporary audio while recording to recover gaps caused by interrupted transcription. Temporary audio is removed after recovery or cleanup; Don't save removes recording audio when capture stops. If cleanup fails, Anarlog reports the failure and retries instead of claiming the audio was deleted. Once audio is gone, an incomplete transcript cannot be repaired from that audio.

Turn off usage analytics

Open Settings → Privacy and disable Share usage data (PostHog). This controls product analytics and desktop session replay, not the meeting content sent to a provider you selected.

Disable Error on the same page to stop sending sanitized crash and error reports.

Recording-consent rules depend on where you and the other participants are located. Make sure you have permission before recording.

Desktop Installation (`docs/desktop-installation.mdx`)


title: "Install the desktop app"

Download Anarlog to get the latest stable desktop release. The download page offers every supported platform from the same release.

Choose the right build

Platform Build Notes
macOS Apple Silicon DMG For Macs with an M-series chip. Requires macOS 15 or later.
macOS Intel DMG For Intel-based Macs. Requires macOS 15 or later.
Windows Windows x64 EXE For 64-bit Windows PCs. Windows support is in beta.
Windows Microsoft Store For Windows 10 and 11. Windows support is in beta.
Linux x64 or ARM64 AppImage Portable build. Linux support is in beta.
Linux x64 or ARM64 DEB For Debian, Ubuntu, and compatible distributions. Linux support is in beta.
Linux Arch Linux PKGBUILD For x64 or ARM64 Arch-based distributions. Linux support is in beta.

On a Mac, open Apple menu → About This Mac if you do not know whether it uses an Apple or Intel chip.

macOS

  1. Download the DMG that matches your Mac.
  2. Open the DMG and move Anarlog to Applications.
  3. Open Anarlog and follow the setup screen.
  4. Allow microphone, system audio, and calendar access when you want to use those features.

Windows

  1. Download the Windows x64 installer or get Anarlog from Microsoft Store.
  2. For the direct download, run the EXE and follow the installer. Microsoft Store handles installation and updates automatically.
  3. Open Anarlog and complete setup.
  4. Allow microphone and system-audio access when prompted.

Linux

APT repository

On Debian, Ubuntu, or a compatible distribution, add Anarlog's signed repository to get updates through APT:

bash
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://anarlog.so/apt/anarlog-archive-keyring.asc \
  | sudo tee /etc/apt/keyrings/anarlog.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/anarlog.asc

sudo tee /etc/apt/sources.list.d/anarlog.sources > /dev/null <<'EOF'
Types: deb
URIs: https://anarlog.so/apt
Suites: stable
Components: main
Signed-By: /etc/apt/keyrings/anarlog.asc
EOF

sudo apt update
sudo apt install anarlog

APT verifies the repository metadata with the dedicated Anarlog archive key. New stable releases become available through the normal apt upgrade flow.

Downloaded DEB

To install a downloaded package directly:

bash
sudo apt install ./anarlog-*.deb

AppImage

For an AppImage, make it executable and open it:

bash
chmod +x ./anarlog-*.AppImage
./anarlog-*.AppImage

On Wayland with an NVIDIA GPU, if the window is black or only audio plays, launch with:

bash
WEBKIT_DISABLE_DMABUF_RENDERER=1 ./anarlog-*.AppImage

If the window is still black, also disable compositing:

bash
WEBKIT_DISABLE_DMABUF_RENDERER=1 WEBKIT_DISABLE_COMPOSITING_MODE=1 ./anarlog-*.AppImage

Current builds apply the DMA-BUF workaround automatically. Set the variables yourself only if a black window remains.

Arch Linux

Build the maintained anarlog-bin package with makepkg:

bash
git clone https://github.com/fastrepl/anarlog.git
cd anarlog/packaging/aur/anarlog-bin
makepkg -si

The PKGBUILD downloads the stable DEB for your architecture, verifies its checksum, and installs it through pacman.

Platform differences

  • Apple Calendar integration is available on macOS. Google Calendar works through your Anarlog account on every supported platform.
  • Soniqo, Apple Speech, and On-device file transcription require Apple Silicon. Apple Speech also appears only when a compatible Mac running macOS 26 reports the required system assets. On other systems, choose Anarlog Cloud or configure a supported transcription provider. See how to use on-device models and local models for hour-long calls.
  • Windows and Linux support are in beta. Include your operating system and Anarlog version when you report a platform-specific problem.
  • Mobile beta testing is available through TestFlight on iOS and Google Play beta on Android.

When installation is complete, continue to Your first meeting. If the app does not open or cannot capture audio, see Troubleshooting.

Nightly

Anarlog Nightly is no longer published and does not receive updates. Install
the stable app and quit Nightly before opening
it: both apps use the same local notes database, and Anarlog does not open while
the other app is running. Sign-in and app settings stay separate per app.

If stable shows an update prompt instead of opening your notes, Nightly already
updated the database format. Keep using Nightly until a stable release includes
that change. Your data is not modified by the older app.

Use matching stable versions on all devices connected to cloud sync. Older builds may not read records written by a newer Nightly. Do not reset your notes or recovery key to resolve a version mismatch; see [Cloud sync troubleshooting](/sync).

If you installed the bundled CLI from Nightly, its command is anarlog-nightly;
anarlog uses stable.


Dictation (`docs/dictation.mdx`)


title: "Dictate into other apps"

Dictation is part of Anarlog Pro. Keep Anarlog running, focus a text field in another app, and use your shortcut to speak instead of type. This does not create a meeting note.

Set up dictation

  1. Open Settings → Dictation and enable dictation.
  2. Record your preferred shortcut and choose a microphone.
  3. Use Language & transcription to choose the language and Transcription provider. Hosted providers receive your audio; a supported local provider keeps transcription on your computer.
  4. Allow microphone access and any permissions requested under Settings → Permissions. On macOS, text insertion needs Accessibility permission.
  5. Click the Try dictation field in Settings and test the shortcut.

Hold the shortcut while speaking and release it to finish. With Hands-free dictation enabled, press once to start and again to finish. Text is inserted when transcription finishes. Live transcript preview shows words in the floating panel when the selected provider supports a live connection.

Dictation stops after five minutes and pauses while Anarlog records a meeting. Press Escape to cancel; on Wayland, use Control + Alt + Escape.

If insertion fails

Keep the original text field focused until dictation finishes. If the target changed or the app cannot insert text, open Settings → Dictation and choose Copy last dictation, then paste it yourself. The last transcript stays in memory until you disable dictation or quit Anarlog.

On Linux, approve the desktop's shortcut prompt on Wayland. The target app must expose an editable accessibility field; password fields are excluded. Clear a selected text range before dictating, or use the copy action to replace it yourself.

Dictation is a desktop interaction. The CLI and MCP interfaces do not start dictation or insert text into other apps.


Help (`docs/help.mdx`)


title: "Frequently asked questions"

Browse a topic, then expand the question. If something is not working, go to Troubleshooting. For a question not covered here, email [email protected] or join Discord.

Transcription and cost

Anarlog has three cost models. Compare those first, then compare providers inside the one you choose.
text
| Option | What you pay | When to use it |
| --- | --- | --- |
| On-device | Nothing extra after you download the model | Apple Silicon Mac, and you want no usage bill |
| Anarlog Cloud | [Pro](https://anarlog.so/pricing) at $14/month or $140/year | Hosted transcription without managing API keys |
| Your API key | The provider's own speech-to-text rates | You already have credits, a preferred vendor, or a required endpoint |

On-device and bring-your-own-key transcription stay on the Free plan. Cloud transcription is a Pro feature.

For a bring-your-own-key provider:

1. Open **Settings → Transcription → Configure Providers**.
2. Open that provider's **Available models** and **API setup** links.
3. On the provider's pricing page, compare live vs after-recording rates, language coverage, speaker labels, and any free tier.
4. Select the model under **Model being used** and run a short test meeting.

Anarlog does not publish a live price table for third-party providers because those rates change. [OpenRouter](https://openrouter.ai/models?output_modalities=transcription) is one key that can reach several after-recording models if you want a single bill to compare.

See [How can I use on-device models?](/help#use-on-device-models), [Models and providers](/models-and-providers), and [Transcription and AI](/ai-setup).
On an Apple Silicon Mac, yes — transcribe after the meeting with **Soniqo → Parakeet Batch**. That built-in model adds speaker labels for 25 European languages and is the on-device option meant for long calls.
text
Other local choices on the same Mac:

- **Soniqo → Parakeet Streaming** shows text during the meeting. Use Batch when you care more about finishing a long recording than seeing live captions.
- **On-device file** runs a downloaded whisper.cpp `.bin` model after recording. transcribe.cpp `.gguf` files are not supported yet.
- **Apple Speech** is live-only and available when macOS 26 reports compatible system assets. It transcribes one supported language at a time.

Built-in on-device transcription is not available on Windows, Linux, or Intel Macs. On those systems, use a Deepgram-compatible local server, Anarlog Cloud, or a bring-your-own-key provider. After-recording hosted models handle hour-long audio. Some live models have short session limits — for example, Gemini 3.5 Transcribe Live preview sessions last up to 10 minutes.

Quality and speed depend on the computer. Run a short test recording before a long call. See [How can I use on-device models?](/help#use-on-device-models) and [Use Anarlog offline](/offline).
Yes. Download the Windows x64 build and record from the desktop without a meeting bot. Windows support is in beta.
text
Expect these differences from a Mac setup:

- Built-in on-device transcription is not available. Choose Anarlog Cloud, a Deepgram-compatible local server, or another configured provider. See [How can I use on-device models?](/help#use-on-device-models).
- Microphone detection, auto-stop, and meeting-chat capture are macOS and Linux only.
- You can [import Granola meeting history](/imports) from an official export.

See [Install the desktop app](/desktop-installation).

Recording and notes

No. Anarlog captures your microphone and computer audio from the desktop without adding a meeting bot. See [Record meetings](/meetings). Yes. Anarlog can start calendar-backed meetings on schedule and prompt you when it detects an unscheduled call. Manage scheduled meeting controls under **Settings → Meetings** and microphone detection under **Settings → Notifications**. Microphone detection, auto-stop, and meeting-chat capture are available on macOS and Linux, not Windows. See [Automatic capture](/automatic-capture). Yes. Use **Write** to edit transcript text. Select text or a speaker label to assign the correct person, create a speaker, or apply the change to every matching segment. See [Correct a transcript](/notes#correct-a-transcript). Yes. Right-click **Transcript** and choose **Resume listening**. The new recording stays in the same meeting note. Yes. Upload one audio, SRT, or VTT file to an empty note, or use **Settings → Imports** for meeting-history exports from another assistant. See [Import audio or a transcript](/import-recordings) and [Import meeting history](/imports).

AI, offline use, and privacy

Anarlog can transcribe without sending audio to Anarlog Cloud. Open **Settings → Transcription** and pick the path that matches your computer.
text
| Path | What you select | When it runs | Requirements |
| --- | --- | --- | --- |
| Built-in Soniqo | **Soniqo**, then Parakeet Streaming, Parakeet Batch, or another listed Soniqo model | Live or after recording, depending on the model | Apple Silicon. Download the model first. Prefer **Parakeet Batch** for hour-long calls. |
| Apple Speech | **Apple Speech** | During the meeting | macOS 26 with a supported language added in System Settings. One language at a time. |
| On-device file | **On-device file**, then **Choose a .bin model** | After recording | Apple Silicon. Use a whisper.cpp `.bin` you already have. transcribe.cpp `.gguf` files are not supported yet. |
| Local Deepgram-compatible server | **Custom**, or **Deepgram** with a custom **Base URL** under **Advanced** | Live or after recording, depending on the server | A Deepgram-compatible endpoint on this computer or your local network. Enter that URL and an API key if the server requires one. |

Soniqo, Apple Speech, and On-device file appear only on a supported Apple Silicon Mac. On Windows, Linux, or Intel Macs, use a local Deepgram-compatible server, Anarlog Cloud, or another configured provider.

Summaries and chat are a separate setting. For those to stay local too, choose LM Studio, Ollama, Unsloth, or eligible Apple Intelligence under **Settings → Intelligence**.

See [Models and providers](/models-and-providers), [Use Anarlog offline](/offline), and [Is there a reliable local model that can handle hour-long calls?](/help#local-model-hour-long-calls).
Yes, if you prepare local models before disconnecting. Soniqo, Apple Speech, and On-device file transcription require a supported Apple Silicon Mac; Apple Speech also needs macOS 26 to report compatible system assets. LM Studio, Ollama, Unsloth, and eligible Apple Intelligence can provide local Intelligence models. See [Use Anarlog offline](/offline) and [How can I use on-device models?](/help#use-on-device-models). **Settings → General → Language & Region** lets you choose a main language and additional spoken languages from this list:
text
Arabic, Belarusian, Bulgarian, Bangla, Bosnian, Catalan, Czech, Danish, German, Greek, English, Spanish, Estonian, Persian, Finnish, French, Hebrew, Hindi, Croatian, Hungarian, Indonesian, Italian, Japanese, Kannada, Korean, Lithuanian, Latvian, Macedonian, Marathi, Malay, Dutch, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Serbian, Swedish, Tamil, Telugu, Thai, Filipino, Turkish, Ukrainian, Urdu, Vietnamese, and Chinese.

The selected Transcription model must support those languages. Coverage today:

| Selection | Languages |
| --- | --- |
| Anarlog Cloud | Routes to a provider that supports the languages you selected. The Settings list is the Cloud picker. |
| Soniqo | Bulgarian, Czech, Danish, German, Greek, English, Spanish, Estonian, Finnish, French, Croatian, Hungarian, Italian, Lithuanian, Latvian, Maltese, Dutch, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Swedish, and Ukrainian |
| Apple Speech | German, English, Spanish, French, Italian, Japanese, Korean, Portuguese, Cantonese, or Chinese — one language at a time |
| On-device file | The whisper.cpp `.bin` you select. Check that model's language list. |
| Your API key | The provider and model you configure. Check that model's language list before a multilingual meeting. |

Chat uses the main language. When you configure additional spoken languages, summaries use the language used most in the transcript, falling back to the main language if detection is unavailable. See [Use multiple languages](/languages).
There is no single hidden model. Your Transcription selection handles audio, and your Intelligence selection handles summaries, titles, and chat. Anarlog Cloud currently routes transcription by language and mode and offers Auto routing or a curated Cloud Intelligence model choice. See [Models and providers](/models-and-providers) for the current routes and local options. Anarlog stores app data locally by default. Hosted AI, calendars, sync, sharing, and the optional Cloud API receive the content needed for the feature you enable. See [Data, privacy, and retention](/data-and-privacy). Enterprise security reviews should start at the [security page](https://anarlog.so/security). The answer depends on the provider you choose. Local providers keep the model request on your computer. For Anarlog Cloud or a bring-your-own-key provider, review that provider's retention and training policy before sending sensitive content. Yes. Choose your main language and add every spoken language you expect. The selected Transcription model must support them. See [Languages](/languages).

Sharing, sync, and automation

Anarlog shares the generated summary, not your private memo. Retained audio is optional and must be included separately. Sharing is a Pro feature. See [Share meetings](/sharing). Anarlog cannot read or recover your sync key. Keep any recovery key you saved during setup. See [Recovery keys](/sync#recovery-keys) for key storage and recovery options. No. Cloud Sync copies encrypted notes, not Transcription or Intelligence API keys. Enter each key again on the new computer, then select those models in Settings. See [What Cloud Sync replicates](/sync#what-cloud-sync-replicates). Yes, with Anarlog Pro. Built-in starters can post a Slack recap, update a Notion page, create Linear issues, or export each meeting as Markdown. See [Automate meeting follow-up](/automations).

Platforms and developer tools

Anarlog supports macOS 15 or later. Windows x64 and Linux x64 or ARM64 builds are available in beta. See [Install the desktop app](/desktop-installation). Yes. Try the mobile beta through [TestFlight](https://testflight.apple.com/join/y7WJCXvG) on iOS or [Google Play beta](https://play.google.com/apps/testing/so.anarlog.mobile) on Android. The CLI and local MCP server read the local database, so they work while the app is closed. They can also stage a memo or summary proposal; review the **pending edit** banner in the desktop meeting note before applying it. Webhooks only deliver while the app is open. For hosted access from anywhere, explicitly enable [Cloud API & Connectors](/reference/api-cloud).

Import Recordings (`docs/import-recordings.mdx`)


title: "Import audio or a transcript"

You can use Anarlog with a conversation that was recorded elsewhere. Import audio to create a new transcript, or import an existing transcript to create a summary.

To move many existing meetings from another meeting assistant, use Import meeting history instead.

Import audio

  1. Create a New Note or open an empty note.
  2. Open the ••• menu and choose Upload audio.
  3. Select a supported audio file.
  4. Leave Anarlog open while it imports and transcribes the recording.

You can also drag one audio file onto an open note.

Anarlog accepts WAV, MP3, OGG, MP4, M4A, FLAC, WebM, and AAC files. It uses your selected Transcription model, so configure that model before importing.

When transcription finishes, Anarlog creates a summary if an Intelligence model is configured.

Import a transcript

  1. Create a New Note or open an empty note.
  2. Open the ••• menu and choose Upload transcript.
  3. Select a WebVTT (.vtt) or SubRip (.srt) file.

Anarlog adds the timed text to the note and generates a summary when an Intelligence model is available. Importing a transcript does not create an audio recording.

If an import does not start

Confirm that the file uses one of the supported formats and that a Transcription model is selected for audio imports. For local or bring-your-own-key providers, make sure the provider is running and configured.

See Transcription and AI for model setup or Troubleshooting for common failures.


Imports (`docs/imports.mdx`)


title: "Import meeting history"

Meeting-history import turns official exports from another meeting assistant into Anarlog notes. It is designed for moving a library of past meetings, not for uploading one recording.

To import one audio, SRT, or VTT file, use [Import audio or a transcript](/import-recordings).

Import exported meetings

  1. Export your meetings from the original assistant.
  2. Open Settings → Imports in Anarlog.
  3. Find the detected assistant and click Import.
  4. Select one or more JSON, CSV, Markdown, text, VTT, or SRT export files.
  5. Review the result shown when the import finishes.

Anarlog detects supported meeting-assistant apps installed on your computer. Supported sources include Granola, Circleback, Fireflies.ai, Fathom, Krisp, Otter.ai, Notion AI Meeting Notes, Zoom, Microsoft Teams, Google Meet, Webex, Plaud, Pocket, ChatGPT Record, Slack Huddles, and others.

For assistants that support a direct connection (OAuth, MCP, or a local CLI such as Plaud), choose Connect. Anarlog signs in through the official integration — for Plaud it runs plaud on your machine, and for Pocket it uses the official MCP server — and keeps importing new meetings while it is running.

For Zoom requirements, connection steps, and removal instructions, see Import Zoom meetings.

The exact content depends on the source export. Anarlog keeps supported titles, dates, notes, summaries, transcripts, speakers, and participants when those fields are available.

Understand the result

The result separates meetings into four groups:

  • Imported meetings were added as new notes.
  • Matched meetings were already present and were left unchanged.
  • Conflicts need review because Anarlog could not safely choose between versions.
  • Errors could not be read or converted.

You can select the same export again. Meetings that still match are not duplicated.

What is not imported

Meeting-history import reads text-based exports. It does not copy the original audio or video.

If you only have an audio recording, upload the audio to an empty note and let your selected Transcription model process it.

If your assistant is missing

Anarlog lists assistants it detects on your computer. Open or reinstall the source app, restart Anarlog, and check Settings → Imports again. You can also export to SRT or VTT and import the transcript directly.

See Troubleshooting if no supported app appears or an export fails.


Installation (`docs/installation.mdx`)


title: "CLI installation"

Current availability

The anarlog executable includes both the CLI and the local MCP server.

Homebrew, standalone release binaries, and Windows package-manager distribution are forthcoming. Do not rely on those channels yet.

Install from the desktop app

Open Settings → Developers and select Install (or Reinstall). Direct-download desktop builds copy the bundled CLI onto your PATH.

Platform Installed command Path
macOS anarlog ~/.local/bin/anarlog
Linux (DEB / AppImage) anarlog ~/.local/bin/anarlog
Windows anarlog %LOCALAPPDATA%\Anarlog\bin\anarlog.exe (added to your user PATH)

On macOS and Linux, add ~/.local/bin to PATH if your shell cannot find anarlog:

bash
export PATH="$HOME/.local/bin:$PATH"

On Windows, open a new terminal after installing so the PATH update applies.

The Mac App Store build does not include bundled CLI installation. Use [build from source](#build-from-source) instead.

Build from source

To build the CLI yourself instead:

bash
git clone https://github.com/fastrepl/anarlog.git
cd anarlog
cargo install --locked --path apps/cli
anarlog --version

cargo installs the executable into its configured binary directory, normally ~/.cargo/bin. Add that directory to PATH if your shell cannot find anarlog.

Connect to local data

By default, the CLI looks for anarlog/app.db in your operating system's application-data directory. It also recognizes legacy Anarlog locations.

Open the desktop app once so it can create the database. After that, the CLI and local MCP server work while the app is closed.

For a custom database location, pass a global option or environment variable:

bash
anarlog --db-path /path/to/app.db --json meetings list
ANARLOG_DB_PATH=/path/to/app.db anarlog --json meetings list

If you have an Anarlog data directory containing app.db, use:

bash
anarlog --base /path/to/anarlog-data --json meetings list

The CLI opens the database in read-only query mode for meeting reads. Proposal create and decline commands, and anarlog mcp, open the same file for writes so they can stage or discard pending edits. They do not create a database or run migrations.


Languages (`docs/languages.mdx`)


title: "Use multiple languages"

Anarlog separates the language used for summaries and chat from the languages it should expect in a conversation.

Choose the main language

Open Settings → General and choose Main language under Language & Region.

Anarlog uses the main language for chat and as the default for summaries. It is also always included as a transcription language.

When you add spoken languages, Anarlog checks the transcript and writes the summary in the language used most among your selected languages. Generated titles follow the summary. If detection is unavailable, Anarlog uses your main language.

In desktop 1.4.30 and later, turn on Use main language for summaries under Main language to write summaries in your main language even when the meeting uses another selected language. This option is off by default and does not remove your additional transcription languages. Leave it off to keep automatic summary language detection.

Changing the main language does not translate an existing transcript. Regenerate a summary to apply the new output language to an older meeting.

Add spoken languages

Under Additional spoken languages, add other languages people may use in the same meeting. This gives transcription more context for multilingual conversations.

The selected Transcription provider and model must support those languages. If a language is missing or performs poorly, try another model under Settings → Transcription.

Languages you can choose

Settings offers these languages for the main language and additional spoken languages:

Arabic, Belarusian, Bulgarian, Bangla, Bosnian, Catalan, Czech, Danish, German, Greek, English, Spanish, Estonian, Persian, Finnish, French, Hebrew, Hindi, Croatian, Hungarian, Indonesian, Italian, Japanese, Kannada, Korean, Lithuanian, Latvian, Macedonian, Marathi, Malay, Dutch, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Serbian, Swedish, Tamil, Telugu, Thai, Filipino, Turkish, Ukrainian, Urdu, Vietnamese, and Chinese.

That list is the Anarlog Cloud picker. On-device and bring-your-own-key models can support a subset or a different set:

  • Soniqo transcribes Bulgarian, Czech, Danish, German, Greek, English, Spanish, Estonian, Finnish, French, Croatian, Hungarian, Italian, Lithuanian, Latvian, Maltese, Dutch, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Swedish, and Ukrainian.
  • Apple Speech live transcription uses one supported language at a time: German, English, Spanish, French, Italian, Japanese, Korean, Portuguese, Cantonese, or Chinese. Add that language in macOS System Settings before selecting Apple Speech.
  • On-device file uses the language list of the whisper.cpp .bin you select.
  • A bring-your-own-key provider uses that provider's language list. See How can I use on-device models?.

Improve names and jargon

Language selection does not teach the model company-specific terminology. Add names, acronyms, and product terms under Settings → Dictionary.

For summary structure and wording, use Customize meeting summaries.


Meetings (`docs/meetings.mdx`)


title: "Record meetings"

Start recording

Choose the path that matches the meeting:

  • Calendar event with a meeting link: open the event note and click Join & record. Anarlog opens the call and starts listening.
  • In-person meeting or call already open: open the event note and click Record.
  • Unscheduled conversation: create a New Note, then click Record.

Anarlog records your microphone and system audio. It does not join the meeting as a participant.

Make sure you have permission to record. Consent rules depend on where you and the other participants are located.

Choose a preferred recording computer

In desktop 1.4.30 and later, open Settings → Meetings → Primary recording device on the computer you want to use and choose its name. This requires a signed-in Pro account. Open Settings on a different computer to make that computer the preferred recorder.

For the same calendar meeting, Anarlog coordinates online computers and keeps one recording. A computer can still record when the preferred one is absent. Choose Ask each meeting to clear the saved preference and return to the meeting prompt. If the computers cannot reach the device service, they keep recording.

During the meeting

Use Memos for your own notes. You can keep them rough: the generated summary uses the conversation and your memo as context.

Open Transcript to follow live text when your selected transcription model supports it. Models marked After recording process the audio when you stop.

If live transcription from a remote provider stalls during speech, Anarlog attempts to reconnect while keeping audio capture running. The warning clears when finalized transcript text resumes.

If you enabled Show floating bar in Settings → Meetings, you can control recording without keeping the full Anarlog window open.

Finish the meeting

Click Stop listening. Anarlog saves the recording according to your retention setting, finishes the transcript, and creates a summary when an Intelligence model is configured.

You can resume a finished meeting from the same top-right control if the conversation continues.

Use an existing recording

Create or open an empty note, click the ••• menu, then choose Upload audio or Upload transcript.

See Import audio or a transcript for supported formats and the complete flow.

For automatic start, meeting detection, and stop controls, see Automate meeting capture.


Models And Providers (`docs/models-and-providers.mdx`)


title: "Models and providers"

Anarlog does not hide one model behind the whole app. It keeps two independent selections:

  • Transcription turns meeting audio into text.
  • Intelligence turns text into summaries, titles, and chat responses.

Open Settings → Transcription and Settings → Intelligence to see the selection active on your computer. Changing one selection does not change the other. For managed Pro (Cloud) and Auto selections, this page explains the current upstream route.

How a meeting moves through AI

Stage Input Output Controlled by
Capture Microphone and computer audio A local recording Settings → Meetings
Transcription Meeting audio Live or after-recording transcript Settings → Transcription
Intelligence Transcript, memo, meeting details, and your instructions Summary, title, or chat response Settings → Intelligence

Recording, editing, and local storage do not require an AI model. A hosted Transcription provider receives audio. A hosted Intelligence provider receives the text and other context needed for that request.

Anarlog Cloud

Anarlog Cloud uses managed routes. Settings displays the managed selection as Pro (Cloud). Transcription uses that Cloud route. Intelligence offers Auto, displayed as Pro (Cloud), or a curated model choice. Auto lets Anarlog choose a suitable upstream model and retry a compatible provider when needed.

The routes below describe the current implementation, not a permanently pinned model contract. Anarlog may update a managed route to improve quality, language coverage, latency, or availability. Select your own provider and model when you need a fixed model ID.

Cloud transcription

The managed Transcription route chooses a provider from the meeting's languages and whether Anarlog needs live or after-recording transcription.

  • Soniox is the primary provider for live and after-recording transcription when it supports the selected languages. It uses Soniox 5: stt-rt-v5 live and stt-async-v5 after recording.
  • Deepgram is an eligible fallback and resolves the route to Nova 3 or Nova 2, depending on language support.
  • AssemblyAI currently resolves it to Universal 3.5 Pro: universal-3-5-pro-realtime for live transcription and universal-3-5-pro after recording.
  • The eligible fallback pool also includes configured routes for Gladia (currently Solaria 1), ElevenLabs, OpenAI, Mistral, and Alibaba Cloud Model Studio.

Only configured providers that support the requested mode and languages enter the route. If one returns a retryable error, Anarlog can try the next eligible provider.

For stereo recordings, Soniox combines the microphone and computer-audio channels and uses speaker diarization to distinguish speakers.

Cloud Intelligence

For text tasks, Anarlog → Auto currently routes summaries, chat, and generated titles through the ~anthropic/claude-sonnet-latest alias on OpenRouter.

The alias tracks the current Claude Sonnet release instead of pinning a dated model. OpenRouter receives the prompt and chooses an available endpoint for that model.

Under Settings → Intelligence, you can choose a model family instead of Auto. The next desktop update expands the Pro picker to these choices:

  • Claude Sonnet, Claude Opus, and Claude Haiku
  • GPT Sol, GPT Astra, GPT Terra, and GPT Luna
  • Gemini Pro and Gemini Flash
  • Grok and Kimi
  • DeepSeek Pro and DeepSeek Flash
  • GLM and GLM Flash

Anarlog tries your selected model first, then Claude Sonnet if needed. These choices track model families; use your own provider when you need a fixed model ID. DeepSeek Pro and GLM accept text only, so their selections disable image attachments. Requests containing audio continue to use the audio route below.

Hosted Intelligence requests that contain audio use a separate ordered model pool:

  1. google/gemini-3.1-pro-preview
  2. google/gemini-3.6-flash
  3. mistralai/voxtral-small-24b-2507

This audio-capable Intelligence route is separate from normal meeting transcription.

On-device models

Anarlog currently offers three built-in on-device Transcription providers. Settings shows each provider only when it is supported by your Mac and release.

Provider Model When it runs Requirements
Soniqo Parakeet Streaming During the meeting Apple Silicon; live transcription for 25 European languages
Soniqo Parakeet Batch After recording Apple Silicon; speaker-labeled transcription for 25 European languages. Prefer this for hour-long calls.
Apple Speech Apple Speech During the meeting macOS 26 with a supported language added in System Settings. Live transcription uses one language at a time from German, English, Spanish, French, Italian, Japanese, Korean, Portuguese, Cantonese, or Chinese.
On-device file A whisper.cpp .bin you select After recording Apple Silicon. In Settings this is labeled On-device file, with Choose a .bin model for the file picker. transcribe.cpp .gguf files are not supported yet.

Parakeet Batch does not always provide word-level audio timestamps. When it returns text without a usable speech alignment, Anarlog keeps the individual words editable and groups the display by audio channel and processing chunk. The order between channels within a chunk is uncertain, and those words cannot be used for precise audio seeking. Speech-aligned words retain their timing.

You can also keep audio on your network by pointing Custom, or Deepgram's Advanced base URL, at a Deepgram-compatible server on this computer or your local network.

Compatibility code still recognizes some older local model IDs, but they are not offered as new choices. The table above is the current user-facing model list.

If you select Parakeet Streaming and also download Parakeet Batch, Anarlog can refine speaker labels on-device after a meeting with multiple remote participants.

For local summaries and chat, connect LM Studio, Ollama, or Unsloth and choose any compatible model they serve. Anarlog does not silently substitute another model. Apple Intelligence is also available as an experimental, text-only Intelligence provider on eligible Macs running macOS 26 or later.

If a selected local model or server is unavailable, Anarlog reports a connection error instead of sending the request to Anarlog Cloud.

Other model-backed features

Not every AI-adjacent feature is controlled by AI Settings:

Feature Implementation Where it runs
Meeting search Tantivy full-text index, not an LLM or embedding search On your computer
Speaker voiceprints wespeaker-embedding-onnx-1 voice embeddings On your computer
Audio cleanup and speech detection Bundled ONNX models On your computer
When chat uses web search, Anarlog sends the search query to its hosted research endpoint, which currently uses Exa, even when your Transcription and Intelligence models are local. The returned text can then become context for your selected Intelligence model.

Your own provider

When you configure a provider with your own API key:

  • Anarlog sends requests directly from the desktop app to the configured base URL.
  • The provider and exact model shown in Settings handle the request.
  • Anarlog stores the API key in your operating system's secure credential store, not in the app database. Keys stay on that computer and do not sync to your other devices.
  • The provider's pricing, retention, and training policies apply.

Anarlog supports dedicated provider integrations and OpenAI-compatible endpoints. Intelligence model lists are loaded from the provider when its API supports discovery, so Settings → Intelligence is the current source of truth for available model IDs.

You can also connect a subscription for Intelligence instead of an API key: Claude, ChatGPT, Grok, GitHub Copilot, or Kimi Code. Open Settings → Intelligence → Configure Providers and use Connect.

Recent bring-your-own Intelligence providers include Venice, configured with a Venice API key, and Meta Muse (muse-spark-1.3 and the other muse-spark models), configured with a Meta Model API key.

Recent bring-your-own Transcription models in Settings include:

  • Google Gemini 3.5 Transcribe (gemini-3.5-transcribe-live during the meeting, gemini-3.5-transcribe after recording)
  • AssemblyAI Universal 3.5 Pro (universal-3-5-pro-realtime during the meeting, universal-3-5-pro after recording)
  • Smallest AI Pulse (pulse) and Pulse Pro (pulse-pro) for live and after-recording transcription
  • Meta Muse Voice Transcribe (muse-voice-transcribe-1.0) for live and after-recording transcription with speaker labels
  • Nari Labs for live transcription with a Nari API key. Saved beta model IDs that ended in :free move to the current models.
  • Wispr Flow for transcription and dictation with your own API key. Its after-recording adapter accepts at most six minutes per request; choose another provider for longer files.
  • Inworld, Gradium, Modulate, and Alebex for live transcription with your own provider credentials.
  • NVIDIA Speech NIM for live transcription through your own deployed NIM server. NVIDIA's hosted gRPC endpoint is not supported.
  • Amazon Bedrock for after-recording transcription through an OpenAI-compatible gateway exposing /audio/transcriptions. Native Bedrock endpoints are not supported.

Desktop 1.4.30 and later transcribes AssemblyAI Universal-3.5 Pro (universal-3-5-pro) recordings once after you stop. Older Universal-3 Pro selections now use Universal-3.5 Pro. Processing the whole meeting preserves speaker labels across the recording instead of restarting them for each minute.

The new live-only providers keep credentials unverified until transcription starts. If live transcription fails, keep the recording and retry with a provider that supports after-recording transcription.

Settings may still show older model IDs for compatibility. Prefer the current Gemini 3.5, Universal 3.5, Soniox 5, Smallest AI Pulse, and GPT Transcribe models when you configure a provider yourself.

Choose a setup

Goal Transcription Intelligence
Keep meeting content on your computer Select Soniqo, Apple Speech, or On-device file when available, or a Deepgram-compatible local server Use LM Studio, Ollama, Unsloth, or eligible Apple Intelligence
Avoid per-minute transcription bills Use on-device models, or Anarlog Cloud on a Pro plan Use a local Intelligence provider, a connected subscription, or Anarlog Cloud
Pin exact model IDs Configure your own provider Configure your own provider
Minimize setup Anarlog Cloud Anarlog Cloud

To compare on-device, Cloud, and bring-your-own-key cost, see How can I compare the costs of all the transcription options?. For every on-device path, see How can I use on-device models?. For a fully local checklist, see Use Anarlog offline. For the data sent by each feature, see Data, privacy, and retention.


Notes (`docs/notes.mdx`)


title: "Notes, summaries, and transcripts"

Every meeting note has up to three views:

  • Memos are the notes you write yourself.
  • Summary is the structured note generated by your Intelligence model.
  • Transcript is the captured conversation.

You can edit memos and summaries like regular notes. In a transcript, select a speaker label to assign a participant and use Apply to all when the same speaker appears again.

When CLI, MCP, or Chat stages a memo or summary replacement, the meeting shows a pending edit banner. Open Review memo or Review summary to inspect the unified diff, then apply or decline it. A proposal does not change the meeting until you apply it.

After applying a memo or summary edit, use the editor's Undo command to restore the previous content. Your earlier typing remains in the undo history.

Correct a transcript

  • After recording stops, click Write above the transcript to edit its text. Save with Command/Ctrl+S and press Escape to return to reading.
  • Select words or a transcript segment and choose Change speaker to fix only that selection. In write mode, press Enter at the cursor to open the speaker picker; selected text can become its own speaker block.
  • Select transcript blocks and delete them together. Adjacent blocks assigned to the same speaker merge.
  • Select a speaker label to choose an existing participant or Create new speaker. Use Apply to all to update every matching speaker segment.
  • Right-click Transcript to copy the transcript, resume listening, re-transcribe retained audio, or delete the recording.
Re-transcribing permanently replaces the current transcript with output from your selected Transcription model. Edit or export anything you need before you start it.

Deleting the recording does not delete the memo, summary, or transcript. It only removes the retained audio file.

Shape the summary

Use the template picker beside Summary to change its structure. You can also set standing instructions, add names and specialized terms, and control how templates interact with your preferences.

See Customize meeting summaries for the complete setup.

Continue an existing note

Right-click Transcript and choose Resume listening to add another recording to the same meeting note. This is useful when a call resumes after a break or when you want several related conversations in one place.

Share a meeting

Use Share in the meeting header to invite people, send a recap, or copy a link. Anarlog shares the generated summary, not your private memo. You can include retained audio separately.

See Share meetings for access levels, comments, and link controls.

Review your conversation activity

In the desktop app, open Settings → Insights to see your busiest weekdays, typical conversation length, and conversations per active day. Choose the last 7 days, last 30 days, or all time. Weekday patterns appear after at least five captured conversations in the selected range.

The same Insights page includes your activity and collectible badges. Badges recognize milestones such as your first conversation and recording in more weeks. Collected badges stay on the current device even when you delete a conversation.

Insights and badge collections are desktop views. The CLI, local MCP, and Cloud API do not expose these views or badge collection controls; use their existing meeting and transcript commands to work with your conversations.

Export a meeting

  1. Open the ••• menu in the meeting header.
  2. Choose Export.
  3. Select PDF, text, Markdown, or Org format.
  4. Include any combination of the memo, summary, and transcript.

Anarlog writes the export to your default export folder and reveals it when ready. Change the destination under Settings → General.


Offline (`docs/offline.mdx`)


title: "Use Anarlog offline"

Anarlog can record meetings and manage notes without an internet connection. To transcribe, summarize, and chat offline, configure local models before you disconnect.

What works without the internet

  • Create and edit notes.
  • Record and play meeting audio.
  • Export memos, summaries, and transcripts already on your computer.
  • Transcribe with Soniqo or an On-device file whisper.cpp .bin on a supported Apple Silicon Mac, or Apple Speech when available on macOS 26.
  • Generate summaries and chat with LM Studio, Ollama, Unsloth, or eligible Apple Intelligence.

Hosted models, Google and Outlook calendar sync, cloud sync, and share links need a network connection.

Prepare offline transcription

  1. Open Settings → Transcription.
  2. Choose Soniqo, or choose Apple Speech if it appears. On Apple Silicon you can also choose On-device file, then Choose a .bin model, for after-recording transcription from a downloaded whisper.cpp .bin.
  3. Download the Soniqo model. For Apple Speech, add the supported language in macOS System Settings.
  4. Select the model under Model being used.
  5. Run a short test recording before going offline.

The model's Live or After recording label tells you when text will appear. On-device model availability depends on your Mac and the current Anarlog release.

Prepare offline summaries and chat

Use LM Studio, Ollama, or Unsloth as your local Intelligence provider. Download the model in advance, start the local server, and select that model in Settings → Intelligence.

Anarlog must be able to reach the local server while you work. The server can run on the same computer without internet access.

On an eligible Mac running macOS 26 or later, you can instead select the experimental Apple Intelligence → System Language Model after its system model finishes downloading.

Check that nothing uses a hosted provider

Before a sensitive meeting, confirm both selections:

  • Settings → Transcription → Model being used points to an on-device model.
  • Settings → Intelligence → Model being used points to LM Studio, Ollama, Unsloth, or Apple Intelligence.

Choosing a local model for only one setting does not make the other setting local. See How can I use on-device models? for each transcription path, Models and providers for the current model list, and Data, privacy, and retention for what each provider receives.

Chat's web search always sends your search query to a hosted research endpoint, even when Transcription and Intelligence are both fully local. Avoid web search in Chat for a sensitive meeting.

Security (`docs/security.mdx`)


title: "Security and procurement"

Enterprise buyers should start at the Anarlog security page. It is the public security-review packet: architecture, encryption, data location, retention, training policy, subprocessors, incident reporting, and the contracts we can send today.

A hosted trust center (Vanta, Oneleet, or similar) is a separate surface. We will publish one after SOC 2 and ISO programs start — not as a substitute for this page.

What stays true in the product

  • Meeting notes live on the desktop in local SQLite unless someone enables a named cloud feature.
  • Cloud Sync is end-to-end encrypted. Fastrepl cannot read the recovery key.
  • Anarlog does not add a bot to Zoom, Google Meet, or Microsoft Teams.
  • Fastrepl does not train models on notes, transcripts, or audio. Hosted or bring-your-own-key providers have their own terms.

See Data, privacy, and retention for the in-app settings that control audio retention, analytics, and a fully local meeting.

Documents

We do not claim SOC 2, ISO 27001, or HIPAA on these pages.

Report a vulnerability

Use private GitHub reporting or email [email protected]. See the repository security policy.

Do not open a public GitHub issue for a security vulnerability. Use private reporting so it isn't disclosed before a fix ships.

Sharing (`docs/sharing.mdx`)


title: "Share meetings"

Sharing publishes a meeting's generated summary so other people can review it without receiving your private memo. Sharing requires Anarlog Pro, an account, and an internet connection.

Share a note

  1. Open a meeting with a generated summary.
  2. Click Share in the meeting header.
  3. Choose how you want to share it:
    • Invite people by email and give them viewing, commenting, or editing access.
    • Email the meeting summary as a recap.
    • Slack posts the meeting summary to a channel you can access.
  4. Review General access before you copy or send the link.

The first share creates an online copy of the summary. Later summary edits sync to the shared note while sharing remains active.

You can manage sharing for notes you created even if your workspace role does not allow you to manage sharing for other people's notes.

People with edit access, including the owner, can edit the shared summary together. Their changes appear as they type. Viewers and commenters still see the note without editing it. Live editing requires the shared note to be open in a current desktop or web session; closing the page keeps the latest saved summary.

Before you send

Opening Share does not send an email, create an invitation, grant access, or publish an unshared note.

For meetings with attendee email addresses, Anarlog lists those people under Suggested attendees. They do not have access yet.

Clicking **Invite** sends an invitation to every person still listed, including any address you entered. Remove a suggestion first if you do not want to include that person.

Sharing emails are action-based:

  • Invite grants note access and sends an invitation email.
  • Email sends the summary in an email without granting access to the shared note.
  • Slack, Copy link, and General access changes do not send email.

Opening or closing the panel without submitting Invite or Email does not send an email. A folder's People in the meeting default is a separate automatic-sharing rule: once a new summary is ready, it grants viewing access and sends invitations to those participants.

Choose who can open it

General access controls the broadest audience:

  • Only people invited requires an invitation to the note.
  • Everyone in your workspace makes the note available to members of the selected Anarlog workspace.
  • Anyone with the link allows anyone who has the bearer link to view it.

Invited people can have Can view, Can comment, or Can edit access. Editors can change the shared summary from the web page. The note owner keeps full access and can change or revoke each person's access.

See Teams and shared libraries to create a workspace, manage members, or share reusable folders, templates, and automations.

Treat an **Anyone with the link** URL like sensitive data. Replace the link if it was sent to the wrong place, or switch General access back to invited-only.

Share new notes from a folder

Open a folder and choose Default access. Keep Only me, or confirm People in the meeting or Everyone in your workspace. New notes in that folder are shared once their summary is ready. People in the meeting sends viewing invitations to participants with email addresses; the workspace setting grants workspace access without invitation emails. Existing notes keep their access, and you can change access on each note.

Automatic sharing uses the folder access you confirmed. Review that setting before recording a private meeting in the folder.

Read a received summary

When someone shares a note for the same calendar meeting as your own note, Anarlog shows it in a Shared summary tab beside your summaries. Your private memo and transcript stay separate. Notes without a matching calendar meeting remain available in Shared notes.

Include audio

If the meeting still has a retained recording, turn on Share audio to add it to the shared note. Audio is separate from the summary and can be removed from the share without deleting your local recording.

Check Audio file retention if the option is missing. Anarlog cannot share audio that has already been removed from local storage.

Comments

People with commenting access can select summary text and add an anchored comment. Viewers can read existing comments but cannot add new ones. The owner can manage access and delete comments on the shared note.

Stop or restrict sharing

Open Share again to remove a person, change General access, stop sharing audio, or replace a link. Restricting a link prevents that link from granting access, but invited people keep the access you gave them.

See Data, privacy, and retention for what sharing sends to Anarlog's hosted service.


Skill (`docs/skill.md`)


name: anarlog

Anarlog

Prefer local Anarlog data when the agent can access it. Use OAuth-connected Cloud MCP when running remotely or when local data is unavailable. Meeting reads are safe. Writes are limited to staging proposals on the local CLI.

Choose a source

  1. Honor an explicit local-only or Cloud request. Do not silently switch its source.
  2. Otherwise, prefer a connected local MCP server. If shell access is available, select the CLI executable available on PATH: anarlog-cli on Flatpak, otherwise anarlog. Use that executable for every CLI command below, including the --json doctor readiness check. Read with the selected executable and --json meetings --source local list when ready, even if Cloud MCP is connected.
  3. When running remotely without the user's local database, or when the CLI or database is absent, use connected Cloud MCP: list_meetings, get_meeting, get_meeting_transcript, and get_recurring_meeting_history. If MCP is unavailable but CLI login is available, use the selected executable with --json meetings --source cloud list for the same hosted snapshots.
  4. A local database compatibility, permission, or operation error needs to be reported; do not hide it by switching to Cloud. An empty local result does not mean the database is unavailable. If the requested meeting is missing, an already-connected alternate source can fill the gap unless the user restricted the source. Identify that source and keep the meeting's subsequent reads on it.
  5. Local reads need no Cloud login, Pro subscription, or completed sync. If neither source is available, offer local CLI installation for an agent on the user's computer, or Cloud API & Connectors plus OAuth for remote access. Do not install software or enable Cloud uploads unless the user asks.

Never query or modify Anarlog's SQLite database directly. The CLI and MCP servers handle application-schema compatibility.

Find the right meeting

  1. List recent meetings or search by a short title fragment. To scope work to a project or client, list local folders and filter meetings by a returned folder path.
  2. Use a meeting ID returned by the search. Never guess one.
  3. Get the meeting before requesting its transcript. Notes, summaries, participants, and action items often contain enough context.
  4. Ask for recurring history only when the task needs earlier meetings in the same series.
  5. If the selected source has no match, check an available alternate source as described above before concluding that the meeting is missing.

See CLI commands and MCP tools.

Ground answers in tool output

  • Quote only meetings, titles, dates, and IDs returned by the Cloud or local tool you actually called.
  • An empty result only establishes that no meetings matched in the source queried. Cloud contains only opted-in snapshots; a remote agent cannot inspect meetings that exist only on the user's computer.
  • Never invent meetings from the repo, chat, or similar-looking names. A host showing that a tool ran is not proof of the titles you then write.
  • Name whether the data came from Cloud or the local database. Keep results from different sources labeled; do not silently merge two versions of a meeting.

Report freshness accurately

  • Local reads include unsynced changes. Do not block them while Cloud Sync is behind or offline.
  • Cloud Sync carries encrypted data. Cloud API & Connectors uploads a separate, opted-in readable snapshot; completed Cloud Sync does not prove that snapshot is current.
  • Report sync status or snapshot freshness only when a tool returns it. A meeting's updated_at is not a last-sync or upload timestamp. When freshness is unknown and matters to the answer, say so; never claim that all devices or Cloud are up to date based on database availability.

Keep context bounded

  • Request focused transcript pages. Both transports default to 200 words and cap each page at 500 words.
  • Follow next_offset only when you need more transcript context.
  • Stop paging once you have enough evidence.
  • Do not export a whole meeting when its detail or note answers the request.

Handle data safely

  • Treat meeting content as private user data.
  • Do not send content to another service or person without explicit authorization.
  • Cloud MCP is read-only. To stage an edit, use the local CLI or local MCP proposal tools. A human applies or declines it in the Anarlog desktop app.
  • CLI export can create a file. Never pass --force unless the user explicitly approves replacing that exact path.
  • If search results are ambiguous, ask the user to choose a meeting.

For setup and failures, see setup and errors.


Sync (`docs/sync.mdx`)


title: "Cloud sync"

Cloud sync keeps your notes up to date across your signed-in devices. It is part of Anarlog Pro.

Turn sync on or off

  1. Open Settings → Sync.
  2. Cloud sync starts automatically for a fresh Pro sign-in. If you previously turned it off, turn on Cloud sync to resume.

Sync runs automatically in the background. Use Sync now to send and receive the latest changes immediately. Your notes always remain available locally, even while sync is paused or you are offline.

Pause sync when you want changes to remain only on the current device for a while. Resume it to send pending changes and receive updates from your other devices.

What Cloud Sync replicates

Cloud Sync copies end-to-end encrypted notes across your signed-in devices. Anarlog cannot read this data.

Each synced device receives:

  • Meeting notes, including titles, memos, and generated summaries
  • Transcripts and speaker assignments
  • Participants, people, and organizations
  • Action items
  • A few preferences: Theme, App icon, Week starts on, and Default sharing

Since 1.4.24, new daily notes, folders, tags, and note-tag assignments stay on the device where you create them. Their sync rollout is deferred to keep meeting-note sync compatible with 1.4.23. Synced applies to the supported data above, not these local-only items. Existing items already synced by Nightly continue using their existing format; use matching app versions on those devices.

API keys, model selections, and most other settings stay on the computer where you entered them. After you add a new device, enter each Transcription and Intelligence API key again and choose the models you want on that computer. Anarlog stores those keys in the operating system's credential store and does not copy them between devices.

Also set up on each device:

  • Calendar connections
  • Downloaded local models
  • Device-specific options such as audio devices, autostart, notifications, and recording retention

Saved recordings and file attachments remain on that computer. See Where local data lives.

See Data, privacy, and retention for what can leave your computer for hosted AI, sharing, and other features.

Recovery keys

Anarlog creates your first sync key automatically and stores it on your device. An existing synced device transfers the key to new devices through an encrypted package. Anarlog cannot read or recover the key.

If you saved a recovery key during an earlier setup, keep it in your password manager. On a new desktop device, Use recovery key instead lets you connect while your other devices are offline.

If you lose every device holding the key and have no saved recovery key, Anarlog support cannot restore your encrypted cloud data. Local notes remain available on devices where they are stored.

Add another device

  1. Install Anarlog and sign in with the same Pro account on the new device.
  2. Keep Anarlog open and sync enabled on an existing synced device. It transfers the key automatically; no approval button is required.
  3. Keep the new device open while it connects and downloads your notes. If all existing devices are offline, setup waits until one comes online.
  4. Re-enter any Transcription or Intelligence API keys you use on this computer, then select those models under Settings → Transcription and Settings → Intelligence.

A device where you explicitly paused sync stays paused until you resume it. Connecting a local library previously used with another account still requires the Connect library choice below.

Anarlog 1.4.29 includes five synced devices with Pro, plus any purchased extra slots. Settings → Sync → Devices shows your current usage and limit. If you reach the limit, remove an unused device or choose Get more slots to open your account page and add paid slots to a personal Pro subscription. Each add-on adds one slot. Existing connected devices remain connected if you later remove an add-on.

Cloud API & Connectors is a separate, optional feature. If you enable it under Settings → Developers, Anarlog uploads a server-readable copy for remote agents; it does not decrypt or weaken your end-to-end encrypted sync data. See Cloud API and connectors.

Switch accounts while keeping local notes

In 1.4.25, signing in to another account keeps your personal notes and recordings available on this device. Sync waits for your choice in Connect library:

  • Keep using locally leaves the library available without connecting it to the signed-in account.
  • Connect library connects the personal library to that account and brings in its existing notes. Copies already synced to your previous account remain there. Team and shared notes stay with their workspace.

Reconnect integrations for the account you are using. Connecting a different account opts this library into the new account-switching format; older app versions cannot open it. Keep a compatible version installed rather than downgrading after connecting.

This is an account-switching choice, not a repair for a delayed sync. Leave your account and recovery key unchanged while investigating a sync error.

Where local data lives

Anarlog keeps your notes, recordings, and settings in its application data folder, next to the local database. You don't pick a storage folder, so a file-syncing service such as iCloud Drive, Dropbox, Google Drive, or OneDrive never competes with Cloud sync for the same files. Backup tools that snapshot the folder are fine.

Earlier versions let you point storage at a custom folder, often an Obsidian vault. The first launch after updating moves the notes and recordings from that folder back into the application data folder and removes only the files Anarlog created there. Your other files in that folder stay where they are.

To keep an Obsidian vault or another folder up to date, use the Export every meeting as Markdown automation and choose that folder as its export location. It writes files one way, from Anarlog into the folder.

Fix a blocked sync

  • Sync needs attention / setup required: Open Anarlog on an existing synced device signed in to the same account, or enter a recovery key you saved during an earlier setup.
  • Connecting this device: Open Anarlog on an existing synced device signed in to the same account, or use a previously saved recovery key.
  • Sign in again: Sign out and sign back in, then resume sync.
  • Identity mismatch: Sign in again with the account that owns the synced notes. Check Sync settings before changing local files.
  • Device limit reached: Remove an unused device, then try again.
  • macOS Keychain error: Open Settings → Sync, click Repair Keychain Access, and resume sync.

Sync stays on Connecting or Cloud sync delayed

Both states mean Anarlog is still retrying in the background. Your notes remain available locally.

  • Connecting... means this device has not finished setting up encrypted sync. If setup fails, Anarlog may show Sync needs attention with more detail.
  • Cloud sync delayed means recovery has not finished. Anarlog may be waiting for more synced data or retrying a failed step. An error appears below the status when one is available.

To fix it:

  1. Check that the device is online and that a firewall, VPN, or proxy is not blocking api.anarlog.so. Opening https://api.anarlog.so/ in a browser can return 404 Not Found because there is no page at that address. This alone neither indicates a sync failure nor proves that the app can complete sync.
  2. Check the date and time on this device. A wrong clock makes sync credentials expire immediately; Anarlog reports this as a clock problem.
  3. Keep Anarlog open. A large first download can take several minutes and resumes if the app was closed.
  4. Turn Cloud sync off and on again from Settings → Sync.
  5. If it still does not clear, click Sync now and expand Sync log. Note the time you tried it, the status text, any error, and the app version and operating system on each affected device.

No sync activity yet does not mean that sync has never run. The in-app log contains recent activity from the current app session and can remain empty while encrypted sync is being set up or recovered.

Email [email protected] with those details and any in-app log entries. If the log is empty, include the native app.log from the affected computer. For the stable desktop app:

  • macOS: In Finder, choose Go → Go to Folder and enter ~/Library/Logs/com.hyprnote.stable/.
  • Windows: In File Explorer's address bar, enter %LOCALAPPDATA%\com.hyprnote.stable\logs.

Staging and the retired Nightly app keep separate logs; use com.hyprnote.staging or com.hyprnote.nightly in place of com.hyprnote.stable. Review logs before sharing them, and never send your recovery key, API keys, or sign-in tokens.

Do not delete your local data or create a replacement recovery key to troubleshoot delayed sync. Keep the existing notes and recovery key until sync completes and you have verified your notes on another device.

If sync is paused during recording or an import, let that activity finish. Anarlog resumes background sync when it is safe to do so.


Teams (`docs/teams.mdx`)


title: "Teams and shared libraries"

Teams give a group shared membership for meeting-note access and reusable resources. Your personal notes remain private unless you share them.

Create a workspace

  1. Sign in to Anarlog.
  2. Open Settings → Teams.
  3. Enter a workspace name and click Create. If workspace creation is locked, upgrade to Pro first.
  4. If the workspace needs shared billing and Pro for every member, use Start Pro to continue to Pro checkout.

Use the workspace tabs at the top of Teams settings to switch between workspaces or create another one.

Invite and manage members

Workspace owners and admins can open Members to:

  • Invite a teammate by email
  • Resend or cancel a pending invitation
  • Change member roles within your own permissions; owners can add other owners
  • Remove a member

Accept an invitation

Sign in with the verified email address that received the invitation, then open Settings → Teams. Pending invitations appear under Invitations, where you can choose Accept or Decline without opening the email link. The app checks for invitations every minute and when you return to its window.

An invitation notification opens Teams settings. If an invitation is missing, check that you signed in with the invited email address and ask the inviter to confirm it has not expired or been canceled.

Membership billing and ownership

You do not need to purchase seats before inviting someone. Pending invitations do not add a billable member. Workspace billing adjusts when someone joins or leaves, with prorated changes included in the next scheduled invoice. Annual plans keep their annual billing cycle.

Owners can enable automatic joining for coworkers with a verified work email domain. Personal email domains such as Gmail are excluded, and previously removed members are not automatically readmitted.

A workspace can have several Owners and one Primary owner. Only the Primary owner can transfer primary ownership or delete the workspace. Other owners cannot remove or demote the Primary owner.

Primary ownership transfers require the recipient to accept. Until they accept, permissions stay unchanged. After acceptance, the previous Primary owner remains an Owner.

Deleting a workspace removes it for everyone in it, and cannot be undone. The Primary owner must transfer primary ownership before leaving if someone else should keep the workspace.

Share a meeting with the workspace

Open a meeting's Share panel and set General access to the workspace. Everyone in that workspace can then open the shared note. The meeting's private memo is not included.

See Share meetings for invitations, links, comments, and shared audio.

Send new notes to a workspace from a folder

Open a folder and choose Everyone in your workspace under Default access. Confirm the choice. New notes in that folder are shared once their summary is ready. Notes already in the folder keep their access. You can still change access on each note; see Share meetings.

Choose Only me to stop automatically sharing new notes in that folder. Use a meeting's Share panel to change access to an existing note.

Share a reusable resource

You can share a folder, template, or automation:

  1. Open the folder, template, or automation and click Share.
  2. Under Team library, choose a workspace.
  3. Click Add.

You can also invite one guest by email without adding them to the Team. A guest can access one shared item for free; add them as a Team member when they need more.

Shared resources appear under Shared with me in the corresponding Folders, Templates, or Automations view. Click one and choose Add a copy. The copy is yours to edit and does not change the shared original.

To change access, open Share on the original item. You can move it to another Team library, remove a guest, or choose Stop sharing.

Plans

  • Free keeps notes and local features on your computer.
  • Pro adds cloud features, sharing, shared workspaces, roles, Pro for every member, and centralized billing at $14/person/month or $140/person/year.
  • Enterprise can add organization controls such as sharing policies, usage visibility, a custom workspace subdomain, SSO, SCIM, retention, and managed capture.

See Anarlog pricing for current prices and plan availability.


Troubleshooting (`docs/troubleshooting.mdx`)


title: "Troubleshooting"

Audio is missing

Open Settings → Permissions and confirm:

  • Microphone is allowed so Anarlog can hear you.
  • System Audio is allowed so Anarlog can hear the other people on the call.

If a permission is denied, use Open to change it in your operating system's settings, then restart Anarlog.

On Linux, confirm that your desktop audio service can see the microphone and the output-monitor source. On Windows or Linux, include the app and operating-system versions if audio works in other apps but not in Anarlog.

On desktop 1.4.30 or later, a recording warning identifies an unavailable microphone or system-audio source. Check the device connection and permissions, then use Retry to restart the failed source without stopping the recording. Anarlog keeps capturing the source that still works. Audio missed while a source was unavailable cannot be recovered by retrying.

The transcript is not live

Open Settings → Transcription and check the selected model. Live models transcribe during the meeting. After recording models wait until you stop.

If transcription fails, confirm the provider is configured, the model supports your spoken languages, and a local provider is running.

No summary appears

A summary needs an Intelligence model. Open Settings → Intelligence, then select Anarlog Cloud or configure another provider.

For LM Studio and Ollama, confirm the local server is running. See Transcription and AI.

Calendar events are missing

Open Calendar and confirm the account is connected and the calendar is enabled. Refresh the calendar list. Reconnect any account marked Reconnect required.

For Apple Calendar, also check Settings → Permissions → Calendar.

A recording disappeared

Open Settings → Meetings and check Audio file retention under Audio. Anarlog can delete audio immediately or after a selected period while keeping the note and transcript.

See Data, privacy, and retention for every retention option.

An imported file does nothing

Audio imports accept WAV, MP3, OGG, MP4, M4A, FLAC, WebM, and AAC. Transcript imports accept SRT and VTT.

For audio, confirm that a Transcription model is selected and that a local provider is running. See Import audio or a transcript.

Meeting-history import shows no apps

Anarlog lists supported meeting assistants it detects on your computer. Open the source app, restart Anarlog, and return to Settings → Imports.

If you already removed the source app, reinstall it long enough to complete the import or export the transcript as SRT or VTT and import it into an empty note.

Chat has no meeting context

Open the meeting before opening Chat and wait for its transcript or summary to finish. The open meeting is added automatically when its content is available. If Chat still answers without it, start a new chat from that meeting and name the meeting in your request. If no Intelligence model is configured, open Settings → Intelligence.

See Chat with your meetings for context guidance and example requests.

Sharing does not work

Sharing requires Anarlog Pro, a signed-in account, an internet connection, and a generated summary. If a recipient cannot open the note, check their invitation and General access under Share.

For an Anyone with the link share, copy the current link again. Replacing a link invalidates the earlier URL. See Share meetings.

An automation did not run

Open Automations, select the automation, and check whether it is enabled and what its last run reports. Confirm that:

  • The destination channel, page, team, or folder is selected.
  • Slack, Notion, or Linear is still connected.
  • The meeting finished and produced the summary or action items the automation needs.
  • A local Markdown folder still exists and is writable.

See Automate meeting follow-up.

Cloud sync is blocked

Open Settings → Sync and use the message shown there:

  • Setup required: Create a recovery key or enter the existing key.
  • Sign in again or Identity mismatch: Sign out and sign back in with the account that owns the synced notes.
  • Device limit reached: Remove an unused device or use Get more slots in Settings → Sync → Devices to add slots to a personal Pro subscription. Your plan and add-ons determine the limit.
  • macOS Keychain error: Click Repair Keychain Access, then resume sync.
Do not move or delete local data while an identity problem is unresolved.

See Cloud sync.

Your cloud session has expired

In desktop 1.4.30 and later, use Sign in again in the session-expired message and complete browser sign-in with the same account. This reconnects cloud services while preserving your local account and notes. Revoked refresh credentials cannot recover through automatic retries.

Temporary rate limits or connection failures retry after a delay. Keep your local data while reconnecting.

The app does not open after installation

Confirm that you downloaded the build for your operating system and CPU. On Linux, make an AppImage executable before opening it:

bash
chmod +x ./anarlog-*.AppImage

For Debian or Ubuntu, install the DEB with sudo apt install ./anarlog-*.deb so the package manager can resolve dependencies. See Install the desktop app.

Linux opens a black window and plays music

First launch opens the setup screen and plays quiet background music. A black window with loud or looping audio usually means WebKitGTK failed to paint, most often on Wayland with NVIDIA.

Current builds disable the WebKit DMA-BUF renderer automatically. If the window is still black, launch with:

bash
WEBKIT_DISABLE_DMABUF_RENDERER=1 WEBKIT_DISABLE_COMPOSITING_MODE=1 ./anarlog-*.AppImage

The same variables work for the installed anarlog command. See Install the desktop app.

Get more help

Email [email protected], join Discord, or open a GitHub issue.

Include your operating system, Anarlog version, the exact error, what you expected, and the shortest steps that reproduce the problem. For AI failures, include the selected provider and model.

Never include API keys, recovery keys, meeting content, or private share links when reporting a problem.

For CLI and MCP errors, use the error reference.


Zoom (`docs/zoom.mdx`)


title: "Import Zoom meetings"

Connect Zoom to bring available meeting transcripts and summaries into your Anarlog notes. The connection reads meeting content; it does not change your Zoom meetings or recordings.

The Zoom connection is currently limited to approved test accounts while external access awaits Zoom review. If Zoom does not allow you to authorize Anarlog, use [file import](/import-recordings#import-a-transcript) instead.

Before you connect

  • Install Anarlog and sign in to your Anarlog account.
  • Use the Zoom account that owns the cloud recordings you want to import.
  • Your Zoom plan, account permissions, and meeting settings must make cloud recordings and transcripts or meeting summaries available. Anarlog cannot recover content that Zoom did not generate or no longer retains.
  • If your organization requires app approval, ask your Zoom administrator to approve Anarlog. Administrator approval does not override the current external-access restriction.

The importer checks roughly the past six months of cloud recordings. It imports available transcript text, summaries, action items, meeting titles, and dates. It does not copy audio or video. Meetings without a cloud recording are not discovered by this connection, even if they have a summary elsewhere in Zoom.

Connect Zoom

  1. Open Settings → Imports in Anarlog. You can also connect during the Bring your meeting history onboarding step.
  2. Find Zoom and select Connect. Sign in to Anarlog if prompted.
  3. In the browser, sign in to the intended Zoom account and review the requested permissions.
  4. Authorize Anarlog and return to the desktop app. Keep Anarlog open while the import completes.
  5. Review the import result and open the imported meeting notes.

The permissions let Anarlog identify your connected Zoom account, list your cloud recordings and retrieve available transcripts, and read meeting summaries. They do not let Anarlog edit meetings or recordings.

Import new meetings

While connected, Anarlog checks for new meetings while the desktop app is running. Open Settings → Imports → Zoom and select Sync now to request a check yourself.

Previously imported meeting IDs are skipped. Sync does not continuously replace existing Anarlog notes with later edits from Zoom. See Import meeting history for the import result categories.

Disconnect and remove access

  1. Open Settings → Imports in Anarlog.
  2. On the Zoom row, select Disconnect and complete the browser flow if prompted.
  3. Return to Anarlog and confirm that Zoom offers Connect again.

To revoke access directly in Zoom:

  1. Sign in to the Zoom App Marketplace with the connected account.
  2. Open My Library and find Anarlog.
  3. Under Actions, open the More menu, select Remove, and confirm the removal.

See Zoom's app removal instructions if your account's controls differ.

Disconnecting stops future imports. It does not delete notes already imported into Anarlog or recordings in Zoom. Delete unwanted imported notes separately in Anarlog. To reconnect, repeat the connection steps above.

Troubleshooting

Zoom is missing from Imports: Anarlog detects installed meeting apps. Open or install the Zoom desktop app, restart Anarlog, and check again.

Authorization is blocked: Check the test-account restriction above and your organization's app-approval requirements. Make sure you are signing in to the intended Zoom account.

Setup could not start: Check your internet connection, sign in to Anarlog, and try Connect again. If the error persists, contact support with the exact error and your Anarlog version.

No meetings were imported: Confirm that the connected account has accessible cloud recordings within the import window. Local Zoom recordings and meetings without cloud recordings are not included. If Zoom has no transcript or summary for a recording, Anarlog skips it. You can import an exported transcript or audio file instead.

A new meeting is missing: Wait for Zoom to finish processing the recording and its transcript or summary, then select Sync now. Keep Anarlog open during the import.

The connection expired or was removed: Disconnect the old connection in Anarlog, then select Connect to authorize again.

Data and support

Authorization and import requests pass through Anarlog's hosted API and its integration provider, Nango. Imported notes are stored locally in Anarlog; optional Cloud Sync and sharing follow your app settings. Read the Privacy Policy and Terms of Service.

For help, email [email protected]. Include your Anarlog version, operating system, the step that failed, and the error message. Do not send passwords or authorization tokens.


Agents Cli (`docs/agents/cli.mdx`)


title: "CLI for agents"

Use the global --json flag whenever an agent consumes CLI output.

A successful response contains schema_version, command, data, and optional pagination. Read results from data. Follow pagination.next_offset only when you need another page.

Meeting reads default to the local database. Use meetings --source cloud after anarlog auth login to read opted-in Cloud snapshots, or meetings --source auto to use Cloud only when the local database is absent.

Resolve meeting context

bash
anarlog --json meetings list --query "weekly planning" --limit 10
anarlog --json meetings get MEETING_ID
anarlog --json meetings --source cloud list --query "weekly planning" --limit 10

Search is case-insensitive across meeting titles and IDs. If several meetings match, ask the user to choose one.

Read the smallest useful surface

bash
anarlog --json meetings note MEETING_ID --kind note
anarlog --json meetings note MEETING_ID --kind summary
anarlog --json meetings history MEETING_ID --limit 10 --offset 0

Use meetings get when participants or action items matter. Use meetings note when note content alone is enough.

Stage an edit

bash
anarlog --json proposals create --meeting MEETING_ID --kind summary --content "Replacement markdown"
anarlog --json proposals list --meeting MEETING_ID
anarlog --json proposals show PROPOSAL_ID
anarlog --json proposals decline PROPOSAL_ID
The create command returns a pending proposal. Do not claim the meeting changed. Open the meeting in the desktop app to apply it, or decline it from the CLI or desktop app. Only pending proposals can be declined.

Transcripts

bash
anarlog --json meetings transcript MEETING_ID --limit 200 --offset 0

Transcript limits are measured in words. A page defaults to 200 words and caps at 500. Stop paging once you have enough evidence.

Diagnose setup

bash
anarlog --json doctor

The report includes the CLI version, resolved database path, read-only connection status, and schema readiness. When ready is false, the command still prints the report to standard output and exits with status 1.

Exports

Only export a complete meeting when the user explicitly requests a file:

bash
anarlog meetings export MEETING_ID --format markdown --output meeting.md
anarlog meetings export MEETING_ID --format json --output meeting.json
anarlog meetings --source cloud export MEETING_ID --format json --output meeting.json
Export refuses to replace an existing file. Use `--force` only after the user explicitly approves overwriting that exact path.

See the CLI reference for every option.


Agents Mcp (`docs/agents/mcp.mdx`)


title: "MCP for agents"

The Anarlog plugin prefers local data when your agent can access it. Use local MCP or the anarlog CLI on your computer. Remote agents connect to hosted Cloud MCP at https://api.anarlog.so/mcp with OAuth.

Local access needs no Cloud login, Pro subscription, or completed sync. Cloud only has opted-in readable snapshots, uploaded separately from encrypted Cloud Sync.

Configure the plugin

Install the Anarlog plugin and local CLI for local access. For Cloud access, enable Cloud API & Connectors and use the host's connection control to approve OAuth. Some MCP hosts prompt on first cloud tool use. See Cloud API and connectors.

Clients that do not install plugins can add:

json
{
  "mcpServers": {
    "anarlog": {
      "url": "https://api.anarlog.so/mcp"
    }
  }
}

Optional local MCP

The local server communicates over standard input and output. It opens no port and sends no meeting data to Anarlog's servers.

Open the desktop app once so it can create the database. The app does not need to stay open after that.

json
{
  "mcpServers": {
    "anarlog": {
      "command": "anarlog",
      "args": ["mcp"]
    }
  }
}

If anarlog is not on the client's PATH, use the executable's absolute path as command. Restart the client after changing its configuration.

For a custom database path:

json
{
  "mcpServers": {
    "anarlog": {
      "command": "anarlog",
      "args": ["--db-path", "/path/to/app.db", "mcp"]
    }
  }
}
If you configure both local and Cloud MCP, give them distinct server names so the agent can identify the source. Prefer local data and keep each meeting's subsequent reads on the selected source.

Use tools deliberately

Start with list_meetings, then pass a returned id to get_meeting. Call get_meeting_transcript only when the notes and summaries do not answer the question. Report only meetings the tools return and identify the source. An empty search only establishes that no meetings matched in that source. Check an available alternate source for missing meetings unless the user restricted access; do not invent titles or silently merge different versions.

Report sync status or snapshot freshness only when a tool provides it. A meeting's updated_at is not a last-sync timestamp. Local database errors need to be reported rather than hidden by a Cloud fallback.

Transcript pages default to 200 words and cap at 500. Follow pagination.next_offset only when you need more context.

Use get_recurring_meeting_history with a known meeting ID when a task depends on earlier meetings in the same series. Use export_meeting only when the task explicitly needs the complete record including transcripts.

Cloud MCP is read-only. To persist an edit, use the local CLI or local MCP propose_summary_edit or propose_memo_edit. The tool returns a pending proposal. Do not claim the meeting changed. Use list_proposals and get_proposal to inspect staged work. decline_proposal discards a pending proposal; applied or already-declined proposals cannot be declined.

The server also exposes MCP resources (anarlog://meetings/...) for Markdown or plain-text context when the client prefers resources over tools.

See the MCP reference for exact parameters and resources.


Agents Skills (`docs/agents/skills.mdx`)


title: "Anarlog skill"

The public Anarlog skill teaches agents a single workflow across Cloud MCP and the local CLI:

  1. Prefer local MCP or anarlog --json meetings --source local list when the agent can access your database.
  2. Use OAuth-connected Cloud MCP when running remotely or when local access is unavailable.
  3. Resolve meeting IDs from search results.
  4. Fetch meeting detail before transcript text.
  5. Keep transcript reads bounded and never access SQLite directly.

Sources

The published file is self-contained. The repository package adds references for setup, CLI commands, MCP tools, and errors.

Install the plugin

The Anarlog plugin bundles the skill and an optional hosted Cloud MCP connection. Install the Anarlog CLI for local access; no Cloud login or Pro subscription is needed. For remote access, enable Settings → Developers → Cloud API & Connectors with Pro access through a personal plan or an eligible paid Pro workspace membership and connect through OAuth.

The repository package is named **Anarlog**. Its optional hosted connection appears as **Anarlog Cloud**.

For Claude Code:

bash
claude plugin marketplace add fastrepl/anarlog
claude plugin install anarlog@fastrepl

For GitHub Copilot CLI:

bash
copilot plugin marketplace add fastrepl/anarlog
copilot plugin install anarlog@fastrepl

For ChatGPT and Codex, add the repository source, restart the ChatGPT desktop app, then install Anarlog from the Fastrepl source in the Plugins Directory:

bash
codex plugin marketplace add fastrepl/anarlog \
  --sparse .agents/plugins \
  --sparse agent-plugins/anarlog

Use the host's cloud connection control to sign in and approve OAuth. Some MCP hosts prompt on first cloud tool use. No cloud API key is required for OAuth connections. A skill-only installation does not create an account connection.

The Fastrepl plugin includes an optional Anarlog Cloud App connection for Codex. Leave it disconnected for local CLI access. Public directory listings have a separate review and release process from the repository marketplace.

Cursor Teams and Enterprise administrators can import https://github.com/fastrepl/anarlog as a team marketplace, then install Anarlog.

Install in an agent

Install it from the documentation site with the skills CLI:

bash
npx skills add https://docs.anarlog.so

For a filesystem-based agent, copy the complete skills/anarlog directory into that agent's skills directory. Keep the directory name anarlog so relative reference links continue to work.

Agent skill locations and installer commands vary by client. Follow your agent's skill installation instructions rather than copying only `SKILL.md`.

The contributor skills under .agents/skills are internal repository workflows. They are not part of the public Anarlog skill.


Recipes Meeting Prep (`docs/recipes/meeting-prep.mdx`)


title: "Prepare for a recurring meeting"

This recipe helps an agent prepare for the next occurrence of a recurring meeting without loading every transcript.

Call `list_meetings` with a short title query, or run:
text
```bash
anarlog --json meetings list --query "project sync" --limit 10
```

Resolve the latest relevant meeting ID from the results.
Call `get_meeting`, or run:
text
```bash
anarlog --json meetings get MEETING_ID
```

Extract open action items, decisions in notes or summaries, participants, and the meeting's series ID.
Call `get_recurring_meeting_history` with the meeting ID, or run:
text
```bash
anarlog --json meetings history MEETING_ID --limit 5 --offset 0
```

Fetch detail only for earlier meetings that appear relevant.
If a decision is unclear, call `get_meeting_transcript` with `limit: 200`, or run:
text
```bash
anarlog --json meetings transcript MEETING_ID --limit 200 --offset 0
```

Continue from `next_offset` only when needed.
Keep the output focused on unresolved actions, prior decisions, discussion topics, and useful context for named participants. Distinguish meeting evidence from your own inference.

Reference Api Cloud (`docs/reference/api-cloud.mdx`)


title: "Cloud API and connectors"

The Cloud API lets remote agents read your Anarlog meetings while the desktop app is closed. It requires Pro access, either from your personal plan or membership in an active paid Pro workspace, and stays off until you enable it.

Enabling Cloud API & Connectors uploads a separate server-readable copy of your meeting titles, notes, summaries, participants, action items, and transcripts. Your normal cloud sync data stays end-to-end encrypted. Turning the feature off deletes the server-readable copies.

Enable cloud access

  1. Open Settings → Developers → Cloud API & Connectors.
  2. Review the disclosure and turn the feature on.
  3. Wait for Anarlog to upload your existing meetings.
  4. If your client does not support OAuth, create a cloud API key and copy it. The key is shown once.

Keys start with anl_ and are stored hashed. Revoke a key from the same settings page when you no longer use it.

REST API

The base URL is https://api.anarlog.so/v1. Send your cloud key as a bearer token:

bash
curl \
  -H "Authorization: Bearer anl_..." \
  https://api.anarlog.so/v1/meetings

The read endpoints are:

Endpoint Returns
GET /v1/meetings Meeting list. Accepts query, series_id, limit (default 20, clamped to 1..200), and offset.
GET /v1/meetings/{meeting_id} Meeting metadata, the canonical memo, summaries, participants, and action items. Memo and summary bodies are markdown.
GET /v1/meetings/{meeting_id}/transcript Joined text, the raw words, and pagination. Accepts offset and limit (default 200, clamped to 1..500).
GET /v1/meetings/{meeting_id}/history Meetings in the same recurring series, newest first. Accepts limit and offset.
GET /v1/meetings/{meeting_id}/export Full export including transcripts. format=json (default) or format=markdown.

List responses carry a pagination object with offset, limit, returned, total, and next_offset; a missing next_offset means the page reached the end. See the OpenAPI document for the complete hosted schema.

Errors use this envelope:

json
{ "error": { "code": "not_found", "message": "meeting 'x' not found" } }

Codes: unauthorized, not_found, invalid_request, internal_error. The hosted API can also return:

  • 403 subscription_required when the account does not have Pro access through a personal plan or an active paid Pro workspace membership.
  • 403 cloud_api_not_enabled when the account has opted out.
  • 429 with a plain-text rate limit exceeded body and retry-after header when you exceed the hosted request limit.

The request limit allows a burst of 10 requests per account, then refills one request every 200 milliseconds.

Meeting snapshots are limited to 2 MB. When a snapshot is larger, Anarlog removes word-level transcript timing before upload but keeps the transcript text. If the snapshot is still larger than 2 MB, that meeting cannot upload. A hosted transcript without word timing returns the retained text with an empty `words` array.

Remote MCP

The Streamable HTTP endpoint is:

text
https://api.anarlog.so/mcp

It exposes the same five meeting-read tools as the local MCP server:

  • list_meetings
  • get_meeting
  • get_meeting_transcript
  • get_recurring_meeting_history
  • export_meeting

Hosts that support MCP OAuth 2.1 connect your Anarlog account without a cloud API key. The host discovers Anarlog's authorization server from the MCP endpoint, opens the Anarlog sign-in and consent flow, and stores the resulting connection.

Anarlog does not use identity scopes as meeting permissions. Meeting access remains limited to the server-readable snapshots you explicitly opted in to upload. Every MCP tool is read-only, and every access token is checked for its signature, issuer, expiry, MCP resource audience, and OAuth client identifier.

Anarlog publishes OAuth protected-resource metadata at:

text
https://api.anarlog.so/.well-known/oauth-protected-resource/mcp

The metadata points the host to Anarlog's existing Supabase authorization server. That server uses dynamic client registration and PKCE with SHA-256. The host sends the MCP resource value during authorization and token exchange; Anarlog binds issued OAuth tokens to https://api.anarlog.so/mcp and rejects tokens minted for another resource.

OAuth does not bypass Anarlog's product controls. The account must have Pro access through a personal plan or an active paid Pro workspace membership, and **Cloud API & Connectors** must remain enabled. Disabling the feature deletes the uploaded snapshots and makes existing connector tokens unusable for meeting access.

Claude Code

Install the Anarlog plugin:

bash
claude plugin marketplace add fastrepl/anarlog
claude plugin install anarlog@fastrepl

Or add the remote server directly. Claude discovers OAuth from the MCP endpoint:

bash
claude mcp add --transport http anarlog https://api.anarlog.so/mcp

Cursor

Import https://github.com/fastrepl/anarlog as a team marketplace and install Anarlog, or add this MCP server:

json
{
  "mcpServers": {
    "anarlog": {
      "url": "https://api.anarlog.so/mcp"
    }
  }
}

GitHub Copilot CLI

bash
copilot plugin marketplace add fastrepl/anarlog
copilot plugin install anarlog@fastrepl

ChatGPT and Codex

Add the Fastrepl source, restart the ChatGPT desktop app, then install Anarlog:

bash
codex plugin marketplace add fastrepl/anarlog \
  --sparse .agents/plugins \
  --sparse agent-plugins/anarlog

Public listing in a host's plugin directory is a separate review step. Installing from the Fastrepl source does not submit or publish the connector.

Grok Bot

Grok Bot has no settings form for custom MCP servers. Add Anarlog from a Bot conversation:

text
Add this custom MCP server: https://api.anarlog.so/mcp

Confirm the server details when the bot asks, then finish the Anarlog sign-in and consent flow in your browser. The Anarlog tools are available from your next message. Grok Bot runs in the cloud, so it can only reach the hosted endpoint, not local MCP.

Instinct

Add https://api.anarlog.so/mcp as an MCP connection in your Instinct account and name it Anarlog. Complete the Anarlog sign-in and consent flow with the account that has Cloud API & Connectors enabled. If Instinct asks for a token instead of opening a sign-in page, create a personal cloud API key and paste it as the bearer token.

Other OAuth MCP clients

Choose Streamable HTTP and use https://api.anarlog.so/mcp as the server URL. Do not paste an API key. The client must follow MCP OAuth 2.1 protected-resource discovery.

API-key clients

Use a static bearer header only when the host cannot complete MCP OAuth. Create the key under Settings → Developers → Cloud API & Connectors.

Claude Code

bash
claude mcp add --transport http anarlog https://api.anarlog.so/mcp \
  --header "Authorization: Bearer anl_..."

OpenAI Responses API

Pass the remote MCP URL and authorization header in the tool definition:

js
const response = await client.responses.create({
  model: "gpt-5",
  input: "Summarize my latest Anarlog meeting.",
  tools: [
    {
      type: "mcp",
      server_label: "anarlog",
      server_url: "https://api.anarlog.so/mcp",
      headers: {
        Authorization: "Bearer anl_...",
      },
      require_approval: "never",
    },
  ],
});

Muse

Meta Muse does not accept MCP servers. Instead, ask Muse to build a Custom Connector against the Anarlog REST API. Create a personal cloud API key named muse so you can revoke it separately, then send Muse:

text
Create a custom connector for Anarlog, my meeting notes. The base URL is
https://api.anarlog.so and the OpenAPI document is
https://api.anarlog.so/openapi.json. Only use the /v1/meetings operations.
Authenticate every request with the header "Authorization: Bearer <my key>".
It is read-only: list meetings, read a meeting, read its transcript, and
export it.

The OpenAPI paths already include the /v1 prefix, so the base URL is the bare host. Check that the first request Muse makes targets /v1/meetings, not /v1/v1/meetings.

Muse stores the key in its Secure Credentials Store; Anarlog never sees your Muse account. The connector appears under Settings → Connectors in Muse. Meta does not review custom connectors, so keep the key to yourself.

Poke

Poke does not complete MCP OAuth. Create a personal cloud API key in Anarlog and paste it only into your own Poke recipe or connection.

Do not share that key, put it in a public recipe, or reuse one key across users.

Other MCP clients

Choose Streamable HTTP, use https://api.anarlog.so/mcp as the server URL, and add:

text
Authorization: Bearer anl_...

Disable cloud access

Turn off Cloud API & Connectors under Settings → Developers. Anarlog immediately deletes all server-readable meeting snapshots. Your local meetings and end-to-end encrypted cloud sync data are unchanged.

Revoked keys cannot read snapshots. If you lose Pro access from both your personal plan and any paid Pro workspace memberships, existing cloud keys return subscription_required.


Reference Cli (`docs/reference/cli.mdx`)


title: "CLI reference"

Global syntax

text
anarlog [--base DIR] [--db-path FILE] [--json] <command>
Option Environment variable Behavior
--base DIR ANARLOG_BASE Use DIR/app.db.
--db-path FILE ANARLOG_DB_PATH Use an explicit SQLite file.
--json — Emit a versioned JSON response or machine-readable JSON error.

--db-path takes precedence over --base. Without either option, the CLI uses Anarlog's platform application-data directory and recognized legacy locations.

The installed command is anarlog on DEB, AppImage, macOS, Windows, and Settings-installed builds.

Account commands

bash
anarlog auth login
anarlog auth status
anarlog auth logout

auth login prints a URL that can be opened in any browser, including one on another device. Sign in, choose Copy URL on the completion page, then paste the anarlog://auth/callback link into the hidden CLI prompt. The CLI verifies the session with Anarlog before saving it in the same local auth store as the desktop app.

With --json, the login URL and instructions are printed to stderr. The callback URL is read from stdin. JSON appears on stdout only after login completes.

On Linux, the CLI uses Secret Service when it is available. Headless systems without Secret Service fall back to auth.cli.json in Anarlog's local application-data directory with permissions limited to the current user. The desktop app reconciles that file into Secret Service when it becomes available. On Windows, the CLI stores sessions with DPAPI in the desktop app's secure auth file. auth logout removes the local session; it does not delete the Anarlog account.

auth status reports the signed-in account and whether the current access token has expired. The stored refresh token lets the desktop app refresh an expired access token when it starts.

Meeting data sources

Meeting commands accept --source local|cloud|auto before their subcommand:

bash
anarlog meetings --source cloud list
anarlog meetings --source auto get MEETING_ID

local is the default and reads Anarlog's database on this computer. cloud reads the opted-in hosted snapshots using the account saved by anarlog auth login. auto uses the local database when it exists and falls back to Cloud when it does not. Set ANARLOG_SOURCE to choose the same behavior without a flag.

Ordinary meeting reads support all three sources except meetings folders and meetings list --folder. Managed capture, hold preservation, and pilot usage commands require local data. --base, --db-path, and doctor apply only to local data. Proposals and anarlog mcp remain local because hosted Cloud access is read-only.

Meeting commands

Command Options Result
meetings list -q, --query TEXT, --series-id ID, --folder PATH, --limit 1..200, --offset NUMBER Meetings ordered by the application query layer. Defaults to 20 results. --folder includes subfolders and is local only. Each meeting includes folder_path, or null outside a folder.
meetings folders -q, --query TEXT, --limit 1..200, --offset NUMBER Local folder paths with path, name, and parent_path, including empty and parent folders. Defaults to 100 results.
meetings get ID — Metadata, canonical memo, summaries, participants, and action items.
meetings note ID --kind note|summary|all The selected note documents. Defaults to note.
meetings transcript ID --limit 1..500, --offset NUMBER A bounded transcript word page. Defaults to 200 words from offset 0.
meetings history ID --limit 1..200, --offset NUMBER A page of meetings from the same recurring series. Defaults to 20 from offset 0.
meetings export ID --format markdown|json, -o, --output FILE, --force A complete meeting export, including transcripts. Defaults to Markdown on stdout. Existing files require --force.

Markdown exports include speaker-labeled transcript paragraphs when word-level speaker information is available. Exports without that information retain the flat transcript text. JSON exports can include a speakers field with the names used for rendering.

Proposal commands

These commands insert or inspect staged edits. They do not apply the edit to the meeting. Apply happens in the desktop app.

Command Options Result
proposals create --meeting ID, --kind summary|memo, --target ID, --content TEXT or --content-file FILE Stages a pending replacement. --target is required when the meeting has multiple summaries.
proposals list --meeting ID, --status pending|applied|declined|all, --limit 1..200, --offset NUMBER Proposals, newest first. Defaults to pending rows, 20 results.
proposals show ID — Proposal metadata and a unified diff.
proposals decline ID — Marks a pending proposal declined. The meeting is unchanged.

JSON response contract

Successful --json responses contain:

Field Meaning
schema_version CLI JSON contract version. Currently 1.
command Stable command identifier such as meetings.list.
data Command result.
pagination Page metadata when the command is paginated.

Pagination includes offset, limit, returned, optional total, and optional next_offset.

Doctor command

bash
anarlog --json doctor

Checks the resolved database path, read-only access, and required schema without changing data. It exits with status 0 when ready is true and status 1 when ready is false.

MCP command

bash
anarlog mcp

Starts the local MCP server over stdio. Meeting reads are idempotent. Proposal tools stage or decline pending edits without applying them to the meeting.

Do not write other output to the server's stdout. Anything else written there corrupts the MCP stdio protocol stream.

Help and version

bash
anarlog --help
anarlog auth --help
anarlog meetings --help
anarlog meetings list --help
anarlog --version

Managed local capture

anarlog meetings capabilities reports managed-settings, calendar-identity, recording-attachment, capture-completion, hold-inventory (including parentless history and files without database rows), pilot-usage, and conditional-delete support without opening a database.

anarlog meetings delete permanently removes a completed local meeting, its document history, transcripts, recordings, and derived search index. It requires --source local, --if-export-sha256 (the SHA-256 of the complete JSON export, either as printed to stdout with its final newline or as saved with --output), and --require-transcription-complete. Close the desktop app first. A changed export, unfinished transcript, cloud attachment, or shared record prevents deletion. An interrupted file removal can be resumed with the same meeting ID and hash.

A version 1 managed_settings.json beside the active app.db contains a settings object. Only supported capture settings are accepted, and secrets are rejected. Managed rows override user changes; malformed policy prevents database startup. intelligence_disabled: true disables all model connections, including local models. Transcription credentials remain in the OS credential store.

meetings initialize-managed (anarlog --json meetings --source local initialize-managed) creates or migrates the local database before first desktop launch. An existing managed_settings.json that disables intelligence is required; the desktop must be closed. No recording or permission prompt is started.

meetings hold-list (anarlog --json meetings --source local hold-list) enumerates local meeting IDs retained by sessions, child/history rows, capture-recovery markers and encrypted session revisions, including soft-deleted or missing parent rows and identities retained only by recording or legacy meeting files, in ID order. Filesystem traversal stays within the recorder sessions directory, refuses links and fails rather than truncating an oversized or unreadable inventory. Use --limit 1..200 and --after ID for keyset pagination; an empty data.ids array ends the inventory. Managed preservation agents can use --database-only to page database-owned identities while separately walking and preserving recording files with durable checkpoints. This mode skips filesystem discovery; its pages alone do not establish a complete hold inventory.

meetings hold-export (anarlog --json meetings --source local hold-export MEETING_ID) streams meeting-owned database cells and retained revisions from one read transaction as NDJSON. Each bounded cell frame carries the table, row key, column, SQLite storage type, byte offset, total length, and base64 bytes. Integer and REAL cells use round-trip text; TEXT and BLOB bytes remain exact. The header identifies the meeting and schema and lists recording_locations relative to the recorder sessions directory; sequences and the final SHA-256 cover every preceding line including its newline. An absent end frame means an incomplete snapshot. The archive includes tombstoned documents, live transcript deltas, per-session raw capture-recovery memos and related encrypted sync revisions. A parent session row is not required when owned records or meeting files remain. A files-only archive has no database cell frames; its header still identifies every discovered location, including moved copies. It excludes global settings, provider credentials and unrelated meetings. Recording files are preserved separately by the managed agent. With --database-only, the archive skips filesystem discovery and sets recording_files_separate: true with an empty recording_locations array. The agent must complete its separate file inventory and verify each catalogued attachment before treating preservation as complete. This local preservation archive is separate from normal meeting export and must not enter knowledge intake.

meetings pilot-usage requires --json and --source local. Supply --from-ms and --until-ms as Unix milliseconds for a half-open UTC window of at most 366 days. The command reads capture intervals from the native stop registry's locally persisted measurement ledger. It returns clocks, requested-live and live-at-stop flags, and coverage counts without meeting identifiers, text, titles, invitees, or provider credentials. The ledger is recorded for managed capture with intelligence disabled; it survives deletion of meeting content. Pauses are separate intervals. Older recordings, interrupted persistence, and pending sessions can leave coverage incomplete; inspect unmeasured_stops, invalid_metadata_records, pending_sessions, and legacy_sessions_without_measurement. Empty results do not prove no calls occurred. Capture durations and requested-live overlap measure recorder use, not provider billing or successful Teams capture. No report is uploaded automatically.


Reference Errors (`docs/reference/errors.mdx`)


title: "Errors and exit codes"

Without --json, CLI errors are written to standard error as human-readable text beginning with error:. With --json, errors contain schema_version and an error object with code, message, and exit_code.

Exit code Meaning Recovery
0 Success Consume stdout.
1 Database, Cloud API, or operation failure, or an unhealthy doctor report Read the reported action. For doctor, inspect the JSON report and confirm app and CLI compatibility.
2 Meeting, note, or other requested data not found List meetings again and use a returned ID.
3 Database file not found Open Anarlog once to create it, or provide the correct database path.
4 Export output already exists Choose another path or explicitly pass --force to replace the file.

Invalid arguments use the invalid_arguments error code with Clap's nonzero exit code.

Cloud meeting commands preserve hosted error codes: unauthorized, insufficient_scope, subscription_required, cloud_api_not_enabled, invalid_request, internal_error, and rate_limited. Re-run anarlog auth login for an expired session, enable Cloud API & Connectors for cloud_api_not_enabled, and follow the retry delay for rate_limited.

MCP maps missing meetings and proposals to invalid parameters. Validation and conflict failures—such as empty proposal content, multiple summaries without target_id, or declining a non-pending proposal—are reported as internal MCP errors. Database and serialization failures are also internal errors.

Do not recover by creating tables, running migrations, or issuing SQL. The desktop app owns schema initialization and migrations, and manual changes can corrupt the database.

Reference Mcp (`docs/reference/mcp.mdx`)


title: "MCP reference"

Run the server with anarlog mcp. It supports the current MCP 2026-07-28 protocol over stdio while remaining compatible with earlier MCP clients. Meeting reads are local and idempotent. Proposal tools can insert or decline staged edits; they never apply those edits. The desktop app only needs to have created the database once. Open it to review and apply pending proposals.

Tools

`list_meetings`

Parameter Type Default Notes
query string — Case-insensitive title or meeting ID substring. An empty result list means no matches; do not invent meetings.
series_id string — Exact recurring series ID.
folder_path string — Folder path from list_folders, such as Projects/Launch. Includes meetings in its subfolders.
limit integer 20 Clamped to 1..200.
offset integer 0 Number of results to skip.

Each meeting includes folder_path, which is null when the meeting is not in a folder.

`list_folders`

Parameter Type Default Notes
query string — Case-insensitive folder path substring.
limit integer 100 Clamped to 1..200.
offset integer 0 Number of results to skip.

Returns folders sorted by path, plus pagination. Each folder contains path, name, and parent_path (null for top-level folders). The list includes empty folders and parent folders. Pass a returned path as list_meetings folder_path.

`get_meeting`

Accepts required string meeting_id. Returns meeting metadata, including folder_path, the canonical memo, summaries, participants, and action items. Transcript words are intentionally separate.

`get_meeting_transcript`

Parameter Type Default Notes
meeting_id string required A returned Anarlog meeting ID.
offset integer 0 Word offset.
limit integer 200 Clamped to 1..500.

The result includes meeting_id, text, words, and a pagination object. Pagination contains offset, limit, returned, total, and next_offset. A missing pagination.next_offset means the page reached the end.

`get_recurring_meeting_history`

Accepts required string meeting_id plus optional integer limit and offset. The limit defaults to 20 and is clamped to 1..200; the offset defaults to 0. Results are newest first. When the meeting has no recurring series, meetings is empty.

`export_meeting`

Accepts required string meeting_id. Returns the complete structured meeting record, including metadata, notes, summaries, participants, action items, and transcripts. Prefer the smaller detail or transcript tools unless the task explicitly needs a full export.

When available, speakers provides the names referenced by transcript speaker assignments, and speaker_context records microphone and call context. These fields are optional; older or trimmed Cloud snapshots may omit them.

`propose_summary_edit`

Parameter Type Default Notes
meeting_id string required A returned Anarlog meeting ID.
content string required Complete replacement summary in markdown.
target_id string — Summary document ID. Required when the meeting has multiple summaries.

The result is a pending proposal. It does not change the meeting until a human applies it in the desktop app.

`propose_memo_edit`

Parameter Type Default Notes
meeting_id string required A returned Anarlog meeting ID.
content string required Complete replacement memo in markdown.

The result is a pending proposal. It does not change the meeting until a human applies it in the desktop app. content replaces the canonical meeting memo.

`list_proposals`

Parameter Type Default Notes
meeting_id string — Limit results to one meeting.
status string pending pending, applied, declined, or all.
limit integer 20 Clamped to 1..200.
offset integer 0 Number of results to skip.

`get_proposal`

Accepts required string proposal_id. Returns metadata and a unified diff.

`decline_proposal`

Accepts required string proposal_id. Marks a pending proposal declined without changing the meeting. Applied or already-declined proposals cannot be declined.

Resources

URI MIME type Content
anarlog://meetings/{meeting_id} text/markdown Meeting detail without transcript text.
anarlog://meetings/{meeting_id}/transcript{?offset,limit} text/plain A bounded transcript page. offset defaults to 0 and limit defaults to 200 (clamped to 500 words). Returns plain text only; use get_meeting_transcript for structured words.
anarlog://series/{series_id} text/markdown Up to 100 meetings in a recurring series.

Resource listing returns recent meeting resources in pages of 20. Its cursor is a numeric result offset.


Reference Webhooks (`docs/reference/webhooks.mdx`)


title: "Webhooks reference"

Webhooks let Anarlog push meeting events to your own endpoint. They are built into the desktop app and available on every plan. Configure them under Settings → Developers → Webhooks.

Meeting events include the note, summaries, participants, action items, and full transcript text. Only add an endpoint you trust.

To read meeting data instead of receiving it, use the CLI, the local MCP server, or the Cloud API.

Add an endpoint

  1. Open Settings → Developers → Webhooks.
  2. Enter an https:// URL and click Add webhook.
  3. Copy the signing secret (whsec_...). It is shown once.
  4. Click Test to send one webhook.test delivery and confirm your endpoint responds.
The signing secret is shown once during setup. Store it before leaving the page — Anarlog does not display it again.

A new endpoint is subscribed to all events. One installation can configure at most 64 endpoints.

Events

Anarlog delivers events as JSON POST requests while the desktop app is running.

Event Fires when
meeting.completed A recording session finishes.
note.enhanced An AI summary is generated for a meeting.
webhook.test You trigger a test delivery.

The payload envelope is:

json
{
  "id": "evt_...",
  "event": "note.enhanced",
  "created_at": "2026-07-28T09:00:00.000Z",
  "data": {
    "meeting": { "id": "...", "title": "...", "note": {...}, "summaries": [...], "participants": [...], "action_items": [...] },
    "transcript_text": "..."
  }
}

Meeting event deliveries time out after 10 seconds. Failed attempts retry after 5 and 30 seconds. A webhook.test request makes one attempt. Each request includes:

Header Content
x-anarlog-event Event name.
x-anarlog-delivery Unique delivery ID.
x-anarlog-timestamp Unix timestamp (seconds).
x-anarlog-signature sha256=<hex> — HMAC-SHA256 of the raw request body using your endpoint's whsec_... secret.

Verify signatures

Compute the HMAC over the exact raw body:

js
import crypto from "node:crypto";

const expected = `sha256=${
  crypto.createHmac("sha256", secret).update(rawBody).digest("hex")
}`;
const signature = request.headers["x-anarlog-signature"];
const received = typeof signature === "string" ? signature : "";
const valid =
  Buffer.byteLength(received) === Buffer.byteLength(expected) &&
  crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected));

Verify the raw body before parsing it. For replay protection, reject stale signed created_at values and store each payload id so retries are processed once.

Limits

Deliveries only run while the desktop app is open. Events that occur while it is closed are dropped, not queued for later delivery.

Anarlog delivers to at most 64 endpoints per event and runs at most 4 deliveries at a time.


Enterprise Docs Teams Capture (`enterprise/docs/teams-capture.md`)

Microsoft Teams enterprise capture

Selected connector

Anarlog does not use a Chromium bot against the Teams web client. That path is unsupported against current Teams terms and DOM churn.

The supported connector is a Microsoft Graph application-hosted media bot running as a Windows sidecar. The sidecar speaks the MIT MeetingSdkBridge protocol (JSON lines) to anarlog-enterprise-meeting-sdk-bridge-worker, which normalizes events onto the shared capture contract (CaptureProviderKind::MicrosoftGraph, MeetingPlatform::MicrosoftTeams).

Official alternative and constraints

Graph application-hosted media requires:

  • Azure subscription and a Teams app with application-hosted media
  • Windows Server for the media bot runtime
  • Certificate/app registration, organizer policy, and lobby admission under tenant admin control

This is not deployable on Linux-only clusters or a fully air-gapped network that cannot reach Teams/Graph.

Reliability matrix

Replay fixtures in enterprise/meeting-sdk-bridge-worker/tests/teams_reliability.rs cover:

Scenario Terminal reason
Admitted then capturing (non-terminal)
Lobby timeout admission_timeout
Organizer denied admission_denied
Removed by organizer removed_from_meeting
Meeting ended meeting_ended
Participant upsert / leave / captions non-terminal until host ends

Deployment modes

Mode Supported
Customer Azure + Windows Server sidecar yes
Linux-only Helm capture chart no (Meet/Zoom only)
Air-gapped / no Graph no
Browser worker against teams.microsoft.com no

Enterprise Docs Zoom Rtms (`enterprise/docs/zoom-rtms.md`)

Zoom RTMS enterprise capture

Anarlog captures Zoom through Realtime Media Streams, not a browser bot. The meeting materializes as an Anarlog session from RTMS audio, transcript, chat, and participant events.

Customer tenant prerequisites

  1. Zoom account on a plan that includes Zoom Developer Pack / RTMS.
  2. A Zoom app with RTMS scopes installed to the customer tenant (account-level).
  3. Host or admin approval for the Anarlog app, plus any required recording disclosure in the Zoom admin console.
  4. Webhook endpoint on the Anarlog control plane (POST /webhooks/zoom) with ANARLOG_ENTERPRISE_ZOOM_WEBHOOK_SECRET.
  5. Control-plane env:
    • ANARLOG_ENTERPRISE_ZOOM_CLIENT_ID
    • ANARLOG_ENTERPRISE_ZOOM_CLIENT_SECRET
    • ANARLOG_ENTERPRISE_ZOOM_ACCOUNT_WORKSPACES mapping Zoom account IDs to Anarlog workspace IDs

Runtime

The control plane verifies Zoom webhooks, creates a durable capture job, and hands the RTMS session to anarlog-enterprise-zoom-rtms-worker. Stream reconnect, terminal reasons, and meeting finalization follow the shared capture contract. There is no visible third-party browser participant.

Limits

  • RTMS cannot join meetings the Zoom account is not authorized to record.
  • Air-gapped deployments cannot reach Zoom's cloud media edge.
  • Video frames are metadata-only in v1; audio + transcript + chat + participants are the durable session.

Enterprise Deploy Docs Operations (`enterprise/deploy/docs/operations.md`)

Capture data plane operations

This is the customer-hosted meeting capture distribution. Evaluation Compose does not require an offline license. Production Compose and Helm do.

Layout

Mode Manifest License Typical use
Evaluation enterprise/control-plane/compose.yaml optional Single-box soak of the control plane
Production Compose enterprise/deploy/compose.prod.yaml required Compose on customer VMs
Production Helm enterprise/deploy/helm/anarlog-capture required Kubernetes

Pinned images live in the Compose files and Helm values.yaml. Do not float untagged latest.

Secrets

Customer-managed, never committed:

  • ANARLOG_ENTERPRISE_WORKSPACE_TOKENS / Helm workspaceTokens.existingSecret
  • ANARLOG_ENTERPRISE_LICENSE + ANARLOG_ENTERPRISE_LICENSE_KEY
  • Postgres and object-storage passwords
  • Optional Zoom client/webhook secrets
  • Optional customer STT URL (ANARLOG_ENTERPRISE_STT_URL)

Offline license validation uses HMAC-SHA256 over versioned claims. Telemetry is not exported; scrape /health/live and /health/ready from customer-owned collectors.

Health, backups, upgrades

  • Control plane liveness/readiness: /health/live, /health/ready.
  • Back up Postgres volume postgres-data (durable jobs, leases, scheduled captures), object storage object-data, and the Meet worker recordings PVC separately.
  • Schema migrations are additive. Roll forward by deploying the new image; roll back by redeploying the previous image so long as no -- breaking migration was applied.
  • Capture workers are fenced by durable leases. A crashed replica does not strand a job: another worker can reclaim after lease expiry.

Capture workers

Google Meet workers join as a visible Anarlog participant. If ANARLOG_ENTERPRISE_CAPTURE_JOB_ID is unset they poll dispatched calendar jobs for the workspace. Zoom uses RTMS in the control plane (no browser bot). Optional STT is customer-hosted; leaving ANARLOG_ENTERPRISE_STT_URL empty keeps transcript finalization local to whatever the worker is configured with.

Network

The data plane must reach the meeting platform (Meet, Zoom, or Teams). A fully air-gapped cluster cannot join public cloud meetings. Outbound policy should allow only the meeting provider, customer STT, and object storage.

Stock client

Point the stock Anarlog desktop/web client at the customer control plane workspace token and session ingest endpoints. No Fastrepl-operated capture service is required after this package is running.


Enterprise Docs Planning Access Control Remote Deletion (`enterprise/docs/planning/access-control-remote-deletion.md`)

Enterprise access control and remote deletion

ANLG-133. Spec only.

v1 admin surface

Roles: workspace owner, admin, member. Owners transfer/delete the workspace. Admins manage members, invitations, share policy, retention, SSO/SCIM domain, and usage overview. Members read allowed share scopes and honor them in the share panel.

Non-goals for v1: folder ACLs, per-note classification labels, MDM APIs, agent-specific roles, org-wide audit log UI beyond share access events.

Revocation

  • Remove member or SCIM deprovision: membership deleted_at, sync_devices deleted, E2EE workspace key rotation (ANLG-211).
  • Sign out everywhere revokes refresh tokens.
  • Offline devices keep local ciphertext until they next sync; they cannot decrypt rotated workspace keys.

Remote deletion

Retention job enforce_workspace_retention soft-deletes expired session_shares and drops snapshots. CloudSync then stops serving those rows; local mirrors delete on next sync. Hard technical constraint: a device that never comes online cannot be forced to wipe. v1 states that limitation instead of pretending MDM exists.

Audit: session_access_events is the share access log. Org-wide admin audit of exports/deletes is later.

Policy controls in v1

Allowed share scopes, default scope, retention days, model-training opt-out, consent notification default, require SSO.


Enterprise Docs Planning Compliance Procurement (`enterprise/docs/planning/compliance-procurement.md`)

Compliance and procurement roadmap

ANLG-136.

Immediate (sales/procurement, no certification claimed)

  • DPA, privacy policy, ToS, subprocessor list
  • Security questionnaire answers grounded in: local-first E2EE, customer-hosted capture option, metadata-only analytics, offline license, no mandatory telemetry
  • Incident response and access-review procedures for Fastrepl-operated cloud
  • Data residency: customer-hosted data plane in the customer's region; Fastrepl cloud is US unless a certified-cloud SKU exists

Certification programs (later, separately funded)

  1. SOC 2 Type I then Type II for Fastrepl-operated cloud and control plane
  2. ISO 27001 after SOC 2 evidence exists
  3. AIUC-1 for agent access once CLI/MCP permission boundaries are productized (ANLG-138)
  4. HIPAA: only if we take on BAAs for certified-cloud; self-hosted customers own their covered-entity posture

Do not claim "HIPAA compliant" or "SOC 2" in product copy until the named program is complete.


Parent: ANLG-135.

Posting a recording/transcription disclosure is an opt-in transport. A sent disclosure is not proof that every participant consented. Anarlog keeps disclosure delivery and consent evidence as separate product concepts.

V1 Slack huddle transport

  • consent_auto_send_chat defaults to false.
  • After listening starts, Anarlog may post one disclosure to the recognized native Slack Huddle chat (macOS Accessibility only).
  • Delivery is once-per-session, with bounded retry/cancellation. Posting failure never stops listening.
  • The disclosure is excluded from captured Memos.
  • Safe chat mutation stays disabled for Zoom, Meet, Teams, Webex, and browser surfaces until each has controlled live validation.
Event Product meaning
session_disclosure_attempts row with delivery = sent Transport evidence only
session_participant_consent.status = unknown Default, including late joiners
status = consented with source in explicit_chat_reply / explicit_ui That participant answered; not legal consent for the room
status = declined Stop listening. Still not a legal record of anyone else's choice

sessionHasLegalConsent() is always false. Schema CHECK constraints reject a disclosure_sent consent source. These tables are local-only and are not in CloudSync or the E2EE domain.

Decline, late joiners, unseen chat

  • Anyone declining stops listening.
  • Late joiners start unknown / unseen.
  • Participants who cannot see huddle chat remain unknown.
  • Regional defaults, DPA language, and whether chat replies are sufficient evidence are counsel questions, not product defaults.

Enterprise controls

Workspace admins can require or forbid auto-posting later via policy. They must not get an "everyone consented" dashboard derived from disclosure delivery.

Live verification

Slack huddle AX send is macOS-only (send_meeting_chat_message). Linux/cloud agents cannot complete controlled live huddle testing. Unit and fixture coverage lives in crates/detect and apps/desktop/src/stt/meeting-consent.test.ts.


Enterprise Docs Planning Deployment Options (`enterprise/docs/planning/deployment-options.md`)

Self-hosted and certified-cloud deployment

ANLG-137.

v1 recommended story

Ship a customer-controlled data plane: commercially licensed control plane + Postgres + object storage + Meet worker + optional Zoom RTMS, running in the customer's VPC. The MIT desktop/web client still runs on Mac and Windows endpoints. This is not AGPL and not an air-gapped meeting joiner.

Eval: enterprise/control-plane/compose.yaml. Prod: enterprise/deploy/compose.prod.yaml and Helm chart anarlog-capture. Operations: enterprise/deploy/docs/operations.md.

Later SKUs

  • Certified cloud: Fastrepl operates the same images in a named region under a BAA/DPA
  • Full self-host of sync/auth (Supabase) is a separate product; v1 still uses Fastrepl or customer Supabase for identity
  • Windows vs Mac local data paths stay in the MIT client; capture workers are Linux containers except the Teams Graph sidecar (Windows Server)

Tradeoffs

Customers who need "no Fastrepl in the data path for meetings" take the Helm chart. Customers who need "no public meeting egress" cannot capture Meet/Zoom/Teams. Customers who need Teams take Azure + Windows Server after the Meet reliability gate (ANLG-232).


Enterprise Docs Planning Inference Routing (`enterprise/docs/planning/inference-routing.md`)

Enterprise-controlled inference routing

ANLG-132.

Modes

Transcription:

  • Local machine (on-device STT already in the desktop app)
  • Customer-hosted STT (ANARLOG_ENTERPRISE_STT_URL on capture workers)
  • Approved third-party cloud (BYO key in settings)
  • Certified-cloud provider (later Fastrepl-operated region)

LLM:

  • Local model
  • Customer-hosted gateway
  • Approved external API (BYO key)
  • Certified-cloud provider (later)

Policy

Workspace policy model_training_opt_out defaults on for enterprise. Admins can disable external model calls by leaving only local/customer-hosted providers in the allowed set. The desktop AI settings surface names the destination ("this computer", "your gateway", "approved cloud") and never the plumbing.

v1 ships the policy flag and customer STT URL. Enforced provider allowlists in the LLM/STT proxies are the next implementation slice.


Enterprise Docs Planning No Lock In (`enterprise/docs/planning/no-lock-in.md`)

No-lock-in data and agent access

ANLG-138.

Promise

Customers can inspect, export, automate, and leave with their Anarlog data. Notes are local-first SQLite. Cloud holds ciphertext plus metadata. Agents see only what the user (or workspace policy) grants.

Durable surfaces (v1)

  • Desktop/CLI against the local SQLite canonical model
  • MCP tools that call the same local/session APIs
  • Structured export of sessions (markdown/JSON) from the client
  • Session ingest envelopes from the customer-hosted capture plane

Later

Versioned HTTP API for automation, workspace-scoped agent tokens, and offboarding bundles that include E2EE key material the customer already holds.

Boundaries

Local recordings and notes never become server-readable to satisfy an agent. Workspace remote deletion (ANLG-133) can drop cloud ciphertext; offline devices remain a disclosed limitation. Agent write-back is limited to the same session document schema the human editor uses.


Enterprise Docs Planning Owned Stack Roadmap (`enterprise/docs/planning/owned-stack-roadmap.md`)

Enterprise owned-stack readiness roadmap

Parent: ANLG-131.

Anarlog's enterprise position is that customers can own every sensitive part of the stack. The community application and shared contracts stay MIT. Enterprise orchestration, administration, deployment, licensing, and meeting-bot services are commercially licensed.

v1 advocacy vs later certification

v1 is a customer-controlled data plane plus admin controls that are true in product, not marketing:

  • Local-first notes on Mac and Windows
  • Customer-hosted capture (Google Meet visible bot, Zoom RTMS)
  • Workspace policies, SSO/SCIM, metadata-only usage analytics
  • Offline license validation, no mandatory telemetry
  • CLI/MCP/export as the no-lock-in surface

Later: SOC 2 / ISO 27001 / AIUC-1 / HIPAA programs, certified-cloud SKU, Teams Graph media bot in Azure, MDM remote wipe, virtual-camera disclosure.

Workstreams

Workstream Tickets v1 vs later
Capture data plane ANLG-223 and children Meet + Zoom v1; Teams after Meet reliability
Inference routing ANLG-132 Policy model v1; certified-cloud providers later
Admin / deletion ANLG-133, 216, 217, 218 Policies + SSO/SCIM + analytics v1; MDM later
Disclosure / consent ANLG-134, 135 Slack huddle transport v1; virtual camera later
Trust / procurement ANLG-136 Questionnaires and DPA v1; certifications later
Deployment SKUs ANLG-137, 233 Customer-hosted data plane v1; certified cloud later
No lock-in ANLG-138 CLI/MCP/export v1; public HTTP API later

Platform constraints

  • Mac and Windows both ship the MIT client. Linux is a cloud-agent/dev target, not a GA desktop SKU.
  • Local-first SQLite remains the source of truth on device. Cloud rows are ciphertext plus metadata.
  • Customer-hosted capture still needs egress to Meet/Zoom/Teams. Air-gap is "private data plane", not "join public meetings offline".

Enterprise Docs Planning Virtual Camera Disclosure (`enterprise/docs/planning/virtual-camera-disclosure.md`)

Virtual camera disclosure

ANLG-134.

Verdict

Not v1. Technically viable later on both Mac and Windows, with a high installer/signing cost and uneven meeting-app compatibility.

macOS

System extension / Camera Extension (CoreMediaIO) can publish a virtual camera. Meeting apps that list cameras (Zoom, Meet via Chrome, Teams) generally can select it. Requires notarization, TCC camera permission, and a separate extension target. Overlaying a "Recording" chip on the outgoing feed is the useful disclosure UX. Replacing the real camera entirely is too invasive for enterprise defaults.

Windows

A virtual camera driver (DirectShow / Media Foundation, or OBS-style) can do the same. Signing (EV cert + attestation) and enterprise deployment via Intune/MSI are the real cost. Teams and Zoom on Windows honor virtual cameras; some GPU capture paths do not.

Product decision

v1 disclosure is chat/email/bot-visible participant (ANLG-135), not a virtual camera. Revisit after capture reliability and when a customer is blocked on visual disclosure specifically.


--- METRICS ---