CT-Ops
Host Activity
How to use CT-Ops notes, calendar events, and ToDo tasks to preserve operational context for a host.
The Activity area records human context around a host. Metrics, checks, and inventory explain what the host is doing; activity explains why work is happening, who is involved, what still needs doing, and what the next operator needs to know before taking action.
Use this page during incident response, maintenance review, handover, and change investigation. It has three tabs:
| Tab | Use it for |
|---|---|
| Notes | Host runbooks, known issues, contact details, workarounds, fixes, and other operator-written context. |
| Calendar | Planned or historical operational events linked to the host, such as maintenance, patching, application work, changes, and meetings. |
| ToDo | Project tasks linked to this monitored host from ToDo Projects. |
The Activity page does not include charts. It is a context and planning view: tables, filters, dialogs, and forms are the primary controls.
Access and permissions
Any operator who can open the host can read shared notes and linked calendar events for that host. Private notes are visible only to the author and super admins.
| Action | Who can do it |
|---|---|
| Read shared notes | Users with access to the host |
| Read private notes | The note author and super admins |
| Create a host note | Any role except read_only |
| Edit a note | The author, instance admins, and super admins |
| Delete a note | The author, instance admins, and super admins |
| Change note privacy | The note author only |
| Pin or unpin a direct host note | Users who can edit that note |
| View linked calendar events | Users with access to the host |
| View project ToDo tasks linked to the host | Users with access to the host |
| Update project ToDo tasks | Users who can write to the instance |
| Comment on project ToDo tasks | Signed-in users with instance access |
Calendar event creation and editing happen in the operations calendar workflow, not from the host Activity page. The host Calendar tab is read-only and shows events already linked to this host.
Project ToDo creation happens from the Tools -> ToDo Projects workflow. The host ToDo tab is a host-focused view of project tasks that already reference the current monitored host.
Notes tab
Use Notes for operational knowledge that should live with the host. Good examples include restart procedures, unusual configuration decisions, local support contacts, maintenance constraints, known false positives, temporary workarounds, and investigation findings.
The Notes tab resolves notes from three sources:
| Source | Meaning |
|---|---|
| Direct host notes | Notes targeted directly to the current host. New notes created from this tab use this source. |
| Host group notes | Notes targeted to a host group that includes this host. |
| Tag selector notes | Notes targeted by host tags that match this host. Tag matching is case-insensitive. |
Pinned direct host and host-group notes also appear on the host Overview page. Keep pins for information operators should see before taking action. A target can have up to five pinned notes; attempts to exceed that limit are rejected.
Notes controls
The Notes tab starts with a short description and, for users who can create notes, a New note button.
| Control or state | What it does |
|---|---|
| New note | Opens the note editor and creates a note targeted directly to the current host. Hidden for read_only users. |
| Filter | Shows category filter pills only when notes exist. |
| All | Shows every note resolved to the host. The badge count is the total note count. |
| Category filter pills | Show only categories that currently have notes. Each pill filters the table to that category and shows its count. |
| Loading notes… | Appears while the host note list is loading. |
| No notes yet | Appears when no notes resolve to the host. Users who can create notes get another New note button in this empty state. |
| No notes in this category | Appears when the selected category filter has no matching rows. |
The note list updates after create, edit, and delete actions. Host note changes also flow through the host stream, so another operator’s updates can appear without a full page refresh.
Notes table
When notes exist, the Notes tab shows a table.
| Column | Meaning |
|---|---|
| Title | The note title. Select it to open the read-only note detail dialog. Long titles are truncated in the table, so keep titles short and scannable. |
| Author | The note author’s display name, or Unknown when the author name is not available. |
| Date | The note’s last updated timestamp, formatted with the instance dashboard date setting. See Display Settings. |
| Actions | Edit and delete icon buttons. This column is empty when the signed-in user cannot manage the note. |
The Edit pencil opens the note editor for the selected note. The Delete trash button opens a confirmation dialog before removing the note.
Note details dialog
Select a note title to open the note details dialog.
| Field | Meaning |
|---|---|
| Title | The note title. |
| By / date line | The author and last updated timestamp. |
| Body | Markdown-rendered note content. If the note body is empty, CT-Ops shows This note has no body. |
The body supports GitHub-flavored Markdown. Raw HTML is stripped before display for safety.
New note form
Select New note to create a direct host note. The form is shown in a modal dialog and cannot be closed while a save is in progress.
| Field or control | Default | Validation | What it does |
|---|---|---|---|
| Title | Empty | Required; maximum 200 characters | Short operator-facing heading. The save button stays disabled until the trimmed title is not empty. |
| Category | General | Must be one of the supported categories | Groups the note and controls which category filter it appears under. On create, changing category seeds a body template only when the body is still empty. |
| Visibility | Shared | Boolean switch | Shared makes the note visible to users who can see the host. Private limits reading to the author and super admins. |
| Body | Empty, or a category template | Maximum 50,000 characters | Markdown content for the note. Use it for commands, runbook steps, links, ticket references, review dates, and caveats. |
| Write | Active | Local editor state | Shows the editable Markdown textarea. |
| Preview | Inactive | Local editor state | Renders the current body as Markdown. Empty content shows Nothing to preview yet. |
| Cancel | Available while not saving | None | Closes the dialog without saving changes. |
| Create note | Disabled until title is valid | Server validates permissions, field lengths, category, privacy, and targets | Creates the note, attaches it to the current host, writes the first revision, and refreshes the host note list. |
New host notes are created with a single direct host target and are not pinned
by default. The backend accepts up to 50 targets for notes, but this host
form creates only the current-host target.
Note categories and templates
Categories are practical labels, not hard workflow states. Operators can change category later when a note’s purpose changes.
| Category | Template behavior | Use it for |
|---|---|---|
| General | No template | Context that does not fit a narrower category. |
| Runbook | Seeds When to use, Steps, Verification, and Rollback headings | Repeatable operational procedures. |
| Known issue | Seeds Symptom, Root cause, Workaround, and Permanent fix headings | Problems that are understood but not fully removed. |
| Fix | Seeds Problem, Fix, and Why this works headings with a command block | A repair that was applied or should be applied again. |
| Contact | Seeds owner and escalation fields | Service owners, vendor contacts, and escalation paths. |
| Workaround | Seeds Situation, Workaround, and Limitations headings | Temporary mitigations and their risks. |
Templates are plain Markdown. They can be deleted or rearranged; CT-Ops does not require the template headings to remain.
Edit note form
The edit form uses the same Title, Category, Body, Write, Preview, Cancel, and Save changes controls as the new note form.
Important edit behavior:
| Behavior | Details |
|---|---|
| Content revisions | Meaningful title, body, or category changes create revision snapshots. Rapid repeated edits by the same author are debounced for one minute to avoid excessive revision rows. |
| Revision display limit | Revision views list the latest 50 snapshots where revisions are exposed. |
| Privacy changes | Only the author sees the visibility control while editing. Admins can edit note content when permitted, but cannot change another author’s privacy flag. |
| No-op saves | If title, body, and category are unchanged, CT-Ops returns the existing note without writing a new revision. |
Delete note confirmation
Deleting a note opens a confirmation dialog with Cancel and Delete. While deletion is running, the delete button changes to Deleting… and the dialog cannot be dismissed by the pending action.
Deletion removes the note from every list and removes its targets, reactions, and revision rows through database cascade behavior. Export or copy any content you need before confirming deletion.
Pinned notes on the Overview page
Pinned notes are managed from note cards where pin controls are available, and they surface on the host Overview page in the pinned notes card.
| Pin behavior | Details |
|---|---|
| Eligible targets | Direct host targets and host-group targets can be pinned. Tag-selector targets cannot be pinned. |
| Pin limit | CT-Ops allows up to 5 pinned notes per target. |
| Overview display | Long pinned note bodies collapse in compact mode after roughly 400 characters or more than 8 lines, with a Show more / Show less toggle. |
| Operator use | Pin only high-signal context: critical runbooks, known hazards, escalation routes, or maintenance notes that should be seen before touching the host. |
Calendar tab
The Calendar tab shows calendar events linked to the host. Use it to check whether alerts or host changes overlap planned work, to verify that a host was included in a change window, or to find the people involved in an operational event.
The tab refreshes its linked event list every 5 seconds and lists up to 250
events for the host, ordered by start time.
Calendar controls
| Control or state | What it does |
|---|---|
| Category | Filters the event table by category. Defaults to All categories. |
| Status | Filters the event table by lifecycle status. Defaults to All statuses. |
| Loading calendar events… | Appears while the host-linked event list is loading. |
| No calendar events linked to this host | Appears when no events are linked to the host. |
| No calendar events match these filters | Appears when category and status filters hide every linked event. |
Filtering is client-side over the loaded host event list. It does not create, edit, or remove event links.
Calendar table
When linked events exist, the Calendar tab shows a table.
| Column | Meaning |
|---|---|
| Event | Event title. Select the row, press Enter, or press Space to open the event details dialog. Rows linked to the signed-in user show Linked to you. Events whose end time is before now show Past and use muted styling. |
| Date and time | Start and end display for the event. All-day events show inclusive calendar days. Timed same-day events show one date and a time range. Timed multi-day events show start date/time and end date/time. Today and tomorrow can be shown as relative labels, with the absolute date in the hover title. |
| Status | Event lifecycle badge: Planned, Confirmed, In progress, Completed, or Cancelled. |
| Category | Event category badge: Maintenance, Patching, Application, Change, Meeting, or Other. |
| Schedule | One-off for single events or Recurring when the event has a recurrence rule. |
The Linked to you badge appears when the signed-in user created the event or is listed as a participant.
Calendar event details dialog
Open an event row to inspect details. The dialog has three tabs.
| Dialog area | What it shows |
|---|---|
| Header | Event title, status badge, and category summary such as Maintenance event. |
| Activity Detail | Description, date and time, timezone, status, category, schedule type, and all-day flag. |
| Hosts | Every host linked to the event. The current host is marked with Current host. Each row shows display name or hostname, hostname, and operating system when available. |
| Participants | Users linked to the event, their email address, and their participant role. |
The Activity Detail tab shows No description provided. when the event
description is empty. The Hosts and Participants tabs show empty-state
messages when no rows are linked.
Calendar event fields
These fields come from the linked calendar event.
| Field | Meaning |
|---|---|
| Title | Human-readable event name. Limited to 200 characters when events are created or edited. |
| Description | Operational detail for the activity. Limited to 5,000 characters when events are created or edited. |
| Date and time | Start and end timestamps. Event end must be after start, and an event duration cannot exceed 31 days. |
| Timezone | Timezone stored on the event. Event creation defaults to UTC when no timezone is supplied. |
| Status | One of planned, confirmed, in_progress, completed, or cancelled. New events default to planned. |
| Category | One of maintenance, patching, application, change, meeting, or other. New events default to maintenance. |
| Schedule | Recurring when the event has a recurrence rule; otherwise One-off. Recurrence supports daily, weekly, monthly, and yearly rules with interval 1 to 99, optional count 1 to 500, or an end date. |
| All day | Yes when the event represents whole calendar days rather than a timed window. |
| Hosts | Linked host records. Calendar event creation and editing allow up to 100 host links. |
| Participants | Linked user records. Calendar event creation and editing allow up to 50 participants. |
| Participant role | One of Owner, Requester, Implementer, Approver, Reviewer, or Observer. |
Calendar mutations are rate limited to 60 changes per minute per user and
instance. Creation and edit workflows also validate that selected hosts and
participants belong to the current CT-Ops instance.
ToDo tab
The ToDo tab lists project tasks linked to the current monitored host. Use it when you are reviewing a host and need to see whether a larger piece of work already includes that server.
Only tasks with a monitored host link appear here. CT-Ops creates that link when a ToDo task’s Host name or IP value matches a monitored host display label, hostname, or known IP address in the current instance. Tasks with unmatched free-typed host values remain visible in ToDo Projects and can be edited later if they should appear on a monitored host.
ToDo table
When linked tasks exist, the ToDo tab shows a table.
| Column or control | Meaning |
|---|---|
| Task | Task title and short description. |
| Project | Project name. Select it to open the full project window with every task across all hosts. |
| Engineer | Assigned user, or Unassigned when no engineer has been selected. |
| Status | Current task status: Not Started, Planned, In Progress, Blocked, Completed, or Cancelled. |
| Planned | Planned start and planned end timestamps when set, formatted with the instance dashboard date setting. |
| Open button | Opens the full project window. |
The full project window lets permitted users update any task in the project, add tasks, change ownership, and leave task comments. Changes refresh the host ToDo tab after the project window saves.
ToDo empty and loading states
| State | Meaning |
|---|---|
| Loading ToDo tasks… | CT-Ops is loading project tasks linked to the host. |
| No project ToDo tasks | No project task currently links to this monitored host. |
Operator guidance
Use notes for durable, host-specific knowledge that should survive handover. Write them so another operator can act without guessing: include the reason, commands or links, owner, expiry or review date, and any risk.
Use calendar events to explain time-bound activity. During incidents, check whether a spike or restart overlaps planned maintenance. During change review, open the event details and confirm the current host, linked hosts, and participants match the intended scope.
Do not use notes as a substitute for monitoring or configuration. If something must alert, create or tune a check. If something changes collection, access, or retention behavior, use the appropriate host or global setting.