User Guide

How to use WarmDesk — boards, cards, chat, time tracking, and more


Getting started

Registering

Open your WarmDesk URL in a browser. If public registration is enabled you will see a Register link on the login page. Fill in a username, display name, email address, and password and click Register. You are logged in immediately.

If registration is not available, ask an administrator to create an account for you.

Logging in

Enter your username and password, or sign in with a registered passkey. WarmDesk issues a short-lived JWT access token (15 minutes) and a 7-day refresh token that keeps you logged in as long as your browser tab is open.

By default the session expires after 60 minutes of inactivity; your administrator can change or disable this timeout.

Forgotten password

Click Forgot password? on the login page and enter your email address. If an account with that address exists, a reset link is sent immediately. The link is valid for one hour.

Multi-factor authentication (MFA)

You can enable TOTP-based MFA from Settings → Security. Scan the QR code with an authenticator app (Aegis, Authy, Google Authenticator, etc.) and enter the 6-digit code to confirm. Once enabled, every login requires the one-time code after the password. If your administrator allows it, you can mark a device as trusted to skip MFA on it for 7 or 30 days.

Desktop app

WarmDesk is also available as a native desktop app (Linux AppImage, macOS DMG, Windows installer) that asks for your server URL on first run.

  • Profiles — connect to several WarmDesk servers with fully separate sessions and settings (warmdesk --create-profile customer-a, then warmdesk --profile customer-a).

  • System tray — an optional tray icon shows an unread badge; closing the window can minimise it to the tray. With time tracking enabled, the tray menu also has the timer: what’s running, Stop and book, Switch…, and a one-click Start of your last project. When connected to a test server, the tray icon turns orange and gets a "(TEST)" suffix.

Interface overview

The collapsible, resizable sidebar (left or right) contains drag-to-reorder sections:

  • Favorite Projects / Projects — your starred projects and all projects you belong to

  • Favorite Customers / All Customers — customers you have been assigned to

  • Favorite People / People — online users; click a name to open a direct message

  • Chats — your most recent conversations with unread indicators

  • Tickets — your helpdesk inbox and per-customer ticket lists (helpdesk users only)

Use the ⋮ menu at the top of the sidebar to show or hide whole sections you never use.

The header holds the global search bar, quick links to Dashboard, News, Chats and Time Tracking, the language and theme switchers, a ? button for contextual help on the current page, and your avatar menu (settings, admin panel, Keyboard Shortcuts, guide PDFs under Downloads, About, Logout). Press ? anywhere to see all keyboard shortcuts.

The notification bell in the top bar shows unread @mentions and card updates.

Projects

Creating a project

Click + New Project on the dashboard. Choose a name, a card prefix (e.g. PRJ, used in card numbers and fixed after creation), a colour, and a board type (Kanban or Scrum).

If you don’t see the + New Project button, your administrator has not granted you permission to create projects.

Board types

Kanban — columns you define, cards flow freely between columns. Suitable for continuous-flow work.

Scrum — same column structure but with sprints, a backlog, epics, and story points.

Members and roles

Open Project Settings → Members to invite people as Viewer (read-only), Member (create and edit cards, comment, chat), Admin (also manage columns), or Owner (also manage members and webhooks, delete the project).

Starring and ordering

Star a project with the ⭐ icon to pin it to Favorite Projects in the sidebar. Drag favourites to reorder them. Filter the dashboard by customer using the dropdown at the top.

Closing a project

Owners can close a project from Project Settings → General → Danger Zone. A closed project is hidden from the sidebar and project list but stays reachable by its URL and can be reopened at any time.

Kanban board

Columns

Add columns with + Add Column in the board toolbar (project admins and owners). Click a column title to rename it; drag the column header to reorder; remove an empty column with the trash icon.

Open Column settings (⚙) on a column header to change its colour and optional WIP limit (maximum cards). The header shows count versus limit (for example 3 / 5); it is emphasized when the column is at or over the limit. Leave the limit empty to turn off WIP tracking.

Cards

Click + Add card at the bottom of a column to create a new card. Drag cards between columns and within a column to reorder them, or use a column’s sort controls (date, assignee, priority). Click a card to open the card detail panel.

Table view

The Table View button in the board toolbar swaps the lanes for a flat, sortable table of every card in the project: reference, title, column, priority, assignee, due date, story points, time spent, and closed state. Click a column header to sort (click again to reverse), and a title to open the card. Hide Closed works in both views, and your choice of view is remembered in this browser.

Gantt chart

Click Gantt in the board toolbar for a timeline of every card with a start or due date. Switch between Day, Week, and Month zoom; click a bar to open the card.

Scrum extras

Scrum projects add a Backlog view (prioritise cards by dragging, assign them to sprints), an Epics view for grouping cards across sprints, and a Sprint Board showing only the active sprint. Create a sprint, add backlog cards to it, and click Start to begin. When you complete a sprint, unfinished cards return to the backlog.

Scrum backlog

Charts

Click 📊 Charts in the board toolbar to open the analytics view. Kanban projects include four charts:

ChartWhat it shows

CFD (Cumulative Flow Diagram)

Daily card counts per column over the selected period. A widening band for a column signals growing WIP or a blocked stage.

Cycle Time

Control chart of how long each card spent open, plotted by close date, with a 7-day rolling average.

Lead Time

Distribution of total time from card creation to closure, including any waiting time in the initial column.

Throughput

Number of cards closed per week over the selected period — a direct measure of delivery rate.

Use the time-range selectors at the top of each chart to adjust the window.

Cumulative flow diagram

Scrum projects add these charts:

ChartWhat it shows

Velocity

Committed versus completed story points per sprint — helps forecast future sprint capacity.

Burndown

Remaining story points versus the ideal burn line; shows whether the sprint is on track.

Burnup

Work completed versus total scope — useful for visualising scope creep mid-sprint.

Sprint Report

Completed and not-completed cards for a finished sprint, with a completion percentage.

Epic Burndown

Remaining cards and points for a single epic over time.

Release Burndown

Progress across all sprints in a release; shows remaining scope toward the release goal.

Sprint burndown chart
Sprint burnup chart
Release burndown chart

Cards

A card is the basic unit of work. Open any card to access its full set of fields.

Basic fields

  • Title — required, short description of the work (Markdown formatting is rendered)

  • Description — Markdown with toolbar, emoji picker, and @mention autocomplete

  • Priority — none / low / medium / high / critical (colour-coded)

  • Due date / Start date

  • Assignees — one or more team members; their avatars appear on the board

  • Labels — colour-coded labels defined per project (manage in Project Settings); Tags are free-form hashtags

  • Story points — for Scrum velocity tracking (when enabled by the administrator)

  • Epic — Scrum projects only

Use the ⋮ menu in the card’s top-right corner to show or hide optional sections (attachments, checklist, labels, tags, watchers, sub-cards, linked cards, …); a section with content is always shown.

Checklist

Add checklist items in the Checklist section and drag the ⠿ handle to reorder them. Each item has its own checkbox; the card shows a completion ratio (e.g. 3/5).

Comments and time logging

Add a comment at the bottom of the card detail; click Reply under a comment to quote it. Comments can carry attachments too — paste a screenshot or attach a file directly in the comment box. To log time with the comment, fill in the hours and minutes fields. Logged time appears in the board time report.

File attachments

Drag files or click the upload zone to attach them. Images are displayed inline; other file types appear as download links. MIME type is detected server-side; the client-supplied content type is ignored.

Relationships

  • Sub-cards — create child cards for hierarchical decomposition

  • Cross-references — link any two cards across projects with a relates-to badge

  • Git links — commits, pull requests, and issues from GitHub, GitLab, Gitea, or Forgejo (added automatically via webhooks or manually)

Copy, transfer, and close

  • Copy Card duplicates the card in the same column.

  • Transfer copies or moves the card to another project. A move keeps the comments, checklist, attachments, and history; the card gets a new number there, and its old number keeps working. Labels are matched by name, the epic and sprint are cleared, assignees without access to the target project are removed, and sub-cards can move along or stay behind.

  • Close Card marks it done (it stays visible, struck through); Reopen Card restores it.

Watchers

Add yourself or colleagues as watchers to receive notifications when the card is updated.

Card numbers

Every card gets a sequential number like PRJ-42. Type this number in any chat message or comment to generate a clickable badge that opens the card, or use it in commit messages to link git events to the card. A card moved to another project gets a new number there, but its old number keeps working everywhere.

Topics (threaded discussions)

Each project has a Topics page alongside the Kanban board. Topics are threaded discussion threads — good for design decisions, meeting notes, and async conversations that don’t map to a single card.

  • Pin a topic to keep it at the top

  • Reply to any topic to add a response

  • Edit or delete your own topics and replies

Team chat

Project chat

Every project has a persistent chat channel, opened from the Project Chat entry in the sidebar of the project’s Topics page. All project members can read and post, including pasted screenshots and file attachments. Use the ⋮ menu at the top of the Topics sidebar to hide the entry if you don’t use it.

Direct messages

Open Chats in the header (or click a name under People in the sidebar) to access direct messages and group chats.

Start a 1-on-1 conversation from any user, or click New Conversation and create a group chat by selecting multiple users. The Teams tab pre-fills all members of one of your projects in a single click. Group chats support a custom avatar and member management (add / remove participants).

Chat messages support:

  • Markdown formatting, including syntax-highlighted code blocks

  • File attachments — images shown inline, other files as links; paste an image from the clipboard to attach it

  • Emoji reactions — react to any message; hover to see who reacted

  • @mentions — triggers a notification and highlights the name in the recipient’s view

  • Link previews — Open Graph metadata is fetched server-side

  • Layout options — bubble, comfortable, compact, cozy, or grouped (Discord-style)

  • Desktop notifications — enabled via the bell icon when your browser prompts; while the tab is in the background its title also blinks with the sender’s name

Voice and video calls

WarmDesk supports two call modes in direct messages:

  • 1:1 audio/video in one-on-one conversations (WebRTC peer-to-peer)

  • Group calls in any group conversation (LiveKit)

Use the camera button in the chat header to start a video call, or the mic button next to it for a voice-only call that never asks for camera access. During a call you can share your screen, see when the other party is muted, and use a resizable in-call text chat. If the server has not configured LiveKit yet, group chats show a status banner explaining that group calls are unavailable.

Click the pop-out button in the call controls to shrink the call into a small floating window that you can move and resize (also with the keyboard), so you can keep working while on the call; click it again to return to full screen.

Inviting people to an active call

While in any call, click the + button (add person icon) in the bottom controls bar to invite additional participants. A user picker lets you search by name and select one or more people. Each selected user receives a real-time popup with a Join button.

If you are in a 1:1 call, inviting someone upgrades the call automatically to a LiveKit group room — your existing call partner also receives the join popup. Users who are offline or decline simply do not appear in the room.

Notifications and @mentions

The notification bell in the top bar shows unread items. Click it to open the notification panel.

You receive a notification when:

  • Someone @mentions you in a card comment, topic reply, or chat message

  • A card you are watching is updated

  • A card assigned to you is moved or commented on

If you are online, a mention also shows a popup in the corner of the screen; if you are offline, WarmDesk emails you (when SMTP is configured).

Time tracking

Time tracking is an optional module enabled per user. The Time Tracking page (/time-tracking) has these tabs:

  • Log Time — the weekly grid or the calendar view

  • Report — your personal time report with PDF/XLSX export

  • Board — time logged on project cards (for users with report access)

  • Invoices — invoices across your customers (when invoicing is available to you)

Time-tracking viewers and administrators get an Employee dropdown to view another user’s sheet or report.

Weekly grid

Each row is a customer + project + activity combination; columns are the days of the week, with today highlighted. Click a cell to enter the hours worked that day; row, day, and week totals update automatically.

  • Hover a cell for buttons to set a time range (⏱), a travel distance (⇆), or mark it as a holiday.

  • Link a row to a contract to show its rate and, if the contract has time slots, fill the week from them.

  • Edit a row’s customer, project, contract, location, or activity with ✎ or by double-clicking it.

  • Copy Previous Week copies the row layout without hours; Undo reverts the last change.

  • Export the week as XLSX or PDF, or a printable Grid PDF for a whole week, month, or year.

Copy, cut, and paste

Select a cell, then Shift+click or Shift+arrow keys to extend a rectangular selection. Ctrl+C / Ctrl+X / Ctrl+V (⌘ on macOS) copy, cut, and paste minutes, start/end times, holiday flag, and distance. A single copied value fills every selected cell; a copied block pastes as a grid. The clipboard survives switching weeks, so you can copy Monday of one week into Monday of another.

Calendar view

Click the 📅 button next to Edit macros to switch the Log Time tab between the weekly grid and a drag-and-drop calendar (choose which one opens by default in Settings). Entries with a start and end time appear as coloured blocks; entries without times are listed in an Unscheduled strip. Blocks are coloured by customer by default, or by project via the Calendar block color setting.

  • Click an empty slot to create a one-hour entry, or click and drag to create one for the exact range.

  • Drag a block to move it to another time or day; drag its top or bottom edge to resize it.

  • Right-click a block to Edit, Copy, or Delete it; right-click an empty slot to create an entry or Paste the copied ones (same customer, project, activity, distance, and location, and the same duration).

  • Ctrl+click blocks (or Ctrl+Space on a focused block) to select several, or click a day header to select the whole day. Copy, delete, or clear the selection from the bar above the calendar or the right-click menu, or with Ctrl+C / Esc.

  • Paste puts the earliest copied entry at the clicked time and keeps the others at the same distance; Paste at original times (empty slot or day header) only moves the date. The copied entries survive switching weeks.

  • Use − / + in the top-right corner to zoom; the zoom level is remembered in your browser.

  • Tab to a block and press Enter to edit its date and times with the keyboard.

Macros, Copy Previous Week, Undo, and the export buttons work in the calendar view too.

Travel distance auto-fill

If a customer has locations with a standard travel distance, a Location picker appears wherever a distance can be set: the add/edit row forms, the per-cell distance popup, the calendar entry form, and macro rows. Picking a location fills in its distance (still editable afterwards) and remembers the chosen location on the entry. Re-picking a row’s location also updates that week’s entries on the row that already have a distance; days left blank stay untouched.

Time macros

Store recurring weekly patterns (for example travel out, preparation, teaching, travel home) as time macros. Open the editor with ⚡ in the top bar to create, duplicate, import, or export macros; each row presets customer, project, activity, hours, optional start/end times, distance, and location — either the same for every day or as an alternating A/B pattern. Run a macro from ⚡ Macro in the bottom bar: pick the macro and the start day, and it fills the current week. Macros are stored on the server, so they follow you across devices.

Time-tracking-only projects and customers

The ⚙ button on the time-tracking tab bar manages lightweight projects and customers that exist only for time tracking (no board, no CRM entry). A project can have undeclarable minutes (e.g. travel time) that are subtracted from declarable totals in the sheet, report, and exports. Projects and customers created by an administrator are marked Global (created by admin) and are visible to everyone.

Timer in the top bar

With time tracking enabled, the stopwatch button in the top bar starts a timer: pick a project (and a customer if the project has none), add a description, and click Start. While it runs, the button shows the elapsed time; click it to Stop and book, Switch… to another task (the running timer is booked first), or Discard it. Time is rounded up to whole 15 minutes and split at midnight. The desktop app’s tray menu has the timer as well. It’s the same timer as warmdesk-timer below: start it in the browser, stop it in a terminal, and every open WarmDesk window follows along.

Timer from the command line

warmdesk-timer starts a timer when you begin and books the time when you stop. The Linux desktop packages (.deb, .rpm) install it as /usr/bin/warmdesk-timer; it also comes with the server download and as a single file for Linux, macOS, and Windows on the release page. Give it your server and a personal API key (Settings → API Keys) in timer.yaml (see below), or through WARMDESK_URL / WARMDESK_API_KEY.

warmdesk-timer start Website -m "homepage"   # or: start Travel -c Acme, or just: start (defaults)
warmdesk-timer status
warmdesk-timer stop                          # stop --at 17:30 if you forgot

Starting while a timer runs books the running one first. Time is rounded up to whole 15 minutes and split at midnight; the entries show up in the weekly grid, calendar, and reports like any other. Run warmdesk-timer projects to see what you can book on, and warmdesk-timer help for all options.

Configuring the timer (timer.yaml)

warmdesk-timer needs two things: the address of your WarmDesk server and a personal API key.

  1. Create the key in WarmDesk under the avatar menu → Settings → API Keys. A project API key (Project Settings → API Keys) does not work: it is limited to one project. Time tracking must be enabled for your account.

  2. Put both in timer.yaml, in the configuration directory for your system (create the warmdesk directory if it doesn’t exist):

    SystemLocation

    Linux

    ~/.config/warmdesk/timer.yaml (or $XDG_CONFIG_HOME/warmdesk/timer.yaml when that is set)

    macOS

    ~/Library/Application Support/warmdesk/timer.yaml

    Windows

    %AppData%\warmdesk\timer.yaml

    Anywhere else works too; pass it with --config FILE. warmdesk-timer help prints the default location on your machine.

  3. The file contains an API key, so make it readable by you only, e.g. chmod 600 ~/.config/warmdesk/timer.yaml.

The complete file, with the optional defaults for start:

# Base URL of your WarmDesk server, as you open it in the browser (no /api/v1).
url: https://warmdesk.example.com

# A personal API key from Settings → API Keys.
api_key: cwk_0123456789abcdef0123456789abcdef0123456789abcdef

# Optional: what a plain "warmdesk-timer start" times.
project: Support
customer: Acme Corp

url and api_key are required; project and customer are optional defaults for warmdesk-timer start. With them set, warmdesk-timer start on its own starts a timer on that project and customer. They are matched like names on the command line (case doesn’t matter, a unique part is enough), and a name on the command line replaces them:

  • warmdesk-timer start Website times Website; the default customer is kept, unless Website belongs to another customer, in which case that customer is used.

  • warmdesk-timer start -c Globex times customer Globex; the default project is kept only if it can be combined with Globex.

An annotated copy, timer.yaml.example, comes with the server download, is attached to every GitHub release, and is installed as /usr/share/doc/warmdesk/timer.yaml.example by the Linux desktop packages. On Linux you can start from it with:

mkdir -p ~/.config/warmdesk
cp /usr/share/doc/warmdesk/timer.yaml.example ~/.config/warmdesk/timer.yaml
chmod 600 ~/.config/warmdesk/timer.yaml
$EDITOR ~/.config/warmdesk/timer.yaml

The file is optional: every setting can also come from the environment or the command line. When a setting is given in more than one place, the first match wins:

  1. the command line: --url and --key, and for start the project name and -c,

  2. the environment variables WARMDESK_URL, WARMDESK_API_KEY, WARMDESK_PROJECT, and WARMDESK_CUSTOMER,

  3. timer.yaml.

Reports

The Report tab shows your own entries for a week, month, year, or custom range, grouped by period, customer, project, or customer + project. Each group header shows the number of entries and the group total, in the exports too. Switch between a table and a chart (bar, pie, or stacked bar). The chart shows the ten activities with the most time and adds the rest together as Other; click Other (or the button below the chart) to see the next ten, and Back to return. A table below the chart lists every activity with its time and share of the total. Export options control font, PDF language, a page per customer, costs, distances, and undeclarable time before you download a PDF or XLSX. When grouped by customer, billable groups offer a Create Invoice button.

The Board tab (formerly Reports, which still redirects there) reports time logged on cards per project, filterable by period, project, and assignees, and exports to PDF or XLSX. All exports are generated on the server.

Helpdesk

When the helpdesk is enabled for you, a Tickets section appears in the sidebar with an Inbox (email tickets not yet assigned to a customer), one ticket list per customer, and the Problems, Ticket report, Knowledge base, Service catalogue, Approvals, Change calendar, and CMDB pages.

  • Tickets move through New, Open, In progress, Pending (with an optional reminder date; the SLA clock pauses), Resolved (closes automatically after a few days unless the requester replies), Pending close (closed on its close date), and Closed. A requester’s reply reopens a resolved ticket.

  • Set Impact and Urgency and the priority follows from the priority matrix; you can still override it. Tickets also have a category, and resolving one records a resolution code and notes.

  • Flag a ticket as a Major incident to alert the major-incident group.

  • Link tickets as related, duplicate of, caused by, or parent of, and link board cards and affected configuration items.

  • SLA deadlines count in the policy’s business hours. You’re warned when most of the time is used; on a breach the ticket is escalated and may be reassigned.

  • Reply to the customer, or tick Private to post an internal note that is never emailed and hidden from customer-role users.

  • Apply a macro to set several fields and pre-fill a reply in one click, or a checklist template; open checklist items block resolving the ticket.

  • Mark as Spam closes a ticket and hides it from the default list.

Problems and known errors

A ticket of type Problem records a root cause, a workaround, and whether it’s a known error. Link incidents to it with caused by and resolve them all at once when the problem is fixed. The Problems page lists all problems and, with Known errors only, works as the known error database.

Knowledge base

Articles are internal (agents only) or public (also shown in the customer portal). Each ticket suggests matching articles; agents can link an article or create an article from this ticket.

Service catalogue and approvals

Order a service from the Service catalogue by filling in its form; this creates a service request routed to the right group. Requests and changes can need approval from a group: approvers decide on the Approvals page, and until then the ticket can’t be started or resolved.

Changes

A Change request follows the change workflow: draft, awaiting approval (by the change advisory board; standard changes are pre-approved), approved, scheduled, implementing, review, and completed or failed. Fill in the risk, planned window, and implementation, backout, and test plans. Freeze windows block scheduling except for emergency changes. The Change calendar shows all changes by month, by week, or as a list.

CMDB

The CMDB holds your configuration items with their relations. Impact analysis shows what is affected when an item fails or changes.

Ticket report

The Ticket report shows created and resolved tickets, backlog, MTTR, first response, SLA compliance, first-contact resolution, and reopen rate, with breakdowns and PDF/Excel export.

Users with the customer role only see the helpdesk, their own customers' tickets, the public knowledge base, and the service catalogue.

User settings

Open Settings from the avatar menu.

SettingOptions

Theme

Light, Dark, Black, System

Language

12 languages (en, nl, de, fr, es, da, sv, nb, fi, is, pt, it)

Date / time format

Multiple regional date formats; 24- or 12-hour time

Timezone

Any IANA timezone

Font / font size

Several options for readability

Sidebar position

Left or right

Accent colour

Blue, Red, Green, or Orange

Dashboard shows

Boards, or your first starred customer’s tickets (helpdesk users)

Log Time view / Calendar block color

Table or Calendar; colour calendar blocks by customer or by project

Working hours

Per-weekday hours and lunch break, used to flag over-allotment in the time sheet

System tray / Close to tray

Desktop app only

MFA, trusted devices, passkeys

Enable / disable TOTP, manage trusted devices, register passkeys

Personal API keys

Create keys for automation scripts (see the API reference)

Customers

If your organisation uses customer management:

  • You only see customers you have been assigned to (administrators see all)

  • Star a customer for quick access

  • The customer detail page shows its projects, contracts (with rates and optional time slots), billing information, contacts, and invoices

  • Locations list the customer’s sites, each with a name, address, contact details, and a standard travel distance used by travel distance auto-fill

  • Give a customer a colour to identify its blocks in the time-tracking calendar; customers without one get an unused colour automatically

Customer admins can edit the customer, manage its contracts, contacts, and locations, and add or remove members.

The global search bar (shortcut: Ctrl+K, ⌘K on macOS) searches across:

  • Card titles, descriptions, and comments

  • Project chat and direct messages (in conversations you belong to)

  • Ticket subjects (with helpdesk access)

  • Time-entry descriptions

Queries need at least 3 characters. Search results are scoped to your accessible resources, and clicking a comment or time entry jumps straight to it.

Search & replace

Click the ⇄ icon next to the search box to find and replace text across Cards, Card comments, Direct messages, Tickets, and Time entries. Choose the categories and how many results per type to show, then click Preview to see a before/after snippet for every match. Matches you are not allowed to edit are greyed out; uncheck anything you want to keep and click Replace to update only the checked rows. Project chat messages can be searched but not replaced.