# Account > Manage your Garmingo profile, email, and verification settings. Your **Garmingo account** is the single sign-on for the website, dashboard, Garmingo Status, and Garmingo Voice. ## Profile [#profile] In [Account](/dashboard/account) you can: * Update your display name and profile image * Change your email address (confirmation required) * Review linked sign-in methods * Verify student status for discounted pricing (see [Student discount](/docs/general/student-discount)) ## Security [#security] For passwords, sessions, and two-factor authentication, see [Security](/docs/general/security). --- # Billing and usage > Subscriptions, invoices, cloud credits, and usage tracking. ## Personal billing [#personal-billing] Open [Billing](/dashboard/billing) to: * View active subscriptions and renewal dates * Download invoices * Update payment methods * Change plans for Voice and other products from [Purchases](/dashboard/products) → **Change plan** on an active subscription ## Usage [#usage] [Usage](/dashboard/usage) shows consumption for metered features, notably **Voice cloud credits** for AI-heavy workflows (long transcription, meeting summaries, compose mode in the cloud). Voice runs on-device by default; cloud usage only accrues when you enable cloud processing or exceed local capabilities. ## Legacy lifetime purchases [#legacy-lifetime-purchases] Lifetime licenses appear in Purchases with AppSumo-specific notes. Billing for those products is handled at purchase; manage seats like any other seat-based plan. --- # Getting started > Create your Garmingo account, activate a product, and take your first steps. This guide gets you from zero to a working setup in a few minutes. ## 1. Create an account [#1-create-an-account] Go to the [register page](/register) and sign up with your email. Confirm your address if prompted. ## 2. Get a product [#2-get-a-product] Open [Purchases](/dashboard/products) in your dashboard: * **Garmingo Status**: start with the free tier or choose a paid plan. * **Garmingo Voice**: pick monthly, annual, or lifetime; each includes cloud credits for AI features. ## 3. Activate and open [#3-activate-and-open] Each product has its own tab in the [dashboard](/dashboard) sidebar: | Product | Next step | | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | **[Garmingo Status](/dashboard/status)** | Open **Status**; you are redirected to [garmingostatus.com](https://garmingostatus.com). Your workspace is created automatically on first use. | | **[Garmingo Voice](/dashboard/voice)** | Open **Voice**; download the desktop app, link your device, then follow [Device activation](/docs/voice/device-activation). | ## 4. Go deeper [#4-go-deeper] * [Account settings](/dashboard/account): profile, email, student verification * [Garmingo Status quickstart](/docs/status): first monitor and status page * [Garmingo Voice overview](/docs/voice): enhancement, dictation, and meetings --- # Introduction > Welcome to the Garmingo documentation: platform guides plus Garmingo Status and Garmingo Voice. Welcome to the **Garmingo** docs. Here you will find guides for your account, billing, and every Garmingo product. ## Documentation sections [#documentation-sections] | Section | What it covers | | ---------------------------------------- | -------------------------------------------------- | | [General](/docs/general/getting-started) | Account, purchases, seats, organizations, billing | | [Garmingo Status](/docs/status) | Uptime monitoring, incidents, status pages, API | | [Garmingo Voice](/docs/voice) | Voice enhancement, dictation, recordings, meetings | ## Built for privacy [#built-for-privacy] Everything Garmingo ships is **made in Germany and hosted in the EU**. Garmingo Voice runs AI on-device by default, so your audio stays on your machine unless you choose cloud processing. > Press Cmd + K (or Ctrl + K) to search the docs. --- # Organizations > Shared purchases, seats, billing, and settings for groups on Garmingo. **Organizations** let you share purchases, seats, and billing with others, whether that is a company, a small team, a hobby project, or any group that is not tied to a single personal account. Organizations have their own **billing and payment methods**, separate from each member’s personal dashboard. ## Create or join [#create-or-join] * Create an organization from [Organizations](/dashboard/organizations) * Accept an email invitation from an admin to join an existing organization ## Organization areas [#organization-areas] | Area | Purpose | | ------------- | ------------------------------------------------- | | **Overview** | Summary of the organization and quick links | | **Members** | Invite people, assign roles, manage seats | | **Purchases** | Organization-owned product licenses | | **Usage** | Consumption metrics where applicable | | **Billing** | Invoices and payment methods for the organization | | **Settings** | Organization name, SSO, and advanced options | Switch between **personal** and **organization** scope using the workspace switcher in the dashboard sidebar. ## SSO [#sso] If your plan includes SSO, admins can configure single sign-on self-service under **Organizations → Settings → SSO**. --- # Privacy and hosting > Where Garmingo data is processed and how we approach privacy. ## EU hosting [#eu-hosting] Garmingo services are **made in Germany** and **hosted in the EU** by default. Operational data for Garmingo Status stays in EU regions. There are no surprise data residency changes. ## Garmingo Voice [#garmingo-voice] Voice is designed **privacy-first**: * **On-device processing**: audio enhancement, dictation, recordings, and meetings can all run locally on your machine. * **Cloud is optional**: for better performance on slower devices, you can enable cloud transcription and AI features. Cloud processing runs in the **EU**, and raw audio is never stored after processing completes. * **You control the mic**: Voice only processes audio when you start enhancement, dictation, recording, or a meeting. Read the full [Privacy Policy](/privacy) for legal details. ## Garmingo Status [#garmingo-status] Status stores monitor results, incidents, and status page content in your workspace. Public status pages only show what you publish. * **Worldwide monitoring**: checks can run from many regions worldwide; you choose the monitoring locations per monitor. * **EU data residency**: workspace data is stored in the EU only. Even when checks run from non-EU locations, nothing is persisted outside the EU. ## Your data rights [#your-data-rights] Account deletion and data export requests are handled per our privacy policy. Contact [support](/docs/general/support) if you need assistance. --- # Products and licenses > How purchases, plans, and product access work on Garmingo. Products are managed from [Purchases](/dashboard/products) in your personal dashboard. Each product also has its own sidebar tab (**[Status](/dashboard/status)** and **[Voice](/dashboard/voice)**), where you open the app, download installers, link devices, and manage seats for that product. ## Personal purchases [#personal-purchases] Each purchase includes: * A **plan** (monthly, annual, lifetime, or similar) * **Status**: active, trialing, or expired You can rename purchases, change plans where supported, and open each product from **Purchases** or from its dedicated dashboard tab (**Status** or **Voice**). ## Seat-based products [#seat-based-products] Some products (including Garmingo Status and team Voice plans) use **seats**: * Your plan defines how many seats you own * Each seat grants one person access, or one device (depending on the product) * Assign seats from **Purchases**, the product’s dashboard tab (**Status** or **Voice**), or from an organization’s member list See [Seats and devices](/docs/general/seats-and-devices). ## Organizations [#organizations] If you buy through an [organization](/docs/general/organizations), admins manage purchases under **Organizations → Purchases**. Members receive access when a seat is assigned to them. Organizations have their own billing and payment methods, separate from your personal account. --- # Seats and devices > Assign seats to teammates and link desktop apps to your account. ## Seats [#seats] Seats connect people to paid products: 1. Open [Purchases](/dashboard/products) and choose **Manage seats** on a seat-based product. 2. Assign a seat to yourself or invite a teammate by email. 3. The assignee sees the product in their dashboard and can open or download the app. Organization admins assign seats from **Organizations → Members** using the shared seat pool. Removing a seat revokes product access but does not delete the user’s Garmingo account. ## Garmingo Voice [#garmingo-voice] For installing Voice and linking it to your account, see [Installation](/docs/voice/installation) and [Device activation](/docs/voice/device-activation) in the Garmingo Voice docs. ## Device-based products [#device-based-products] For products that use device activation (such as Garmingo Voice), each seat typically covers one active device. To move to a new machine, unlink the old device in Purchases or activate again on the new computer. --- # Security > Passwords, sessions, and account security on Garmingo. ## Account security [#account-security] Manage security from [Settings → Security](/dashboard/settings/security): * Change your password * Review active sessions and sign out remotely * Enable two-factor authentication when available for your account ## Report issues [#report-issues] If you suspect unauthorized access, change your password immediately and contact [Support](/docs/general/support). --- # Student discount > Verify student status for reduced pricing on eligible Garmingo products. Garmingo offers **student pricing** on selected products after verification. ## Verify [#verify] 1. Sign in to your Garmingo account. 2. Open [Account settings](/dashboard/account) and start student verification from there. 3. Complete the flow with your academic email or approved provider. 4. Once approved, student pricing appears at checkout and in [Purchases](/dashboard/products). Verification may expire; renew before it lapses to keep discounted rates. Student status is tied to your account profile, not to individual organizations. --- # Support > How to get help with Garmingo products. ## Self-service [#self-service] * **Documentation**: you are here; use search for quick answers. * **Status product**: in-app **Help & support** shows your Support ID, Support PIN, and Workspace ID for faster tickets. ## Contact [#contact] * **Discord**: [discord.gg/c7UQ2ca](https://discord.gg/c7UQ2ca) for community help * **Email**: [support@garmingo.com](mailto:support@garmingo.com) for any question or issue ## Premium support [#premium-support] **Garmingo Status** Enterprise and eligible plans include **Premium Support (24/7)** with direct contacts listed in the Garmingo Status app sidebar. When opening a ticket, include: * Your Garmingo account email * Product (Status, Voice, or platform) * Support ID / Workspace ID (Status) or purchase name (Voice) --- # Getting Started with Status > What Garmingo Status is, how to launch in minutes, and where to go next. Garmingo Status monitors your services, manages incidents and maintenance, publishes status pages, and keeps stakeholders informed through integrations and compliance reports. Open the app at [garmingostatus.com](https://garmingostatus.com). Your **Garmingo account** handles login, billing, and seats; manage licenses on [garmingo.com/dashboard/products](/dashboard/products). ## What is Garmingo Status? [#what-is-garmingo-status] Garmingo Status is an uptime and incident communication platform. It runs automated checks from multiple regions, alerts your team when something breaks, and gives customers a clear public (or private) status page. Core capabilities: * **Monitors**: HTTP, ICMP, TCP/UDP, heartbeat, SSL, DNS, SMTP, and manual checks * **Status pages**: block-based editor with themes, custom domains, and branding controls * **Incidents**: structured timelines for unexpected outages * **Maintenance**: one-time or recurring windows that suppress false alerts * **Integrations**: 15 notification channels (Slack, email, SMS, webhooks, and more) * **Compliance**: uptime targets and PDF reports (Standard plan and above) * **API**: REST endpoints and a JavaScript SDK for automation ## Quickstart (5 minutes) [#quickstart-5-minutes] 1. Sign in at [garmingostatus.com](https://garmingostatus.com) with your Garmingo account. 2. Create or select a **workspace** (Status instance). 3. Add an [HTTP monitor](/docs/status/monitors/create) pointing at a health endpoint. 4. Create a [status page](/docs/status/pages/create) and attach the monitor in a status block. 5. Add a [Slack or email integration](/docs/status/integrations/notifications) scoped to that monitor. 6. Pause the monitor briefly to confirm alerts and walk through [creating an incident](/docs/status/incidents/create). ## Documentation structure [#documentation-structure] | Topic | Start here | | ------------ | ------------------------------------------------------ | | Dashboard | [Introduction](/docs/status/dashboard/introduction) | | Monitors | [Introduction](/docs/status/monitors/introduction) | | Status pages | [Introduction](/docs/status/pages/introduction) | | Incidents | [Introduction](/docs/status/incidents/introduction) | | Maintenance | [Introduction](/docs/status/maintenance/introduction) | | Integrations | [Introduction](/docs/status/integrations/introduction) | | Compliance | [Introduction](/docs/status/compliance/introduction) | | Settings | [Introduction](/docs/status/settings/introduction) | | API | [Introduction](/docs/status/api/introduction) | ## Plans and limits [#plans-and-limits] Limits depend on your plan (Free, Starter, Standard, Business). Common entitlements include monitors, status pages, integrations, maintenance windows, minimum check interval, team members, custom domain, custom CSS, and compliance reports. See the [Status pricing page](/status#pricing) for current limits. ## Support [#support] * Email: [support@garmingo.com](mailto:support@garmingo.com) * Discord: [discord.gg/c7UQ2ca](https://discord.gg/c7UQ2ca) * Hours: Monday–Friday, 08:00–20:00 CET When contacting support, include your **Support ID** and **Workspace ID** from **Help & support** in the Status sidebar. Share your **Support PIN** only when staff ask for it. [Product page](/status) · [API reference](/docs/status/api/introduction) --- # AI processing > On-device vs cloud processing, downloads, and quality tiers. Voice can run speech and AI features **on your computer** or in the **cloud**; you choose per feature in Settings or during onboarding. ## Processing locations [#processing-locations] | Mode | Best for | | ------------- | -------------------------------------------------------------------------------- | | **On-device** | Privacy-sensitive work, offline use, lower latency | | **Cloud** | Maximum accuracy on long audio, weaker hardware, compose mode at highest quality | Cloud processing runs in the **EU** and does not keep your raw audio after the request completes. ## Quality tiers [#quality-tiers] Many features offer **Lite**, **Small**, **Balanced**, and **Ultra** quality: * **Lite**: fastest, smallest download, good for everyday use * **Small**: step up from Lite with better accuracy on longer or noisier speech * **Balanced**: default recommendation for most users * **Ultra**: highest quality when your machine supports it Not every tier is available for every feature. For example, local Composer LLMs use **Small**, **Balanced**, and **Ultra**, while transcription also includes **Lite**. ## Recommended models for your hardware [#recommended-models-for-your-hardware] Voice scans **GPU VRAM**, **system RAM**, and **free disk space** when you open Settings or the Models page. It classifies each downloadable model and highlights what fits your machine. ### Green shield: recommended tier [#green-shield-recommended-tier] A **green shield** marks the tier Voice recommends for that feature: * In **model pickers** (dictation, meetings, Composer, and similar): next to the best installed option classified as **Fits**, or next to **Cloud** when no local model fits well enough * On **Settings → Models**: beside the highest tier in each group that **Fits** your hardware Hover the shield in the desktop app for the exact reason (for example, best installed model that fits your VRAM). You can still pick any tier manually; the shield is guidance, not a lock. ### GPU icon: hardware compatibility [#gpu-icon-hardware-compatibility] On **Settings → Models**, each row also shows a colored **GPU** icon: Click the GPU icon in the app for a short compatibility breakdown and hardware details. ### Cloud in pickers [#cloud-in-pickers] **Cloud** appears at the top of many model lists with a cloud icon. Voice may recommend Cloud when no local LLM is classified as **Fits**, or when cloud quality is the better default for your setup. Cloud usage consumes [credits](#credits). ## Downloads [#downloads] Open **Settings → Models** (or the Models section during onboarding) to download or remove language packs and AI components. A progress indicator appears in the sidebar during downloads. ## Offline fallback [#offline-fallback] If cloud processing is unavailable, Voice falls back to on-device modes when possible and shows a clear notice in the app. ## Credits [#credits] Cloud usage consumes **credits** from your Voice plan. Track balance on [Purchases](/dashboard/products) and [Usage](/dashboard/usage). Credits are used whenever you run cloud AI models. Heavier models and longer sessions use more; the hours below are a rough estimate of how far your allowance goes. ### Included per plan [#included-per-plan] | Plan | Credits | Approx. cloud time | | -------------------------- | ------- | ------------------ | | **Subscription · Monthly** | 10,000 | ≈ 30h | | **Subscription · Annual** | 120,000 | ≈ 360h | | **Lifetime** | 150,000 | ≈ 450h | ### Need more? [#need-more] Turn overage on or off anytime in [Purchases](/dashboard/products). With overage enabled, usage beyond your allowance costs **€2.50 per 1,000 credits**. On-device processing does not consume cloud credits. --- # Device activation > Link Garmingo Voice to your account with a pairing code or deep link. Voice must be linked to your Garmingo account before you can use your subscription. ## Activate from the app [#activate-from-the-app] 1. Open Garmingo Voice after installation. 2. Sign in with your Garmingo account **or** enter the pairing code from the **[Voice](/dashboard/voice)** dashboard tab. 3. Voice confirms activation and continues to onboarding. ## Activate from the browser [#activate-from-the-browser] 1. Open **[Voice](/dashboard/voice)** in the dashboard and click **Link device** or **Open in app**. 2. Your browser opens Voice via a secure deep link with a one-time code. 3. Confirm in Voice when prompted. ## Troubleshooting [#troubleshooting] | Issue | Fix | | ------------- | ------------------------------------------------------------- | | Code expired | Generate a new link from the **Voice** dashboard tab | | Wrong account | Sign out in Voice and activate again with the correct account | | No license | Assign yourself a seat on the Voice purchase first | See [Seats and devices](/docs/general/seats-and-devices) for seat assignment. --- # System-wide dictation > Dictate into any app with a global hotkey and low-latency transcription. Dictation works across your system: email, docs, tickets, and chat. Press the hotkey, speak, and text appears where your cursor is. ## Quick start [#quick-start] When Voice is listening, a compact **overlay** floats above other apps. It shows: * A **red stop** button to end the session * Your configured **hotkey** (default below) * A live **waveform** while you speak ### How to dictate [#how-to-dictate] 1. Place the cursor in any text field (Mail, Slack, browser, IDE, etc.). 2. Press your dictation hotkey (see below). 3. Speak naturally; the overlay confirms Voice is listening. 4. Press the hotkey again or tap **Stop** on the overlay to finish. 5. Text is inserted (or shown in the review window first, depending on mode). Enhancements do not need to be running for dictation, but clean input helps accuracy. Start the engine bar on the dashboard if you want processed audio feeding transcription. ## Default hotkey [#default-hotkey] ```bash Cmd + Shift + Space # macOS Ctrl + Shift + Space # Windows ``` Change shortcuts under **Settings → Dictation** or **Hotkeys**. ## Delivery modes [#delivery-modes] | Mode | Behavior | | ---------- | ------------------------------------------------------------- | | **Direct** | Transcribed text is inserted into the focused app immediately | | **Review** | A floating review window lets you edit before copy or insert | Set **Result delivery** under **Settings → Dictation**. In Review mode you can insert, copy, or dismiss with dedicated shortcuts while the window is open. Pair **Review** with Composer when you want AI polish **and** a final check before anything lands in Mail, CRM, or ticket fields. ## Composer [#composer] **Composer** is Voice’s AI rewrite layer for dictation. You speak naturally (fillers, false starts, spoken punctuation, and all), and Composer turns the raw transcript into polished text **before** it is inserted. That makes it much more than a straight transcript: Composer understands **where** you are dictating and shapes layout accordingly (greetings and sign-offs in mail clients, tighter lines in chat, paragraph breaks in docs, and so on). ### What Composer does [#what-composer-does] * Removes filler words and stutters while keeping everything you actually said * Adds proper punctuation, including from spoken cues like “comma”, “new line”, or “period” * Applies **context-aware formatting** based on the frontmost app (Mail, Slack, your browser, etc.) * Splits long passages into readable paragraphs * Optional **tone**: Formal, Neutral, or Casual * Optional **Fix spelling** and **Extended thinking** for higher-quality rewrites * **Voice commands** in the same pass (e.g. “replace Alex with Nina”) when enabled ### Choose a Composer model [#choose-a-composer-model] Under **Settings → Dictation**, set **Input type** to **Compose**. The **Composer** section appears with: | Setting | What it controls | | --------------------- | ----------------------------------------------------------------------------- | | **AI Model** | Local Composer model (on-device) or a cloud LLM from your configured provider | | **Tone** | Formal, Neutral, or Casual rewrite style | | **Fix Spelling** | Grammar and spelling cleanup | | **Extended Thinking** | More reasoning before output; slower, often better on messy dictation | | **Voice Commands** | Spoken layout and edit cues in the same LLM pass | Install a local Composer model from **Settings → Models**, or point Voice at a cloud LLM under **Settings → Cloud AI**. See [AI processing](/docs/voice/ai-processing) for on-device vs. cloud trade-offs. Composer uses cloud credits when a cloud model is selected. Local Composer models run on your machine with no per-dictation cloud charge. ### Review before you insert [#review-before-you-insert] Composer is powerful, but it is still AI. It can mishear a name, drop a detail, or smooth phrasing in a way you did not intend. For complex dictation, use **Review** as your result delivery mode. You get Composer’s polished draft in an editable window first, then choose **Insert** or **Copy** only when it looks right. Always read Composer output before sending external mail or submitting tickets. When in doubt, enable **Review** and keep **Fix spelling** on so names and numbers are easier to spot. ## While dictating [#while-dictating] The overlay stays visible until you stop. You can move between apps before you finish; when dictation ends, Voice inserts the text wherever your cursor is focused. ## History [#history] Past dictations are saved under **Dictate** in the sidebar: search, copy, or correct entries later. ## Tips for accuracy [#tips-for-accuracy] * Speak in short phrases with natural pauses. * Keep a consistent distance from the microphone. * For sensitive content, use **Review** delivery and prefer **on-device** processing in [AI processing](/docs/voice/ai-processing). * Add product names and jargon to **Custom vocabulary** under dictation settings. --- # Garmingo Voice overview > On-device AI for voice enhancement, dictation, and meetings, private by design. **Garmingo Voice** is a desktop app for clearer calls, fast dictation, recordings, and meeting notes, with **on-device processing by default**. Available on **macOS** and **Windows**. Garmingo Voice app ## What you can do [#what-you-can-do] | Feature | Description | | -------------------------------------------------- | ----------------------------------------------------------------------------------- | | [Voice enhancement](/docs/voice/voice-enhancement) | Real-time mic processing for Zoom, Teams, Discord, and more | | [Dictation](/docs/voice/dictation) | Speak into any app with a global hotkey | | [Recordings](/docs/voice/recordings) | Capture audio, transcribe, and ask AI questions about the transcript | | [Meetings](/docs/voice/meetings) | Live notes with speaker labels and summaries; ask AI questions about the transcript | ## Privacy model [#privacy-model] * **On-device by default**: your audio stays on your computer for enhancement and local speech features. * **Cloud when you choose it**: optional cloud processing for higher accuracy or long sessions; processed in the EU without storing raw audio afterward. * **Credits**: cloud features draw from your plan’s credit pool; manage overage in [Purchases](/dashboard/products). ## Next steps [#next-steps] 1. [Install](/docs/voice/installation) Voice on macOS or Windows 2. [Activate your device](/docs/voice/device-activation) 3. Complete [onboarding](/docs/voice/onboarding) once --- # Installation > Download and install Garmingo Voice on macOS or Windows. ## Download [#download] 1. Sign in at [garmingo.com](https://garmingo.com). 2. Open **[Voice](/dashboard/voice)** in the dashboard sidebar and click **Download** for your platform (macOS or Windows). Alternatively, use the download button on the [Voice product page](/voice). Garmingo Voice is available on **macOS** and **Windows**. See [System requirements](/docs/voice/system-requirements) for supported versions. ## System requirements [#system-requirements] See [System requirements](/docs/voice/system-requirements) for OS versions, RAM, and disk space. ## After install [#after-install] Launch Voice; you will be prompted to [activate your device](/docs/voice/device-activation) before using paid features. macOS may ask for microphone and accessibility permissions during onboarding. Grant them so dictation and enhancement work system-wide. --- # Meetings > Live meeting notes with speaker labels, summaries, and export. **Meetings** listens to a call or room audio and builds a live transcript with **speaker labels**, then a **summary** when you finish. ## Quick start [#quick-start] Click **New Meeting** above to start a live session. Voice detects speakers, shows level meters for **You** and **Marcus L.**, and streams transcript segments as people talk, synced to the same demo audio as on the homepage. ### How to run a meeting [#how-to-run-a-meeting] 1. Route call audio through **Garmingo Voice Speaker** (macOS) or **Garmingo Voice** (Windows) when possible, so Voice captures both your mic and remote participants. 2. Click **New Meeting** on the dashboard or tray. 3. Watch the live transcript build with speaker labels. 4. Click **Stop Meeting** when finished; Voice saves the session for summary and export. Keep enhancements running if you want your microphone processed before it reaches the meeting capture pipeline. ## Start a meeting [#start-a-meeting] From the **Dashboard** or **tray**, click **Start meeting**. Voice captures audio from your configured input, typically your mic plus meeting playback routed through **Garmingo Voice Speaker** (macOS) or **Garmingo Voice** (Windows) when you use that device in the call app. ## During the meeting [#during-the-meeting] * Live transcript updates as people speak * Speaker segments are labeled; rename speakers afterward for clearer notes * Re-run speaker grouping if needed after the session * **You** and **Others** level meters show mic vs. system/call audio activity ## After the meeting [#after-the-meeting] This is a limited interactive mock of the Meetings library, not the full desktop app. Controls are simplified and some flows are scripted for documentation. Select **Milestone scope review** in the sidebar to try playback, **Generate** a summary, click transcript segments to jump in the audio, and open **Ask AI** for a sample follow-up chat. * Generate or refresh the **summary** * Export transcript (Markdown) or audio * Ask follow-up questions in the built-in chat ## Settings [#settings] **Settings → Meetings** controls whether audio is saved, auto-summary behavior, and which AI quality tier to use for summaries. Meeting features may use cloud credits when cloud processing is enabled. Local processing is used when available on your machine. --- # Onboarding > First-run setup for permissions, the Garmingo audio driver, and AI preferences. Onboarding runs the first time you open Voice (or after you reset it in **Settings → Advanced**). ## Steps [#steps] 1. **Welcome** — Overview of enhancement, dictation, and recordings. 2. **Model strategy** — Choose **Recommended**, **Cloud**, or **Custom** processing. Recommended balances quality and privacy on your hardware. 3. **Dictation & meetings** — Enable features you plan to use and set basic preferences. 4. **Permissions** — On macOS, grant **Accessibility** access so Voice can type into other apps. macOS also prompts for **Microphone** access when Voice first captures audio. 5. **Audio driver** — Install the **Garmingo Voice audio driver** with **Install Driver**. It creates **Garmingo Voice Microphone** and **Garmingo Voice Speaker** on macOS (on Windows, select **Garmingo Voice** in other apps). You can skip and install later from **Settings → Audio**. 6. **Done** — Open the dashboard and start processing. Model downloads continue in the background (see **Settings → Models**). You can change every choice later in [Settings](/docs/voice/settings) and [AI processing](/docs/voice/ai-processing). --- # Privacy and credits > How Voice handles your audio and cloud credit usage. ## Privacy [#privacy] * Microphone audio is processed **only when you start** enhancement, dictation, recording, or a meeting. * **On-device** features never send raw audio to Garmingo servers. * **Cloud** features send audio only for the active request; nothing is stored afterward. * Dictation history and recordings stay **on your device** unless you export them. * After activation, on-device dictation and transcription keep working **offline for several days** before a quick online recheck. Full legal terms: [Privacy Policy](/privacy). ## Cloud credits [#cloud-credits] Your plan includes a monthly or lifetime pool of **cloud credits** for AI-heavy tasks (long transcription, meeting summaries, compose mode in the cloud). * View remaining balance in the Voice app and on [Usage](/dashboard/usage) * Enable or disable overage in [Purchases](/dashboard/products) if your plan supports it Use on-device processing for everyday dictation; reserve cloud for long meetings or when you need the highest accuracy. --- # Recordings > Record audio, transcribe sessions, and chat with your transcript. **Recordings** captures enhanced or raw audio, then helps you work with the result. ## Quick start [#quick-start] Click **Record** above to see the in-app recording state (pulsing indicator, timer, and live waveform), exactly as on the Recordings page while a session is active. ### How to record [#how-to-record] 1. Open **Recordings** in the sidebar, or use the dashboard / tray shortcut. 2. Click **Record** (or press your recording hotkey). 3. Speak or capture the audio you need; the waveform reacts in real time. 4. Click **Stop** to save the file to your library. 5. Open the recording to transcribe, ask AI questions, or export. If you record **enhanced** audio (default in **Settings → Recording**), start the enhancement engine first so the virtual mic pipeline is active. ## Record [#record] Start from: * **Dashboard** → Record * **Tray popup** → Record * Your configured **recording hotkey** While recording, Voice shows a live waveform on the Recordings page. Stop to save a file to your library. ## After recording [#after-recording] This is a limited interactive mock of the Recordings UI, not the full desktop app. Controls are simplified and some flows are scripted for documentation. The library lists all saved recordings on the left. Select one to open the detail view: | Action | What happens | | ------------------ | ------------------------------------------------------------------------------------------------------------------- | | **Play / Pause** | Listen to the recording; progress moves through the waveform | | **Remove Silence** | Trims quiet gaps (demo uses the same audio clip as the homepage; the waveform shortens and a tighter version plays) | | **Transcript** | Timestamped segments you can click to jump (after transcription) | | **Ask AI** | Opens a chat dialog; a sample conversation plays automatically; the input is read-only | Try **Sarah project update** in the sidebar: play the audio, click **Remove Silence**, then **Ask AI**. You can also: * **Transcribe**: on-device or cloud, depending on your [AI processing](/docs/voice/ai-processing) settings * **Export**: share audio or text ## Settings [#settings] Under **Settings → Recording**, choose format, whether to capture enhanced or raw audio, and default transcription quality. --- # Settings > App preferences for audio, dictation, hotkeys, meetings, and advanced options. Open **Settings** from the sidebar to configure Voice. ## Tabs [#tabs] | Tab | Controls | | ------------- | ---------------------------------------------------------------------------------- | | **General** | Theme, language, launch at login, account sign-out | | **Audio** | Input/output devices, Garmingo audio driver install, audio tuning, AI acceleration | | **Recording** | File format, enhanced vs raw source, transcription defaults | | **Dictation** | Hotkey, toggle vs push-to-talk, compose mode, language, auto-stop, history | | **Hotkeys** | Dictation, recording, toggle processing, result review (copy, insert, close) | | **Meetings** | Recording behavior, auto-summary, summary model | | **Models** | Download and remove AI components (see [AI processing](/docs/voice/ai-processing)) | | **Advanced** | Logs, reset onboarding, open data folder, updates | Changes apply immediately unless noted. Restart processing after audio device changes if levels look wrong. ## Hotkeys [#hotkeys] **Settings → Hotkeys** configures system-wide shortcuts. Result-review shortcuts only work while the review overlay is open after dictation. | Shortcut | Default (macOS / Windows) | What it does | | --------------------- | ------------------------- | -------------------------------------------------------------------------- | | **Dictation** | `⌘⇧Space` / `Ctrl⇧Space` | Start and stop dictation (toggle), or hold to dictate in push-to-talk mode | | **Toggle processing** | *(not set)* | Mute or unmute the audio enhancement engine output | | **Recording** | *(not set)* | Start and stop a recording from any app | | **Result: copy** | `⌘⇧C` / `Ctrl⇧C` | Copy review text to the clipboard | | **Result: insert** | `⌘⇧Enter` / `Ctrl⇧Enter` | Insert review text at the focused field | | **Result: close** | `⌘⇧W` / `Ctrl⇧W` | Dismiss the review overlay | Clear any binding in Settings to disable it. Dictation mode (toggle vs push-to-talk) is configured under **Settings → Dictation**, not on the Hotkeys tab. --- # System requirements > Supported operating systems and recommended hardware for Garmingo Voice. These match the [Voice product FAQ](/voice#faq). ## Operating systems [#operating-systems] **Windows 10/11** or **macOS 11 (Big Sur)** and later. | Platform | Availability | | ----------- | --------------- | | **macOS** | Fully available | | **Windows** | Fully available | ## Hardware [#hardware] | | Minimum | Recommended | | -------- | ------- | ----------- | | **RAM** | 500 MB | 8 GB | | **Disk** | 500 MB | 10 GB | | **VRAM** | None | 10 GB | Additional notes: * **Microphone**: any system-supported input; a headset is recommended for calls. * **GPU**: optional; enable **AI acceleration** under Settings → Audio for faster speech features on capable hardware. ## Garmingo Voice audio driver [#garmingo-voice-audio-driver] Voice ships with its **own audio driver**; no separate virtual audio software required. The driver creates virtual audio devices so Zoom, Teams, Discord, and other apps receive your enhanced voice: | Platform | Virtual devices | | ----------- | --------------------------------------------------------------------------------------------------------------- | | **macOS** | **Garmingo Voice Microphone** and **Garmingo Voice Speaker** | | **Windows** | **Garmingo Voice** (input and output; the OS may show a localized prefix such as “Microphone (Garmingo Voice)”) | Install it during [onboarding](/docs/voice/onboarding) with **Install Driver**, or later under **Settings → Audio**. macOS may ask for an administrator password once during installation. ## Network [#network] Required for activation, updates, cloud processing, and downloading AI components. On-device enhancement and dictation work offline once components are installed and your device has been activated recently. --- # Menu bar tray > Control Voice from the system tray without opening the full app. Voice runs in the **menu bar** (macOS) or **system tray** (Windows) so enhancement stays one click away. ## Tray popup [#tray-popup] Click the Voice icon to open a compact panel: * Start or stop **processing** * Start **recording** or a **meeting** * See input level meters * Switch microphone input and preset * Open the full app ## Context menu [#context-menu] Right-click the tray icon for quick actions: * Toggle processing * Toggle recording * Open dashboard * Quit Voice The tray keeps working when the main window is closed, ideal for all-day calls. --- # Troubleshooting > Common Voice issues and how to fix them. ## No audio in Zoom / Teams / Discord [#no-audio-in-zoom--teams--discord] 1. Confirm **processing is running** (dashboard or tray). 2. In your call app, select the **Garmingo Voice** virtual microphone, not your raw hardware mic. * **macOS**: **Garmingo Voice Microphone** * **Windows**: **Garmingo Voice** (may appear with a localized prefix) 3. Confirm the **Garmingo Voice audio driver** is installed; rerun **Install Driver** from [onboarding](/docs/voice/onboarding) or **Settings → Audio**. 4. On the dashboard, verify the correct **physical microphone** is selected as input; that signal is what other apps receive through the virtual mic. ## Dictation does not insert text [#dictation-does-not-insert-text] * On **macOS**, grant **Accessibility** permission (System Settings → Privacy & Security → Accessibility → enable Garmingo Voice). * Try **Review mode** first to confirm transcription works. * Verify the correct **hotkey** in Settings → Dictation. ## Activation failed [#activation-failed] * Ensure you have an active Voice purchase or seat: see [Purchases](/dashboard/products). * Request a fresh pairing link: see [Device activation](/docs/voice/device-activation). ## Cloud features unavailable [#cloud-features-unavailable] * Check internet connection and credit balance on [Usage](/dashboard/usage). * Switch to **on-device** processing in [AI processing](/docs/voice/ai-processing) temporarily. * After extended offline use, sign in again when you are back online. ## Reset everything [#reset-everything] **Settings → Advanced → Reset onboarding** reruns the setup wizard without deleting recordings. Still stuck? See [Support](/docs/general/support). --- # Voice enhancement > Real-time microphone enhancement with presets and fine-grained controls. Voice enhancement processes your microphone in real time and sends the improved signal to other apps through a **virtual microphone**. ## Quick start [#quick-start] The bar at the top of the **Dashboard** controls real-time enhancement: | Control | What it does | | -------------- | ----------------------------------------------------------------------------------------------------------------- | | **Mic button** | Starts or stops the enhancement engine. When active, the dot turns orange and **IN/OUT** meters show live levels. | | **FX** | Quick toggles for individual effects (noise, echo cancel, EQ, and more). Changes switch the preset to **Custom**. | | **Preset** | One-click profiles for common scenarios: **Video Call**, **Gaming**, **Podcast**, **Studio**, or **Custom**. | | **Playground** | Opens a preview modal to record a short clip and compare raw vs. enhanced audio. | Try it above: click **FX** or **Preset**, then start the mic to see the level meters. ### Setup steps [#setup-steps] 1. Open the **Dashboard** in Garmingo Voice. 2. Select your physical microphone (device picker below the engine bar). 3. Pick a **Preset** suited to your use case, or tune effects via **FX**. 4. Click the **mic button** to start processing (or use the [tray](/docs/voice/tray)). 5. In Zoom, Discord, or your call app, choose the **Garmingo Voice** virtual mic as input: * **macOS**: **Garmingo Voice Microphone** * **Windows**: **Garmingo Voice** The driver is installed during [onboarding](/docs/voice/onboarding) or from **Settings → Audio**; no extra virtual audio software required. ## Presets [#presets] Presets tune noise handling, voice clarity, and dynamics for common scenarios: | Preset | Best for | | -------------- | --------------------------------------------------------------------------------- | | **Video Call** | Meetings and calls: balanced noise suppression, echo cancel, and auto gain | | **Gaming** | Voice chat: strong noise gate, EQ, and compression for clear comms | | **Podcast** | Spoken content: warmth, de-reverb, and gentle dynamics | | **Studio** | Maximum clarity: full enhancement chain with transparent processing | | **Custom** | Your own FX combination: saved presets appear here after you save them in the app | Switch presets anytime from the dashboard or tray. ## Fine-tuning [#fine-tuning] Open **Enhancements** in the sidebar for full control over every effect: input level, noise suppression tier, voice clarity, echo cancellation, equalizer bands, compressor, limiter, and more. FX toggles on the dashboard are shortcuts; the Enhancements page exposes tiers, thresholds, and advanced parameters. ## Preview [#preview] Use **Playground** on the dashboard to record a short clip and compare raw vs. enhanced audio before joining a call. Start with a preset, then tweak one control at a time so you can hear what each change does. --- # Authentication > How to authenticate API requests using x-garmingo-status-key headers. Treat API keys like passwords. Never commit them to git or expose them in client-side code. Include your key on every request: ```http x-garmingo-status-key: YOUR_API_KEY ``` ## Create a key [#create-a-key] 1. Open your Status workspace. 2. Go to **Settings → API** ([docs](/docs/status/settings/api)). 3. Click **Create API key** (admins only). 4. Copy the key once; it is not shown again. Rotate or revoke keys immediately if one is exposed. --- # Introduction > Core REST concepts, base URL, auth, rate limiting, caching, and error model. The Garmingo Status API is a JSON REST API for monitors, incidents, and events. **Base URL:** `https://garmingo.com/api/status/v1` ## Authentication [#authentication] Send your API key in the `x-garmingo-status-key` header. See [Authentication](/docs/status/api/authentication). ## Responses [#responses] * Standard HTTP status codes * JSON body with `success: true|false` * On failure, a `message` field explains the error ## Limits [#limits] Some endpoints are rate limited or cached (typically up to a few minutes). Avoid polling more often than you need. ## Next steps [#next-steps] * [Authentication](/docs/status/api/authentication) * [JavaScript SDK](/docs/status/api/sdks/js) * Endpoint reference under **Monitors**, **Incidents**, and **Events** --- # Introduction > Uptime targets, SLA tracking, and PDF reports for stakeholders. Garmingo Status provides compliance reporting to analyze uptime, incident impact, and SLA adherence. Reports help you communicate transparently with customers and meet internal governance requirements. Keep a consistent monthly cadence so stakeholders know where to find updates. ## Key features [#key-features] * **Compliance targets**: define uptime thresholds per monitor or group ([targets](/docs/status/compliance/targets)) * **PDF reports**: export period summaries for audits and customer SLAs ([reports](/docs/status/compliance/reports)) * **Maintenance exclusion**: planned windows handled separately from unexpected downtime in calculations ## Why use compliance? [#why-use-compliance] Reports help you: * Identify trends in service reliability * Communicate effectively with stakeholders and customers * Demonstrate adherence to SLAs and contracts * Make data-driven decisions to improve infrastructure ## Workflow [#workflow] 1. Define [compliance targets](/docs/status/compliance/targets) aligned with contractual SLAs. 2. Ensure monitors have sufficient check history (at least one full reporting period). 3. Generate [reports](/docs/status/compliance/reports) monthly or on customer request. 4. Review missed targets alongside [incident](/docs/status/incidents/introduction) timelines for RCA. ## Plan availability [#plan-availability] Compliance targets and PDF reports require **Standard plan or above**. Free and Starter workspaces have limited or no access to full report export; verify entitlements on [pricing](/status#pricing). ## Related [#related] * [Compliance targets](/docs/status/compliance/targets) * [Compliance reports](/docs/status/compliance/reports) * [Monitors introduction](/docs/status/monitors/introduction) --- # Compliance Reports > Generate uptime and incident reports for stakeholders and audits. Compliance reports summarize monitor uptime, incident impact, and target adherence over a selected period. Export PDFs for stakeholders, customers, or internal audits. ## Report contents [#report-contents] Typical sections include: * **Executive summary**: overall uptime and target status * **Per-monitor breakdown**: uptime percentage, downtime minutes, check count * **Incidents**: titles, duration, and affected monitors in the period * **Maintenance**: planned windows that affected availability metrics * **Target comparison**: met vs missed SLA thresholds ## Generate a report [#generate-a-report] 1. Go to **Compliance → Reports**. 2. Select **date range** (month, quarter, or custom). 3. Choose **monitors** or compliance targets to include. 4. Click **Generate** and download the PDF when ready. Generation may take a few seconds for large workspaces with many monitors. ## Automatic vs manual [#automatic-vs-manual] * **Manual reports**: on-demand for ad-hoc customer requests or quarterly reviews * **Scheduled reports** (where enabled): recurring delivery to email or webhook; check your plan and workspace settings Keep a consistent monthly cadence so stakeholders know where to find updates. ## Using reports effectively [#using-reports-effectively] * Share reports proactively before customers ask; builds trust * Compare month-over-month to spot degrading services early * Cross-reference incident timelines with deployment logs for RCA * Store PDFs in your document management system for audit trails ## Plan availability [#plan-availability] PDF compliance reports require **Standard plan or above**. See [pricing](/status#pricing) for details. ## Related [#related] * [Compliance targets](/docs/status/compliance/targets) * [Incidents introduction](/docs/status/incidents/introduction) --- # Compliance Targets > Define uptime targets per monitor and track SLA adherence. Compliance targets define the uptime percentage you commit to for a monitor or group of monitors. Garmingo Status compares actual uptime against these targets for reporting and stakeholder transparency. ## What is a compliance target? [#what-is-a-compliance-target] A target specifies: * **Name:** e.g. "Production API, 99.9%" * **Target uptime**: percentage threshold (99.0%, 99.9%, 99.99%, etc.) * **Monitors**: which checks count toward this target * **Reporting period**: typically monthly or custom ranges in reports When uptime falls below the target during a period, reports highlight the gap for internal review or customer communication. ## Create a target [#create-a-target] 1. Go to **Compliance → Targets → New target**. 2. Enter name and desired uptime percentage. 3. Assign one or more monitors (only monitors with sufficient history produce meaningful data). 4. Save. ## Best practices [#best-practices] * Align targets with contractual SLAs; do not set 99.99% if your infrastructure cannot support it * Exclude monitors under active development from production SLA targets * Pair targets with [integrations](/docs/status/integrations/notifications) so breaches trigger alerts before the month ends * Review targets quarterly as architecture changes ## Plan availability [#plan-availability] Compliance **targets** and **PDF reports** require Standard plan or above. Free and Starter tiers may show compliance UI with limited or preview functionality; check your current [plan entitlements](/docs/status/index#plans-and-limits). ## Related [#related] * [Compliance reports](/docs/status/compliance/reports) * [Monitors introduction](/docs/status/monitors/introduction) --- # Create an Incident > Open a new incident, assign affected monitors, and begin structured updates. Creating an incident starts a shared timeline for unexpected impact. Updates you post appear on linked [status pages](/docs/status/pages/introduction) and can trigger [integrations](/docs/status/integrations/notifications). ## When to open an incident [#when-to-open-an-incident] * Users see errors, latency, or partial outage * Impact is ongoing and needs external communication * Your team needs a single source of truth during response Do **not** use incidents for planned work; use [maintenance windows](/docs/status/maintenance/create) instead. ## Form fields [#form-fields] | Field | Description | Guidance | | ----------------- | ---------------------------- | --------------------------------- | | Title | Short external summary | Focus on symptom, not blame | | Description | Initial context / impact | Update as investigation evolves | | Affected monitors | Impacted components | Select only direct dependencies | | Impact status | Severity (degraded / outage) | Keep taxonomy consistent | | Start time | When impact began | Earliest known time; estimates OK | | End time | When resolved | Leave empty until confirmed fixed | ## Steps [#steps] 1. Go to **Incidents → New incident**. 2. Write a clear **title** and initial **description**. 3. Select **affected monitors**. 4. Set severity and start time. 5. Save and post updates as the situation evolves. 6. Mark **resolved** only after monitors are stable and mitigation verified. ## Workflow tips [#workflow-tips] 1. Open early with limited detail; transparency beats silence. 2. Update regularly even if still investigating ("We are investigating increased error rates"). 3. Resolve only after verification, not immediately after a fix is deployed. 4. Final update: brief RCA (what happened, user impact, prevention steps). ## Avoid noise [#avoid-noise] * Do not open separate incidents for the same root cause; consolidate related symptoms. * Do not open incidents for maintenance covered by an active window. ## Aftercare [#aftercare] * Review MTTD and MTTR in [compliance reports](/docs/status/compliance/reports) * Add monitors if the outage exposed coverage gaps * Update runbooks linked from [custom links](/docs/status/pages/editor/custom-links) on your status page ## Related [#related] * [Incidents introduction](/docs/status/incidents/introduction) * [Maintenance create](/docs/status/maintenance/create) --- # Introduction > Track outages, communicate impact, and maintain a structured timeline. Incidents are structured records of unexpected service impact. They drive status page updates, integration notifications, and compliance reporting. Creating an incident lets you communicate downtime or degradation in a timeline your team and subscribers can follow. ## When to open an incident [#when-to-open-an-incident] * User-visible impact (errors, latency, partial outage) * Degradation expected to persist beyond automatic recovery * Security or compliance events (with appropriate disclosure limits) Do **not** open incidents for [planned maintenance](/docs/status/maintenance/introduction); use maintenance windows instead. ## Workflow [#workflow] 1. Monitor goes down or you detect impact manually → create or confirm auto-created incident 2. Post updates on a regular cadence (every 15–30 minutes while investigating) 3. Link **affected monitors**, only those directly impacted 4. Move through statuses: investigating → identified → monitoring → resolved 5. Add final summary (impact, root cause, follow-up actions) Status page subscribers see incident updates in real time when monitors on the page are affected. ## List view [#list-view] The incidents list supports: * Filter by status: ongoing, scheduled, resolved * Search by title * Open any incident for full timeline, linked monitors, and notes ## Incident vs maintenance [#incident-vs-maintenance] | Scenario | Maintenance | Incident | | -------------------------------- | ----------- | -------- | | Planned upgrade | Yes | No | | Unexpected outage | No | Yes | | Emergency patch with user impact | Often | Possibly | Accurate classification keeps MTTR and compliance metrics meaningful. ## After resolution [#after-resolution] * Review mean time to detect (MTTD) and mean time to resolve (MTTR) * Feed lessons into runbooks and monitor coverage * Consider a lightweight post-mortem in the final update ## Related [#related] * [Create an incident](/docs/status/incidents/create) * [Integrations](/docs/status/integrations/notifications) * [Status pages](/docs/status/pages/introduction) --- # Create Maintenance Windows > Schedule one-time or recurring maintenance and scope it to monitors. Maintenance windows tell Garmingo Status (and your status page visitors) about planned work. While active, they suppress down alerts for covered monitors and show scheduled maintenance on public pages. ## When to use maintenance [#when-to-use-maintenance] | Scenario | Use maintenance? | Use incident? | | --------------------------------- | ---------------- | ------------------------------ | | Planned upgrade or deploy | Yes | No | | Unexpected outage | No | Yes | | Emergency patch with brief impact | Often | Possibly if users are affected | Accurate classification keeps incident MTTR and compliance metrics meaningful. ## Steps [#steps] 1. Go to **Maintenance → New maintenance**. 2. Enter a **title** and **description** customers can understand (e.g. "Database upgrade, EU Central"). 3. Choose **one-time** or **recurring**: * **One-time:** concrete start and end timestamps * **Recurring:** weekdays plus daily start/end times (UTC) 4. Set **scope:** all monitors or a selected subset. 5. Toggle **enabled** and save. ## One-time windows [#one-time-windows] Active when `start < now < end`. After the end time passes, the window no longer suppresses alerts. Old one-time entries may drop from some list views to reduce clutter. ## Recurring windows [#recurring-windows] Active when today's weekday is in `daysOfWeek` and current UTC time falls between `startTime` and `endTime`. Use recurring windows for nightly backups or weekly patch cycles instead of recreating the same schedule manually. ## Scope fields [#scope-fields] | Field | Effect | | ------------- | ----------------------------------------- | | `allMonitors` | Covers every monitor in the workspace | | `monitorIds` | Explicit list when `allMonitors` is false | | `enabled` | Turn off without deleting configuration | ## Best practices [#best-practices] * Title for external audiences; avoid internal codenames * Start maintenance slightly before work begins; end after verification completes * Disable seasonal windows instead of deleting them if you reuse the same schedule * Do **not** open an [incident](/docs/status/incidents/create) for purely planned work covered by maintenance ## Status page behavior [#status-page-behavior] Maintenance linked to monitors referenced on a status page appears automatically in timeline and status blocks; no manual embed required. --- # Introduction > Schedule planned downtime, suppress false alerts, and communicate maintenance. Maintenance windows allow you to suppress noise and communicate planned impact. They can target all monitors or a subset, and operate as one-time or recurring schedules. While a maintenance window is active for a monitor: * Down alerts are suppressed for that monitor * The status page shows scheduled or active maintenance * Uptime calculations in [compliance reports](/docs/status/compliance/reports) treat the period appropriately ## Types [#types] | Type | Description | Use case | | --------- | ------------------------------------------------------- | ---------------------------------------- | | One-time | Single window with concrete start and end timestamps | Infrastructure migration, one-off deploy | | Recurring | Repeats weekly on selected days + start/end times (UTC) | Nightly patches, weekly maintenance | See [Create maintenance](/docs/status/maintenance/create) for step-by-step instructions. ## When a window is active [#when-a-window-is-active] * **One-time:** Active when `start < now < end`. * **Recurring:** Active when today's weekday is in `daysOfWeek` and current UTC time is between `startTime` and `endTime`. Expired one-time windows may be hidden from some list views to reduce clutter. ## Scope [#scope] | Field | Effect | | ----------- | ------------------------------------------- | | allMonitors | Entire workspace covered | | monitorIds | Explicit subset when `allMonitors` is false | | enabled | Toggle without deleting configuration | ## Filtering and search [#filtering-and-search] The maintenance list supports text search (title, description), monitor filter, and enabled/active filters. ## Best practices [#best-practices] * User-friendly titles: "Planned Database Upgrade, EU Central" * Start slightly before work; end after verification completes * Disable (don't delete) windows you reuse seasonally * Use incidents only for **unexpected** impact during maintenance ## Incident vs maintenance [#incident-vs-maintenance] | Scenario | Maintenance | Incident | | ------------------------ | ----------- | --------------------- | | Planned upgrade | Yes | No | | Unexpected outage | No | Yes | | Emergency security patch | Often | If user impact occurs | ## Related [#related] * [Create maintenance windows](/docs/status/maintenance/create) * [Incidents introduction](/docs/status/incidents/introduction) --- # Introduction > Overview of integration channels linking monitors, incidents, and maintenance to external tools. Integrations connect Garmingo Status to Slack, email, SMS, webhooks, and other tools so your team learns about problems without watching the dashboard. ## Integration types [#integration-types] Built-in channels (see [Alert channels](/docs/status/integrations/notifications) for setup): * Email * Slack * Discord webhook * Microsoft Teams * Telegram * Webhook (generic HTTP POST) * Twilio SMS / voice call * Mobile app push * OpsGenie * Jira, Trello * Mattermost, Rocket.Chat, Signal Some types require validation (e.g. email verification link) before activation. ## Scope and targeting [#scope-and-targeting] | Mode | Behavior | | ----------------- | ---------------------------------------------------------- | | All monitors | Receives events from every monitor (including future ones) | | Selected monitors | Only triggers for the chosen subset (modifiable later) | Prefer **selected monitors** for noisy channels; reserve **all monitors** for critical paging paths. ## Activation state [#activation-state] * `active: true`: notifications dispatched * `active: false`: configuration retained, no messages sent Deactivate instead of delete when pausing alerts temporarily. ## Deduplication [#deduplication] Garmingo applies retry logic at the monitor layer before committing state changes. Integrations receive **committed** transitions, not every failed probe during retries. Heartbeat and manual monitors follow type-specific rules. ## Metrics [#metrics] | Metric | Purpose | | ----------------------------- | ----------------------------------------- | | Monitors without integration | Blind spots with no notification path | | Integrations without monitors | Cleanup candidates (unless scoped to All) | | Active integrations | Adoption and cost tracking | ## Security [#security] * Secrets (tokens, webhook URLs) are stored server-side and not re-exposed in full after creation. * Email integrations require address verification via signed link. * Rotate compromised webhook URLs immediately. ## Best practices [#best-practices] * Use at least two channels for critical infrastructure (e.g. Slack + SMS). * Run a test notification after every new integration. * Audit inactive integrations periodically. ## Related [#related] * [Alert channels](/docs/status/integrations/notifications) * [Create a monitor](/docs/status/monitors/create) --- # Alert Channels > Setup steps for Slack, email, webhooks, SMS, and all supported notification integrations. Integrations dispatch alerts when monitors change state and can notify on incident updates depending on channel configuration. ## Setup flow [#setup-flow] 1. **Integrations → New integration** 2. Pick a channel type below 3. Choose **all monitors** or **selected monitors** 4. Complete channel-specific authentication 5. Toggle **active** and send a **test notification** ## Channels [#channels] | Channel | Setup summary | | --------------------- | ----------------------------------------------------- | | **Email** | Enter address; verify via inbox link | | **Slack** | OAuth to workspace; pick channel | | **Discord** | Paste incoming webhook URL | | **Microsoft Teams** | Connector or webhook URL from Teams | | **Telegram** | Bot token + chat ID | | **Webhook** | Custom URL; JSON payload documented in app | | **Twilio SMS / Call** | Account SID, auth token, from/to numbers | | **Mobile app** | Push via Garmingo mobile app (link device in account) | | **OpsGenie** | API key and team routing | | **Jira** | Site URL, project, credentials for ticket creation | | **Trello** | Board and list configuration | | **Mattermost** | Incoming webhook URL | | **Rocket.Chat** | Webhook or bot integration | | **Signal** | Bridge configuration per in-app instructions | Channel-specific fields appear in the integration wizard. Follow in-app validation messages if setup fails. ## Scope recommendations [#scope-recommendations] | Monitor criticality | Suggested scope | | ------------------------ | ------------------------------------------ | | Production API, payments | Dedicated integration + SMS or call backup | | Staging / internal | Selected monitors only | | Low-priority batch jobs | Email or single Slack channel | ## Plan limits [#plan-limits] Maximum integrations per workspace depend on plan (Free: 1, Starter: 2, Standard: 15, Business: 100). See [pricing](/status#pricing). ## Troubleshooting [#troubleshooting] | Issue | Fix | | ------------------ | --------------------------------------------------------- | | No alerts received | Confirm integration is **active** and monitor is in scope | | Email not verified | Click verification link in inbox (check spam) | | Slack OAuth failed | Re-authorize; confirm app has channel access | | Webhook 4xx/5xx | Check target URL and payload format in app docs | ## Security [#security] * Never commit webhook URLs or API tokens to git * Revoke and recreate credentials if exposed * Use separate integrations per environment where possible ## Related [#related] * [Integrations introduction](/docs/status/integrations/introduction) * [Create a monitor](/docs/status/monitors/create) --- # Introduction > Dashboard overview, summary metrics, events, and first steps. The dashboard is your home screen after signing in. It surfaces monitor health, open incidents, recent status changes, and quick actions so you can spot problems without digging through every monitor. ## What you see [#what-you-see] | Area | Purpose | | ------------- | ------------------------------------------------------ | | Summary cards | Monitors up/down, active incidents, uptime trends | | Monitor list | Failing or degraded checks with last result and region | | Event history | Chronological log of status transitions | | Quick actions | Create monitor, open incident, or jump to status pages | ## Event history [#event-history] The event stream records every committed status change: up, down, degraded, paused, and maintenance-related suppressions. Filter by monitor, event type, or time range to investigate flapping or correlate with deployments. Events reflect **committed** state after monitor retry logic; integrations receive the same transitions, not every failed probe during a retry window. ## Workspace context [#workspace-context] The header shows your active **workspace** (Status instance). Each workspace has its own monitors, pages, incidents, and team. Switch workspaces from the workspace menu if your account has access to more than one. License and seat limits come from your Garmingo subscription. If you hit a limit, upgrade on [garmingo.com/dashboard/products](/dashboard/products). ## First steps [#first-steps] 1. Confirm workspace name and plan in the header or [Settings](/docs/status/settings/introduction). 2. Add an [HTTP monitor](/docs/status/monitors/create) for your most critical endpoint. 3. Create a [status page](/docs/status/pages/create) and link the monitor in a block. 4. Add at least one [integration](/docs/status/integrations/notifications) so alerts reach on-call. 5. Schedule [maintenance](/docs/status/maintenance/create) before the next planned deploy. ## Support identifiers [#support-identifiers] Open **Help & support** in the sidebar to find: * **Support ID**: include in every support ticket * **Workspace ID**: identifies your Status instance * **Support PIN**: share only when Garmingo staff request verification Reset your Support PIN immediately if you suspect it was exposed. --- # Create a Status Page > Draft and publish a new status page, from basic layout to public launch. Creating a status page defines what your audience sees during normal operation and during incidents. ## Steps [#steps] 1. Choose a descriptive **name** (shown in dashboard and often in the page header). 2. Select **visibility**: Public (indexed and shareable), private link, or password-protected. 3. Keep **Active** disabled while drafting. 4. Open the [block editor](/docs/status/pages/editor/block-editor): add status bars, graphs, and text blocks; select monitors and time windows. 5. Configure [branding](/docs/status/pages/editor/theme-settings) (logo, theme, custom CSS on eligible plans). 6. Save and optionally attach a [custom domain](/docs/status/pages/editor/custom-domain). 7. Preview, then activate and switch to public when approved. ## Fields [#fields] | Field | Description | Notes | | ------------ | ----------------------------- | ---------------------------------------------- | | name | Display / internal identifier | Shown in dashboard and page header | | public | Visibility mode | Private for internal drafts | | active | Operational toggle | Inactive pages hidden from public listings | | blocks | Layout components | Status, uptime, ping, markdown, etc. | | customDomain | Branded FQDN | Requires DNS setup; Starter plan and above | | customCss | Style overrides | Sanitized server-side; Standard plan and above | ## Custom domain (high level) [#custom-domain-high-level] 1. Enter domain (e.g. `status.example.com`) in the editor. 2. Add the DNS record Garmingo provides (CNAME recommended). 3. Wait for validation and TLS certificate provisioning (usually minutes). 4. Page serves on your domain automatically when ready. Full guide: [Custom domain](/docs/status/pages/editor/custom-domain). ## Draft workflow [#draft-workflow] * Build the page in private or inactive mode. * Verify data, theming, and [custom links](/docs/status/pages/editor/custom-links). * Flip to public once stakeholders approve content. ## Incident and maintenance integration [#incident-and-maintenance-integration] Incidents and maintenance windows affecting monitors referenced in blocks appear on the page timeline automatically. No copy-paste required. ## Accessibility [#accessibility] * Ensure sufficient color contrast in custom themes * Provide alt text for uploaded logos * Put the most critical services first in block order ## Next steps [#next-steps] * [Block editor](/docs/status/pages/editor/block-editor) * [Theme settings](/docs/status/pages/editor/theme-settings) * [Integrations](/docs/status/integrations/notifications) for proactive alerts --- # Introduction > Public and private status pages for customers and internal teams. Status pages communicate monitor health, active incidents, and scheduled maintenance to your team or customers. Each workspace can host multiple pages for different audiences (public product status vs internal infrastructure). ## Key concepts [#key-concepts] | Concept | Description | | ------------- | ---------------------------------------------------- | | Page | A branded layout with one or more blocks | | Block | Visual component (status bar, graph, markdown, etc.) | | Visibility | Public, private link, or password-protected | | Subdomain | Default URL on `*.garmingostatus.com` | | Custom domain | Branded hostname on eligible plans | Incidents and maintenance linked to monitors referenced on a page appear automatically; no manual embedding. ## Create a page [#create-a-page] See [Create a status page](/docs/status/pages/create) for the full workflow: 1. **Status pages → New page** 2. Name the page; keep it **inactive** while drafting 3. Add blocks in the [editor](/docs/status/pages/editor/block-editor) 4. Configure [theme](/docs/status/pages/editor/theme-settings) and optional [custom domain](/docs/status/pages/editor/custom-domain) 5. Activate and set visibility when ready ## Multiple pages [#multiple-pages] Use separate pages when: * Customers should not see internal-only services * Different products need independent SLAs and branding * One team owns a subset of monitors Filter and search the pages list by name, visibility, and active state. ## Plan limits [#plan-limits] Maximum status pages depend on your plan (Free: 1, Starter: 2, Standard: 5, Business: 30). See [pricing](/status#pricing). ## Related [#related] * [Block editor](/docs/status/pages/editor/block-editor) * [Custom links](/docs/status/pages/editor/custom-links) * [Incidents](/docs/status/incidents/introduction) --- # Create a Monitor > Step-by-step guide to creating monitors with the three-step wizard. Creating a monitor defines what Garmingo Status checks, how often, from which regions, and who gets alerted when status changes. ## Before you start [#before-you-start] * Know the URL, host, or port you want to probe * Decide check interval based on criticality (see [plan limits](/docs/status/index#plans-and-limits)) * Have at least one [integration](/docs/status/integrations/notifications) ready, or create one after saving ## Steps [#steps] 1. Go to **Monitors → New monitor**. 2. **Step 1: Type:** Choose a [monitor type](/docs/status/monitors/types) (HTTP for most APIs). 3. **Step 2: Configuration:** Set target, interval, timeout, retries, and type-specific options (headers, keyword, port, etc.). 4. **Step 3: Regions & alerts:** Select check regions and attach integrations (all monitors or selected subset). 5. Save. Wait for the first successful check before relying on the monitor in SLAs. ## Common fields [#common-fields] | Field | Description | Guidance | | ------------ | ------------------------------------------ | ------------------------------------------------------------------ | | Name | Display name in dashboard and status pages | Use environment + service, e.g. `API Gateway (prod)` | | Interval | Seconds between checks | Match plan minimum; 60s is typical for production APIs | | Timeout | Max wait per probe | Keep below interval; 10–30s for HTTP is common | | Retries | Failed attempts before marking down | Default 3 reduces flapping on transient errors | | Regions | Probe locations | Pick regions close to users; multi-region catches regional outages | | Integrations | Alert destinations | At least two channels for critical paths (e.g. Slack + email) | ## Heartbeat monitors [#heartbeat-monitors] After saving a heartbeat monitor, copy the unique **ping URL**. Your cron job or worker must call it on schedule. If no ping arrives within the grace period, the monitor goes down. Use **Send test ping** after setup to confirm the URL works. ## Manual monitors [#manual-monitors] Manual monitors have no automated probe. You update status yourself, useful for vendor dependencies or components you cannot reach from the public internet. ## After creation [#after-creation] * Verify the monitor shows **Up** with expected response time * Add the monitor to a [status page block](/docs/status/pages/editor/block-editor) * Set a [compliance target](/docs/status/compliance/targets) if you track SLA uptime * Use [maintenance windows](/docs/status/maintenance/create) during planned changes ## API alternative [#api-alternative] Automate monitor creation with the [REST API](/docs/status/api/monitors/createMonitor) or [JavaScript SDK](/docs/status/api/sdks/js). --- # Introduction > Create and manage uptime monitors across regions and integrations. Monitors are automated checks against your services. The monitors list shows status, last check time, response time, and actions for every check in your workspace. ## Monitor lifecycle [#monitor-lifecycle] | State | Meaning | | ----------- | -------------------------------------------------------------------------------- | | Up | Last check succeeded within configured thresholds | | Down | Check failed after all retries | | Degraded | Partial failure (type-dependent, e.g. slow response) | | Paused | Checks stopped; no alerts fired | | Maintenance | Covered by an active [maintenance window](/docs/status/maintenance/introduction) | ## Create a monitor [#create-a-monitor] Follow the three-step wizard in [Create a monitor](/docs/status/monitors/create): 1. **Monitors → New monitor** 2. Pick a [type](/docs/status/monitors/types) 3. Configure target, interval, timeout, and retries 4. Select check regions and attach [integrations](/docs/status/integrations/notifications) 5. Save and wait for the first successful check ## Manage monitors [#manage-monitors] * **Pause**: stop alerts without deleting configuration (useful during debugging) * **Edit**: change interval, target, regions, or integrations from the detail page * **Filter**: search by name; filter by status, type, or region on the list view * **Manual status**: for [manual monitors](/docs/status/monitors/types#manual), set status directly ## Integrations and alerts [#integrations-and-alerts] Attach at least one integration before relying on a monitor in production. Integrations receive events only after retry logic commits a state change, not on every transient failure. ## Tips [#tips] * Match check interval to criticality and [plan minimums](/docs/status/index#plans-and-limits) * Never put secrets in URLs; use HTTP headers for auth tokens * Name monitors so on-call knows what broke at 3am: `payments-api (prod)` not `monitor-12` * Use [maintenance windows](/docs/status/maintenance/create) during planned deploys ## API [#api] Automate monitor CRUD with the [REST API](/docs/status/api/monitors/listMonitors) or [JavaScript SDK](/docs/status/api/sdks/js). --- # Monitor Types > HTTP, ICMP, TCP, UDP, heartbeat, SSL, DNS, SMTP, and manual checks. Garmingo Status supports nine monitor types. Pick the one that matches what you need to verify. Most teams start with **HTTP**. ## Comparison [#comparison] | Type | What it checks | Best for | | --------- | ---------------------------------------------- | ------------------------------------ | | HTTP | URL response code, time, optional body keyword | APIs, websites, health endpoints | | ICMP | Host reachability (ping) | Network-level availability | | TCP | Port open/closed | Databases, custom TCP services | | UDP | UDP port response | Game servers, DNS-like UDP services | | Heartbeat | Incoming ping on schedule | Cron jobs, workers, backups | | SSL | Certificate expiry | TLS endpoints before cert lapses | | DNS | Record resolves correctly | DNS hijack or config drift detection | | SMTP | Mail server port availability | Email infrastructure | | Manual | Human-set status | Vendor outages, non-probeable deps | ## HTTP [#http] Checks a URL over HTTP or HTTPS. 1. **Monitors → New → HTTP** 2. URL (prefer `/health` or `/ready`), method, timeout 3. Expected status codes (200, 204, etc.) 4. Optional: keyword in response body, custom headers for auth 5. Attach an [integration](/docs/status/integrations/notifications) ## ICMP (ping) [#icmp-ping] Host reachability without application-layer logic. Useful when HTTP is unavailable but the host must respond to ping. ## TCP / UDP [#tcp--udp] Probes whether a port accepts connections (TCP) or responds (UDP). Configure host, port, and timeout. ## Heartbeat / Cron [#heartbeat--cron] Your job calls a unique **ping URL** on schedule. If no ping arrives within the grace period, the monitor goes down. Ideal for: * Nightly backup jobs * Scheduled ETL or batch workers * Internal scripts with no public HTTP endpoint Copy the ping URL after creation. Use the API [`sendHeartbeat`](/docs/status/api/monitors/sendHeartbeat) endpoint from your job. ## SSL certificate [#ssl-certificate] Warns before a certificate expires. Point at the hostname; path is optional. Set alert thresholds (e.g. 30, 14, 7 days before expiry). ## DNS [#dns] Validates that a DNS record (A, AAAA, CNAME, etc.) resolves to the expected value. Catches misconfigured or hijacked DNS. ## SMTP [#smtp] Checks mail server availability on the configured port (typically 25, 465, or 587). ## Manual [#manual] No automated probe runs. You update status when you learn of external issues (e.g. cloud provider regional outage affecting a dependency). Manual monitors still appear on [status pages](/docs/status/pages/introduction) and can trigger [integrations](/docs/status/integrations/introduction) when you change status. ## Defaults and tuning [#defaults-and-tuning] | Setting | Recommendation | | -------- | ------------------------------------------------- | | Interval | 60s for production APIs; relax for internal tools | | Retries | 3 before marking down (reduces flapping) | | Timeout | Less than interval; 10–30s typical for HTTP | | Regions | Multi-region for user-facing services | | Naming | Include environment: `api-gateway (prod)` | Use [maintenance windows](/docs/status/maintenance/introduction) during planned work to avoid false alerts. --- # API Keys > Create, rotate, and revoke programmatic access keys for the Status API. API keys allow server-side automation against the Garmingo Status REST API. Keys inherit your workspace plan limits (monitors, pages, rate limits). ## Create a key [#create-a-key] 1. Open your Status workspace at [garmingostatus.com](https://garmingostatus.com). 2. Go to **Settings → API**. 3. Click **Create API key** (admins only). 4. Copy the key immediately; it is shown **once** and cannot be retrieved later. 5. Store the key in a secrets manager (never in git or client-side code). ## Use a key [#use-a-key] Send the key on every request: ```http x-garmingo-status-key: YOUR_API_KEY ``` See [Authentication](/docs/status/api/authentication) for full details and error handling. ## Rotate and revoke [#rotate-and-revoke] | Action | When | | ------ | ---------------------------------------------------------------------------- | | Rotate | Periodic security policy (e.g. every 90 days) or after team member departure | | Revoke | Key exposed in logs, commit, or public repo; revoke immediately | Create a new key before revoking the old one to avoid downtime in automation scripts. ## Permissions [#permissions] API keys operate with admin-level access to the workspace they belong to. Scope usage to backend services only; never embed keys in browsers or mobile apps. ## Related [#related] * [API introduction](/docs/status/api/introduction) * [JavaScript SDK](/docs/status/api/sdks/js) --- # Introduction > Workspace identity, members, API keys, and support information. Settings centralize administrative controls for your Status workspace: naming, team access, API credentials, and support identifiers. Most changes apply immediately; DNS and custom domain updates may need propagation time. ## Categories [#categories] | Category | What you configure | Notes | | ---------------------------------------- | ---------------------------------- | ----------------------- | | General | Workspace name, timezone, defaults | Shown in reports and UI | | [Members](/docs/status/settings/members) | Invite, remove, roles | Enforce least privilege | | [API keys](/docs/status/settings/api) | Programmatic access | Rotate regularly | | Help & support | Support ID, PIN, Workspace ID | Required for tickets | ## Workspace [#workspace] Your workspace (Status instance) is isolated: own monitors, pages, incidents, and team. Billing and seat count link to your Garmingo account on [garmingo.com/dashboard/products](/dashboard/products). Open the app at [garmingostatus.com](https://garmingostatus.com). ## API keys [#api-keys] API keys inherit plan limits (monitors, pages, rate limits). Store keys in secrets managers; never in client-side code. See [API keys](/docs/status/settings/api) and [Authentication](/docs/status/api/authentication). ## Member management [#member-management] * One account per individual; no shared logins * Remove departed members promptly * Use [roles](/docs/status/settings/members) appropriate to each person's duties ## Support information [#support-information] ### Contact [#contact] * Email: [support@garmingo.com](mailto:support@garmingo.com) * Discord: [discord.gg/c7UQ2ca](https://discord.gg/c7UQ2ca) * Hours: Monday–Friday, 08:00–20:00 CET ### Priority support (24/7) [#priority-support-247] Available for Enterprise customers. Contact support for custom enterprise arrangements. ### When opening a ticket [#when-opening-a-ticket] Provide from **Help & support** in the sidebar: * Support ID * Workspace ID * Support PIN (only when staff request verification) Reset your Support PIN immediately if you suspect exposure. ## Related [#related] * [Members & roles](/docs/status/settings/members) * [API keys](/docs/status/settings/api) --- # Members & Roles > Invite teammates, assign roles, and enforce least privilege. Member management controls who can access your Status workspace and what they can change. Seats are tied to your Garmingo subscription; see [dashboard products](/dashboard/products) to add seats. ## Roles [#roles] | Role | Permissions | | ------------- | ------------------------------------------------------------- | | **Owner** | Full control including billing linkage and workspace deletion | | **Admin** | Settings, API keys, members, all monitors and pages | | **Editor** | Create and edit monitors, pages, incidents, maintenance | | **Responder** | Update incidents and monitor status; limited configuration | | **Viewer** | Read-only access to dashboard, pages, and reports | Assign the **lowest role** that still lets someone do their job. On-call responders often need Responder, not Admin. ## Invite a member [#invite-a-member] 1. Go to **Settings → Members**. 2. Click **Invite member**. 3. Enter email address and select role. 4. The invitee accepts via email and signs in with their Garmingo account. If you hit the **members** limit for your plan, upgrade before inviting additional users. ## Remove access [#remove-access] Remove departed team members promptly: 1. **Settings → Members** 2. Find the user → **Remove** Removing a member does not delete monitors or history they created. ## Best practices [#best-practices] * One account per person; no shared logins * Review member list quarterly * Use Viewer for executives and stakeholders who only need visibility * Pair role changes with offboarding checklists (revoke API keys they created if applicable) ## Related [#related] * [Settings introduction](/docs/status/settings/introduction) * [API keys](/docs/status/settings/api) --- # Event Object > Schema for monitor status change events with timestamps and metadata. An **Event** is a monitor up/down transition, the same history shown on [Monitors](/docs/status/monitors/introduction) and linked [Incidents](/docs/status/incidents/introduction). ## Fields [#fields] | Field | Type | Description | | ----------- | ------- | ---------------------------- | | `id` | string | Event ID | | `monitorId` | string | Monitor that changed | | `status` | boolean | `true` = up, `false` = down | | `timestamp` | Date | When the transition occurred | | `metadata` | object | Extra context (may be empty) | ```json { "id": "5f4b3b3b-0b3b-4b3b-0b3b-4b3b0b3b0b3b", "monitorId": "5f4b3b3b-0b3b-4b3b-0b3b-4b3b0b3b0b3b", "status": true, "timestamp": "2021-01-01T00:00:00.000Z", "metadata": {} } ``` Events are created by the platform when checks fail or recover; they are not manually created via the public API in most flows. --- # Get Event {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # List Events {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Create Incident {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Delete Incident {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Get Incident {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Incident Object > Schema and CRUD variants for Incident objects including status and linkage. An **Incident** represents a user-visible outage or maintenance item, the same entity under [Incidents](/docs/status/incidents/introduction). ## Read response [#read-response] Key fields: `id`, `title`, `description`, `status` (cosmetic label on the status page), `resolved`, `resolveWhenOnline`, `monitorIds`, `eventIds`, `start`, optional `end` and `metadata`. ```json { "id": "5f4b3b3b-0b3b-4b3b-0b3b-4b3b0b3b0b3b", "title": "API degradation", "description": "Elevated error rates on API gateway.", "status": "Investigating", "resolved": false, "resolveWhenOnline": true, "monitorIds": ["..."], "eventIds": ["..."], "start": "2021-01-01T00:00:00.000Z" } ``` ## Create / update [#create--update] **Create** requires `title` and `monitorIds`. Optional: `description`, `status` (default `Open`), `resolveWhenOnline` (default `true`). **Update** accepts any of: `title`, `description`, `status`, `resolved`, `resolveWhenOnline`, `monitorIds`, `start`, `end`. Set `resolved: true` (and optionally `end`) to close an incident; use `resolveWhenOnline` to auto-resolve when all linked monitors recover. --- # List Incidents {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Update Incident {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # JavaScript SDK > JavaScript/TypeScript SDK usage, structure, installation, and examples. The official JS/TS client for the [Garmingo Status API](/docs/status/api/introduction). Written in TypeScript with full types. ## Install [#install] ```bash npm install @garmingo/status-js ``` ## Usage [#usage] ```ts import { StatusAPI } from '@garmingo/status-js'; const status = new StatusAPI(process.env.STATUS_API_KEY); const monitors = await status.monitors.getAll(); const monitor = await status.monitors.get('monitor-id'); const incidents = await status.incidents.getAll(); ``` ## Structure [#structure] Three namespaces: `status.monitors`, `status.incidents`, `status.events`; each exposes CRUD methods aligned with the REST API. ## Error handling [#error-handling] The SDK is **non-throwing**: every call returns `{ success: boolean, ... }`. Check `success` instead of wrapping calls in try/catch. Source and issues: [github.com/Garmingo/status-js](https://github.com/Garmingo/status-js). --- # Create Monitor {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Delete Monitor {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Fail Heartbeat {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Get Monitor {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Get Monitor Response Time {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Get Monitor Uptime {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # List Monitors {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Monitor Object > Schema, examples, and create/update variants of the Monitor object. A **Monitor** represents a checked service in your workspace, the same entity shown under [Monitors](/docs/status/monitors/introduction). ## Read response [#read-response] Key fields: `id`, `displayName`, `type`, `region`, `ttl`, `retries`, `enabled`, `settings`, `keywords`, `currentStatus`, `lastCheck`. Optional: `metadata`, proxy fields (`proxyType`, `proxyHost`, `proxyPort`, `proxyUsername`, `proxyPassword`). ```json { "id": "5f4b3b3b-0b3b-4b3b-0b3b-4b3b0b3b0b3b", "displayName": "My Monitor", "type": "http", "region": "eu-central", "ttl": 60, "retries": 3, "enabled": true, "keywords": [], "settings": { "url": "https://example.com", "method": "GET" }, "currentStatus": true, "lastCheck": "2021-01-01T00:00:00.000Z" } ``` ## Create / update [#create--update] **Create** requires `displayName`, `type`, `region`, `ttl`, `retries`, and `settings`. Optional: `enabled` (default `true`), `keywords`, proxy fields. **Update** accepts any subset of those fields; send only what changes. Type-specific options live in `settings` (e.g. HTTP `url`/`method`, TCP host/port). See monitor type docs and endpoint references for each variant. --- # Pause Monitor {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Search Monitors {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Send Heartbeat {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Set Status {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Update Monitor {/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */} --- # Block Editor > Add, reorder, and configure visual blocks powering your status page layout. The block editor is where you compose your status page layout. Each block is a section visitors see: aggregate status, individual monitor rows, uptime graphs, or free-form announcements. ## Block types [#block-types] | Block | Purpose | | --------------------- | ------------------------------------------------------------ | | **Simple status** | Single hero indicator for one monitor or group | | **Bar status** | Row of components with status badges; good for many services | | **Graph status** | Uptime or response-time chart over a selectable window | | **Markdown / text** | Announcements, runbook links, contact info | | **Incident timeline** | Recent and active incidents (auto-populated) | | **Maintenance** | Upcoming and active maintenance windows | Exact block names in the UI may vary slightly; capabilities match the types above. ## Add a block [#add-a-block] 1. Open **Status pages → \[your page] → Editor**. 2. Click **Add block** and pick a type. 3. Select monitor(s) or groups (where required). 4. Configure display options: history window, labels, sort order. 5. **Save:** preview updates immediately. ## Reorder blocks [#reorder-blocks] Drag blocks in the sidebar to reorder. Place customer-critical services at the top so visitors should see overall health within one screen on mobile. ## Configure monitors in blocks [#configure-monitors-in-blocks] * **Single monitor**: dedicated row or graph for one check * **Multiple monitors**: bar layout groups related services (e.g. "Payments", "Auth") * **Time window**: 24h, 7d, 30d, or 90d for graphs and uptime percentages ## Preview and publish [#preview-and-publish] Use the preview URL before activating the page. Confirm: * All expected monitors appear with current status * Branding matches [theme settings](/docs/status/pages/editor/theme-settings) * Incidents and maintenance render when test data exists ## Tips [#tips] * One page per audience; do not overload a customer page with internal-only monitors * Use markdown blocks for "All systems operational" messaging during quiet periods * After adding new monitors, update blocks or they will not appear until included ## Related [#related] * [Theme settings](/docs/status/pages/editor/theme-settings) * [Custom domain](/docs/status/pages/editor/custom-domain) * [Create a status page](/docs/status/pages/create) --- # Custom Domain > Map a branded domain (e.g. status.example.com) to your status page with TLS. Serve your status page under a branded URL instead of the default Garmingo subdomain. Custom domains require DNS configuration and automatic TLS provisioning. Available on **Starter plan and above**. See [pricing](/status#pricing). ## Steps [#steps] 1. Open the page **Editor → Custom domain**. 2. Enter desired domain (e.g. `status.example.com`). 3. Copy the DNS target Garmingo provides (CNAME or A record). 4. Add the record at your DNS provider. 5. Wait for validation and certificate provisioning. 6. The page automatically serves on your domain when status shows **Active**. Propagation can take up to your DNS TTL (often 5–60 minutes). ## Tips [#tips] * Use a subdomain dedicated to status; avoid root domain collisions * Keep the default Garmingo URL working as fallback during migration * Avoid frequent domain changes; subscribers and bookmarks break * Add a contact link via [custom links](/docs/status/pages/editor/custom-links) ## Troubleshooting [#troubleshooting] | Symptom | Likely cause | Fix | | ---------------------- | ------------------------------ | ------------------------------------------ | | Domain pending | DNS not propagated | Wait for TTL; verify record name and value | | Certificate error | Wrong CNAME/A target | Re-check values in the editor | | Mixed content warnings | HTTP assets in custom CSS/HTML | Use HTTPS URLs only | ## Related [#related] * [Theme settings](/docs/status/pages/editor/theme-settings) * [Create a status page](/docs/status/pages/create) --- # Custom Links > Add Docs, Support, Legal, and other navigation links to your status page. Custom links appear in the status page header or footer so visitors can reach documentation, support, privacy policy, or other resources without leaving your brand context. ## Steps [#steps] 1. Open the status page **Editor**. 2. Go to **Theme** or **Settings** (link section varies by layout). 3. Click **Add link**. 4. Enter **label** (visible text) and **URL** (absolute HTTPS recommended). 5. Choose placement: header, footer, or both. 6. Save and preview the public page. ## Recommended links [#recommended-links] | Link | Example URL | Why | | --------------- | ------------------------------------------------------------- | ----------------------------- | | Documentation | `https://docs.example.com` | Self-service during incidents | | Support | `https://example.com/support` or `mailto:support@example.com` | Escalation path | | Privacy / Legal | `https://example.com/privacy` | Trust and compliance | ## Best practices [#best-practices] * Use HTTPS URLs only; mixed HTTP assets trigger browser warnings alongside [custom domains](/docs/status/pages/editor/custom-domain) * Open external links in a new tab sparingly; prefer same-site docs when possible * Keep labels short ("Docs", "Support", "Privacy") * Audit links after rebranding or domain migrations ## Related [#related] * [Theme settings](/docs/status/pages/editor/theme-settings) * [Block editor](/docs/status/pages/editor/block-editor) --- # Theme Settings > Customize colors, logo, branding, and custom CSS on status pages. Theme settings control how your status page looks to visitors: colors, logo, layout accents, and optional custom CSS on eligible plans. ## Access [#access] Open a status page → **Editor → Theme** (or the theme panel in the block editor sidebar). ## Branding options [#branding-options] | Option | Description | Plan notes | | ------------------------ | ----------------------------------------- | --------------------------------------------------- | | Logo | Upload or link a logo shown in the header | Available on all plans | | Primary / accent colors | Match your brand palette | Built-in presets plus custom values | | Dark / light mode | Default appearance for visitors | Respects system preference where supported | | Remove Garmingo branding | Hide "Powered by" footer | See plan entitlements on [pricing](/status#pricing) | | Custom CSS | Inject sanitized style overrides | Standard plan and above | ## Custom CSS [#custom-css] Custom CSS is injected server-side and sanitized for safety. Avoid `@import` from untrusted domains and prefer HTTPS asset URLs to prevent mixed-content warnings. Tips: * Test contrast ratios for accessibility (WCAG AA minimum for body text) * Keep overrides minimal; large CSS blocks are harder to maintain across theme updates * Preview on mobile widths before publishing ## Draft vs published [#draft-vs-published] Apply theme changes while the page is **private** or inactive. Review on a staging URL, then switch to **public** when approved. See [Create a status page](/docs/status/pages/create) for the full draft workflow. ## Related [#related] * [Block editor](/docs/status/pages/editor/block-editor): layout and monitor blocks * [Custom domain](/docs/status/pages/editor/custom-domain): branded URL with TLS * [Custom links](/docs/status/pages/editor/custom-links): header/footer navigation