Skip to Content
TaresProjects

Projects

A project is what you set up and look after in Tares: a named set of sources, views, triggers, agents and, where needed, MCP servers, with one page. Every object in a project is an ordinary Tares object on its normal page (Sources, Triggers, Tares agents, MCP servers); the project page is the combined view of them.

A project starts in one of two ways:

  • From a Tares template. A template is a ready-made setup: pick one, answer a few questions, click Start, and Tares creates the objects behind it.
  • From existing objects. Assemble a project by hand from sources, views, triggers, agents and MCP servers you already have. Nothing is created; the project adopts them.

The Projects entry sits at the top of the console sidebar because it is the quickest way from an empty instance to something running. The primitives stay below it for when you want to wire things by hand.

Tares templates

TemplateWhat it doesGuide
AI SRE demo (tagged demo)Watches the bundled demo stack: three sources keyed by service (Prometheus metrics, the api-server’s logs, the alerts Prometheus fires), one timeline per service, a trigger that wakes an agent when an alert fires, and an agent that writes the first incident note back onto the timeline. The page has Cause an incident and Clear the fault buttons.Build an AI SRE
Shared code contextWatches commits across your code repositories and keeps one shared context repository current: an agent reads each change and updates the pages that cover it, opening a pull request.Keep shared code context current
Challenger workflowCodex on your laptop challenges Claude Code’s plan and every commit in a marked session; Tares keeps the exchange on one timeline per session, writes the session summary when it ends and proposes what to remember for the next session in that repo. Created by itself the first time a session is marked with /tares:challenger.Challenge Claude Code with a second model

A template marked demo needs the demo stack rather than your own systems; its setup page shows what to run first, with copy buttons, and detects what is already running.

Starting from a template

Open Projects, pick a template card, click Set up. The setup page asks only for what it cannot work out itself: the AI SRE demo looks at Docker and fills in the Prometheus and api-server URLs from the running containers; the shared code context wizard lists the repositories your GitHub token can see. The last step shows exactly what Start creates, with the names of the objects. Some setup steps check themselves (an Anthropic key that is already set shows as done, and can be pasted right there when it is not).

Assembling from existing objects

Next to the templates, From existing objects builds a project without creating anything: name it, tick the sources, views, triggers, agents and MCP servers that are not part of another project, click Start. The project adopts them (the ownership badge appears on their pages) and its page shows the runs of its agents and the last firing of its triggers.

  • Edit changes the list. Removing an object from the project releases it; it is never deleted.
  • Delete removes the project and releases its objects, leaving every one of them in place.
  • There is no plan behind a hand-assembled project, so Repair and customized do not apply: edit the objects on their own pages, the project shows them as they are.

The project page

Each running project has a page with:

  • Cards for the counts that matter (sources or repos, runs, trigger last fired, created).
  • How it works: the chain in four lines.
  • Actions, when the project has them (the AI SRE demo’s Cause an incident and Clear the fault).
  • Runs: every run of the project’s agents, newest first, with status, rounds and the result; each row opens that run on the agent’s page. Runs marked first look ran once when the project started.
  • Configuration: the settings you chose, the sources, the object list (each object linked to its own page with its state), and the change history (created, updated, paused, resumed, repaired).

Pause turns the triggers and agents off; sources keep ingesting so the timeline stays complete. Resume turns them back on. Edit reopens the setup with your values; on save the project re-plans and applies only what changed. Delete removes the objects a template created; events already stored stay unless you tick “also purge the events its sources ingested”.

Ownership

Objects in a project carry a part of project badge on their own pages and are fully ordinary there. For a project started from a template:

  • Edit one by hand and it is marked customized; the project keeps your version on its next re-plan instead of overwriting it.
  • Delete one by hand and the project page lists it as missing, with a Repair button that re-creates it from the plan (Repair also resets a customized object back to the plan).
  • An object that already existed with the same name and belonged to no project is adopted, not duplicated (this is how the AI SRE demo picks up a demo catalog you imported earlier).

In the catalog

A project can be declared in catalog YAML, so a seed catalog can ship one and tares up creates it on first boot:

projects: - template: ai_sre_demo name: AI SRE demo params: prometheus_url: http://localhost:9090 api_server_url: http://localhost:8080 container: tares-demo-api-server - template: custom name: checkout watch objects: - { kind: source, name: checkout_logs } - { kind: trigger, name: checkout_errors } - { kind: agent, name: incident-first-look }

Import creates the project by name or updates an existing one; export includes the section with the parameters (never credential values). The old form (usecases: with recipe:) is still read until two releases after 1.14.

The API

Everything the console does is on the management API:

CallDoes
GET /api/projects/templatesthe available templates with their parameters, tags, setup steps and actions
POST /api/projects/templates/{key}/detectwhat the template can work out from the environment (the AI SRE demo asks Docker what is running)
POST /api/projects {template, name?, params}create from a template; all or nothing
POST /api/projects {template: "custom", name, objects}assemble from existing objects; objects is [{kind, name}, ...]
GET /api/projects and GET /api/projects/{id}list, or one project with its objects
PUT /api/projects/{id} {params, name?} (or {objects} for a custom project)re-plan and apply the difference
POST /api/projects/{id}/pause and /resumetriggers and agents off or on
POST /api/projects/{id}/repair {key}re-create or reset one planned object (template projects only)
POST /api/projects/{id}/actions/{name}run one of the project’s actions (inject with {scenario} and clear on the demo; summarize with {session} on the challenger workflow)
GET /api/projects/{id}/summarythe project plus what its page shows (runs, sources, last fired)
DELETE /api/projects/{id}?purge_events=truedelete, optionally purging ingested events

Objects returned by /api/sources, /api/views, /api/triggers, /api/agents/builtin and /api/mcp-servers carry owned_by (the project id) and customized.

The pre-1.14 routes (/api/usecases*, with their old response shape) keep working until two releases after 1.14.

Want a template that is not here yet? A template is a small Python class (parameters, the objects it plans, an optional summary and actions). Tell us what you would set up next: help@glassflow.ai.

Last updated on