Workcast
A collaborative Kanban task board built into your AI workspace.
Workcast is a full task management system inside Hrida AI Studio. Create boards for any project, break work into tasks, and move them through a structured lifecycle — from open to done. Because it lives alongside your channels and chats, you can paste a task link into a discussion, have an AI help you prioritize your backlog, or claim a task directly from the sidebar.
Why Workcast?
Work management without leaving your AI workspace
No separate Jira tab, no context switch. Create a task, describe it in plain language, assign it, and let your team pick it up — all from the same tool where you already do your thinking.
Structured task lifecycle
Tasks move through defined statuses on a Kanban board. Everyone sees the same board. Moves trigger real-time updates via server-sent events — drag a card and it appears in your colleague's view within seconds.
Audit trail on every task
Every status change, assignment, delegation, and comment is recorded in the task's activity feed. You always know who changed what and when.
Role-aware access
Only the task creator, the assigned user, or an admin can edit a task. Anyone can view; only the right people can change.
Key Features
| 🗂️ Multiple boards | Create as many boards as you need — one per project, team, or initiative |
| 📌 Kanban columns | Six built-in status columns that map to a real delivery workflow |
| 📋 List view | Toggle between Kanban and a flat sortable table — sort by title, status, priority, or due date |
| ⚡ Real-time updates | Board state syncs live via SSE — no refresh needed |
| 🎯 Priority levels | Four priority levels with color-coded badges |
| 📅 Due dates | Optional deadline per task; overdue tasks are highlighted in red with a ⚠ indicator |
| 👤 User picker | Search for any user by name or email when assigning or delegating — avatar + name dropdown |
| 🙋 Claim workflow | Broadcast a task to the team; anyone can claim it |
| 🔁 Delegation | Reassign a task to another user directly from the detail panel with the user search picker |
| ✏️ Inline editing | Edit title, description, priority, assignee, due date, labels, and milestone without leaving the board |
| 🏷️ Labels | Tag tasks with color-coded labels (bug, feature, docs, design, research, chore, blocked) |
| ⬡ Milestones | Group tasks under a milestone name — filter and view progress at a glance |
| 🔍 Filters | Filter by My tasks, priority, label, or milestone from the board header |
| 🔀 Subtasks | Break any task into subtasks with a progress bar on the parent card |
| 💬 Comments | Threaded comments on each task for discussion without leaving the board |
| 📜 Activity feed | Full audit log: created, status changed, assigned, delegated, commented |
Task Lifecycle
Tasks progress through six statuses. Each status maps to a column on the Kanban board.
Open → Assigned → In Progress → Review → Done
↘ Cancelled
| Status | Meaning |
|---|---|
| Open | Task created, not yet assigned to anyone |
| Assigned | Claimed by or assigned to a specific user |
| In Progress | Active work underway |
| Review | Ready for review or approval |
| Done | Completed |
| Cancelled | Dropped; visible on the board but excluded from active filters |
Tasks assigned directly at creation time start in Assigned rather than Open. Tasks claimed via the claim action move from Open to Assigned automatically.
Move arrows appear on each card to shift left or right through the columns. The Cancelled column is a terminal state — you can move a task into Cancelled but not past it.
Priority Levels
| Priority | Badge color | Use when |
|---|---|---|
| Low | Grey | Nice-to-have; no deadline pressure |
| Medium | Blue | Standard work item (default) |
| High | Orange | Important; needs attention this sprint |
| Urgent | Red | Blocking or time-critical |
Boards
A board is a named workspace for a set of related tasks. Think of it as a project: one board per product, team, initiative, or sprint.
Creating a board
- Go to Dashboard → Workcast in the sidebar
- Click + New Board in the left panel
- Enter a name and optional description
- Click Create
The board appears immediately in the list. Click it to open the Kanban view.
Switching boards
Click any board name in the left panel. The Kanban view loads its tasks and subscribes to its SSE stream — real-time updates begin immediately.
Deleting a board
Hover the board name and click the × icon. A confirmation prompt appears before deletion. Deleting a board removes all its tasks and activity permanently.
Board deletion is permanent and cannot be undone. All tasks on the board are deleted with it.
Tasks
Creating a task
- Open a board and click + New Task in the header
- Fill in the task form:
| Field | Required | Notes |
|---|---|---|
| Title | Yes | Plain-text name; cannot be blank |
| Description | No | Multi-line details, context, acceptance criteria |
| Priority | Yes | Defaults to Medium |
| Assignee | No | Type a name or email to search users; select from the dropdown. Leaves task in Open if omitted |
| Due date | No | Calendar picker; displayed on the card and in the detail panel |
| Milestone | No | Free-text grouping label (e.g. v1.0, Q3 Sprint); autocomplete suggests existing milestones on the board |
| Labels | No | Pick one or more color-coded labels from the preset list |
- Click Create Task
If an assignee is set, the task starts in Assigned. Otherwise it appears in Open for anyone to claim.
Creating a subtask
Open a task's detail panel, scroll to the Subtasks section, and click + Add. The task form opens pre-linked to the parent. Subtasks are hidden from the main board columns — they appear only in the parent task's detail panel with a progress bar showing done/total.
Moving tasks
Two ways to change a task's status:
- Arrow buttons on the card — hover a card to reveal ← and → arrows. Each click shifts the task one column left or right.
- Quick status picker in the detail panel — click any task card to open the detail panel. Under Move to, every column except the current one is shown as a button. Click any column to jump directly to it, bypassing intermediate columns. A Cancel shortcut also appears to move the task to Cancelled from any non-terminal status.
Moves are instant and broadcast to all viewers on the board via SSE.
Claiming a task
Open tasks without an assignee show a Claim Task button in the task detail panel. Clicking it assigns the task to you and moves it to Assigned. You cannot claim a task you already own.
Editing a task
Task creators, the assigned user, and admins see an Edit (pencil) button in the detail panel header. Clicking it switches the panel into edit mode with all fields as editable inputs. Changes are saved with a single Save click and broadcast to all connected clients via SSE.
Fields available to edit: title, description, priority, due date, assignee (searchable user picker), labels, and milestone.
Delegating a task
In the task detail panel, users who can edit the task see a Reassign Task button. Clicking it reveals a searchable user picker — type a name or email to find a colleague, then click their entry to confirm. The task's assignee is updated immediately, their avatar appears in the meta row, and the change is logged in the activity feed.
Delegation is also available via the API: POST /api/v1/workcast/tasks/{id}/delegate with body {"user_id": "<target>"}.
Removing a task
In the task detail panel, click Delete. A confirmation prompt appears. The task creator and admins see the Delete button; other users do not.
Labels
Labels are color-coded tags you attach to a task to indicate its type or status.
| Label | Color | Typical use |
|---|---|---|
bug | Red | A defect or regression |
feature | Blue | New functionality |
docs | Yellow | Documentation update |
design | Purple | Visual or UX work |
research | Cyan | Investigation or spike |
chore | Grey | Maintenance, refactoring |
blocked | Orange | Waiting on an external dependency |
Any task can have multiple labels. They render as small badges on the card in both Kanban and List views, and as larger badges in the detail panel. The label filter in the header restricts visible tasks to those with the selected label.
Milestones
A milestone is a free-text grouping name you assign to tasks — for example v1.0, Q3 Sprint, or Beta Release. Multiple tasks share the same milestone string to indicate they belong together.
- Set a milestone when creating or editing a task
- Existing milestone names on the board are suggested via autocomplete
- The milestone filter in the header shows only tasks in that milestone
- A milestone name renders as
⬡ milestone-nameon each card
Views
Workcast supports two board views, toggled with the button group in the header.
Kanban view (default)
Columns for each status. Task cards show priority badge, title, labels, milestone, subtask progress bar, due date, and assignee.
List view
A flat sortable table showing all tasks across all columns. Click any column header to sort; click again to reverse.
| Column | Sortable |
|---|---|
| Title (with subtask count) | Yes |
| Status | Yes |
| Priority | Yes (urgent → low) |
| Labels | No |
| Milestone | No |
| Assignee | No |
| Due date | Yes |
| Created | Yes |
Click any row to open the task in the detail panel. The Claim button appears inline for unclaimed Open tasks.
Filters
The filter bar in the board header narrows which tasks appear in the current view.
| Filter | Options |
|---|---|
| My tasks | Toggle button — when active, shows only tasks you created or are assigned to |
| Priority | All / Urgent / High / Medium / Low |
| Label | All / bug / feature / docs / design / research / chore / blocked |
| Milestone | All / (any milestone name present on the board) |
Active filters are highlighted. Click My tasks to toggle it, or click any other filter selector to change its value. Filters apply to both Kanban and List views. The column card count updates to reflect the filtered total.
Subtasks are never shown in the main board columns or the list view — they appear only inside their parent task's detail panel.
Overdue tasks
A task is overdue when its due date has passed and its status is not Done or Cancelled. Overdue tasks are highlighted with a ⚠ prefix and red due date text in both Kanban cards and the List view. The indicator appears automatically — no action is required.
Task Detail Panel
Click any task card to open its detail panel on the right side of the board.
The panel shows:
- Title, description, priority, labels, milestone, status, due date, created date
- Created by — avatar and display name of the user who created the task
- Assigned user — avatar and display name; resolved from the server on first view, cached for subsequent opens
- Move to — quick status picker: jump directly to any column with a single click
- Subtasks — progress bar showing done/total; click any subtask to open its own detail; + Add creates a new subtask linked to this task
- Activity feed — chronological audit log of every action on this task, with actor name and timestamp. Comments appear inline with system events
- Comment box — type a comment and press Enter or Send; appears immediately in the feed
- Edit button (pencil icon) — shown to task creator, assignee, and admins; switches to inline edit mode
- Claim Task — shown when the task is Open and unassigned
- Reassign Task — shown to task creator, assignee, and admins; opens a searchable user picker to delegate
- Delete — shown to the task creator and admins; triggers a confirmation prompt
Real-time Updates
Workcast uses Server-Sent Events (SSE) to push board changes to every connected client. When any user creates, updates, deletes, claims, or delegates a task, or adds a comment — all other users viewing the same board receive the update and the task list refreshes automatically. No polling, no manual refresh needed.
SSE subscriptions are scoped to the active board. Switching boards closes the previous subscription and opens a new one.
SSE event types
Connect to GET /api/v1/workcast/boards/{id}/stream. Each event is a JSON object on the data: line.
| Event | Payload fields | Fired when |
|---|---|---|
connected | board_id | Connection established |
task_created | task_id, board_id | New task created on this board |
task_updated | task_id, changes (list of updated fields) | Task fields changed |
task_deleted | task_id | Task removed |
task_claimed | task_id, by (user_id) | Task claimed by a user |
task_delegated | task_id, to (user_id) | Task reassigned |
ping | — | Keepalive heartbeat |
The frontend re-fetches the full task list on any non-ping, non-connected event, so all clients stay in sync regardless of the change type.
Access Control
Each board has a visibility setting that controls who can see and contribute to it.
Board visibility
| Visibility | Who can see the board | Who can create tasks |
|---|---|---|
| Public (default) | All authenticated users | All authenticated users |
| Restricted | Board creator · System admins · Explicit members | Members with Editor or Admin role |
Switch a board's visibility in the Share panel (board admins only). Changing a public board to restricted does not remove any tasks — it simply hides the board from users who are not members.
Member roles
When a board is restricted, each member has one of three roles:
| Role | View board & tasks | Create tasks | Edit/delete own tasks | Edit any task | Board settings & members |
|---|---|---|---|---|---|
| Viewer | ✅ | ❌ | ❌ | ❌ | ❌ |
| Editor | ✅ | ✅ | ✅ | ❌ | ❌ |
| Admin | ✅ | ✅ | ✅ | ✅ | ✅ |
Board creators and system admins always have implicit Admin access regardless of whether they appear in the member list.
Adding members
Members can be individuals (users) or whole teams (groups). Groups in Hrida AI Studio are channels with type = group. Adding a group grants every current member of that group the assigned role automatically — no per-user grants needed.
To add a member:
- Open the board and click Share in the header (visible to board admins only)
- Choose User or Group from the type selector
- Search for the user by name or email (or paste a Group channel ID)
- Choose a role: Viewer, Editor, or Admin
- Click Add member
To change a role or remove a member: Open the Share panel → find the member row → change the role selector or click the × icon.
Organizational patterns
Team board: Create one board per team, add the team's group channel as Editor. Every team member can contribute; add individuals as Admin if they need settings access.
Project with multiple boards: Create separate boards for backend, frontend, and QA. Share the same team group across all three. Each board has its own task columns and its own SSE stream.
Cross-team board: Add multiple groups with different roles — e.g., one team as Editor and another team as Viewer.
Stakeholder view: Add external stakeholders as Viewers so they can follow progress without creating or editing tasks.
Permissions
| Action | Who can do it |
|---|---|
| View a public board and its tasks | All authenticated users |
| View a restricted board and its tasks | Creator · system admin · explicit members |
| Create a board | All authenticated users |
| Update board settings (name, description, visibility) | Board creator · system admin · board admin members |
| Delete a board | Board creator · system admin · board admin members |
| Manage board members | Board creator · system admin · board admin members |
| Create a task | Editor + members (all users on public boards) |
| Create a subtask | Editor + members (all users on public boards) |
| Edit a task | Task creator · assigned user · board admin · system admin |
| Delete a task | Task creator · board admin · system admin |
| Move a task status | Any user with at least Viewer access |
| Claim a task | Any user with at least Editor access (if task is unassigned) |
| Delegate a task | Task creator · assigned user · board admin · system admin |
| Add a comment | Any user with at least Viewer access |
Managing Tasks from Chat
With native function calling enabled, models can work with Workcast directly from a chat. Ask things like "File a high-priority task on the Platform board to rotate the API keys" or "What's overdue on the Support board?" and the model calls the built-in tools:
| Tool | What it does |
|---|---|
create_workcast_task | Create a task on a board |
list_workcast_tasks | List tasks, filtered by status, assignee, or priority |
update_workcast_task | Change status, priority, assignee, title, description, or due date |
report_workcast_tasks | Summarize a board: counts by status and priority, overdue and unassigned tasks |
The tools respect the same board access rules as the UI and API. Turn them off for a model by disabling the Workcast category under Workspace > Models > Edit > Builtin Tools. See the tool reference for parameters.
Getting Started
- Go to Dashboard → Workcast in the sidebar
- Click + New Board and name your first board
- Click + New Task to create your first task
- Set a priority, write a description, and optionally assign it to someone
- Move tasks across columns as work progresses
Use Cases
Sprint planning
Create a board for each sprint. Add all planned tasks in Open. Assign them during planning. Engineers claim tasks as they start work, moving them through In Progress → Review → Done.
Bug triage
One board for incoming bugs. Triage adds priority badges and assigns owners. The Cancelled column holds bugs that won't be fixed in this cycle without losing the record.
Content pipeline
A board for every content type. Writers move pieces from Open (idea) → In Progress (draft) → Review (edit) → Done (published). Comments in the task replace back-and-forth email.
On-call handoff
Create tasks for every open incident or follow-up item. Claim the ones you're handling. Delegate or leave unclaimed for the next person on rotation. The activity feed shows exactly who touched what and when.
API
Boards
| Method | Path | Description |
|---|---|---|
GET | /api/v1/workcast/boards | List boards visible to the caller |
POST | /api/v1/workcast/boards | Create a board (name, optional description, optional visibility) |
GET | /api/v1/workcast/boards/{id} | Get a single board (403 if restricted and no access) |
PATCH | /api/v1/workcast/boards/{id} | Update name, description, or visibility (board admin only) |
DELETE | /api/v1/workcast/boards/{id} | Delete a board and all its tasks (board admin only) |
Board members
| Method | Path | Description |
|---|---|---|
GET | /api/v1/workcast/boards/{id}/members | List all explicit members of a board |
POST | /api/v1/workcast/boards/{id}/members | Add a member — body: { subject_type, subject_id, role } |
PATCH | /api/v1/workcast/boards/{id}/members/{mid} | Change a member's role — body: { subject_type, subject_id, role } |
DELETE | /api/v1/workcast/boards/{id}/members/{mid} | Remove a member from the board |
subject_type is "user" or "group". role is "viewer", "editor", or "admin".
Tasks
| Method | Path | Description |
|---|---|---|
GET | /api/v1/workcast/boards/{id}/tasks | List tasks — query params: status_filter, priority, assigned_user_id, page |
POST | /api/v1/workcast/boards/{id}/tasks | Create a task (Editor+ access required on restricted boards) |
GET | /api/v1/workcast/boards/{id}/stream | SSE stream for real-time board updates |
GET | /api/v1/workcast/tasks/{id} | Get a single task |
PATCH | /api/v1/workcast/tasks/{id} | Update task fields — partial update |
DELETE | /api/v1/workcast/tasks/{id} | Delete a task |
POST | /api/v1/workcast/tasks/{id}/claim | Claim an unassigned task |
POST | /api/v1/workcast/tasks/{id}/delegate | Reassign to another user ({"user_id": "..."}) |
GET | /api/v1/workcast/tasks/{id}/activity | Full chronological activity log |
POST | /api/v1/workcast/tasks/{id}/comment | Add a comment ({"comment": "..."}) |
GET | /api/v1/workcast/me | Active tasks assigned to or created by the calling user (cross-board) |