ArgentOSDocs

Projects

Multi-step task grouping — project lifecycle, agent tools, and dashboard integration.

Overview

The Task System gives the agent accountability. Tasks flow through a lifecycle (pending → in_progress → completed/failed/blocked), the agent manages them via tools, and the dashboard shows real-time progress.

Projects group related tasks under a parent. The agent decomposes work into projects when it detects multi-step intent.

Architecture

Data Layer

Tasks live in ~/.argentos/data/dashboard.db (SQLite), shared by the agent runtime and dashboard API.

tasks table
├── id (UUID)
├── title, description
├── status: pending | in_progress | blocked | completed | failed | cancelled
├── priority: urgent | high | normal | low | background
├── source: user | agent | heartbeat | schedule
├── parent_task_id → tasks(id)   # FK for project children
├── metadata (JSON)              # { type: "project" } for project parents
├── tags (JSON array)
├── due_at, started_at, completed_at
└── agent_id, session_id, channel_id

A project is a task with metadata.type = "project". Child tasks reference it via parent_task_id. No schema migration needed.

Agent Tool

The tasks tool exposes these actions:

ActionDescription
addCreate a task (optionally under a project via parentTaskId)
listList tasks with optional status/priority filters
startMove task to in_progress
completeMark task as completed
blockMark task as blocked with reason
failMark task as failed with reason
deleteRemove a task
searchFull-text search across tasks
project_createCreate a project with child tasks
project_listList all projects with progress
project_detailGet project with all child tasks

Dashboard

  • Tasks tab — Active tasks, pending tasks, recently completed
  • Projects tab — Project cards with progress bars, click to expand child tasks
  • Schedule tab — Cron jobs and scheduled tasks

Markers

The agent emits markers in its response stream for instant UI updates:

  • [TASK_DONE:title] — Dashboard immediately marks matching task as done
  • [TTS:text] — Dashboard speaks the text via ElevenLabs

These provide instant feedback before the next 5-second poll cycle.

Task Lifecycle

   ┌──────────┐
   │  PENDING  │
   └─────┬─────┘
         │ tasks.start()

   ┌──────────────┐
   │ IN_PROGRESS  │
   └──┬─────┬─────┘
      │     │
      │     ├──► COMPLETED (tasks.complete())
      │     │
      ├──►  BLOCKED (tasks.block(reason))
      │          │
      │          └──► IN_PROGRESS (unblock → restart)

      └──► FAILED (tasks.fail(reason))

Project Flow

  1. User describes multi-step work
  2. Agent creates project via tasks tool with action: project_create
  3. Dashboard shows project card with 0/N progress
  4. Agent works through child tasks, calling start and complete
  5. Dashboard updates progress bar in real-time
  6. When all children complete, project shows as done

Example

User: "Set up monitoring for the production servers"

Agent creates:

Project: Production Server Monitoring
├── Install Prometheus and Grafana
├── Configure alert rules
├── Set up dashboards
├── Test alert pipeline
└── Document runbook

API Routes

MethodPathDescription
GET/api/tasksList all tasks
POST/api/tasksCreate a task
PATCH/api/tasks/:idUpdate a task
DELETE/api/tasks/:idDelete a task
POST/api/tasks/:id/startStart a task
POST/api/tasks/:id/completeComplete a task
GET/api/projectsList projects with counts
GET/api/projects/:idProject detail with children
POST/api/projectsCreate a project

Key Files

FilePurpose
src/data/tasks.tsCore TasksModule — CRUD, projects, search
src/data/types.tsTask, Project, Filter type definitions
src/data/connection.tsSQLite connection manager
src/data/index.tsDataAPI facade
src/agents/tools/tasks-tools.tsAgent tool definition
dashboard/src/db/tasksDb.cjsDashboard-side DB access
dashboard/api-server.cjsREST API routes
dashboard/src/hooks/useTasks.tsReact hook for task/project state
dashboard/src/components/TaskList.tsxTask & project UI components