vitrinka.docs

Eve

The run view — where the project's AI lives, how you queue, steer and interrupt it, how an organization chooses its AI, and what it talks to underneath.

One run view, four places

Open Eve on the project's page at /p/<project>/eve, in a board's Chat island (its eve channel), in a task's conversation sheet, or with ⌘J anywhere else in the app. These places share the same conversation interface, but show threads for their scope: project, board or task. A thread's visibility also depends on your access.

What you see

A run is a transcript folded from the backend's event stream: your messages, the assistant's text, and typed blocks — tool calls with their results, files, a task filed, a board composed — rendered by the same element painter the boards use. Sessions are listed per scope (project, task or board), so a task's thread is that task's history with the AI, not a global chat.

Queue, steer, interrupt

You do not wait for a turn to end:

  • Queue — send while a run is busy and the message is queued for the next turn boundary; it shows as queued until the backend picks it up.
  • Steer — interrupt a run durably, optionally with the message it should take up next; the run stops at its next safe point and continues with your instruction.
  • Per-turn model and effort — a send can name the model and effort for that turn when the backend's catalog offers them.

Everything is live over a workspace event bus scoped to what you can see, so a run another person started updates in your view too.

What Eve does in the PM module

  • Coordinates a release — when the optional coordinator is enabled, it reads bounded readiness, candidate and evidence records and explains the returned blockers. The Overview remains deterministic; Eve cannot mark evidence verified or record a shipment.
  • Answers about a task — ask from the task's conversation, or mention @eve in a comment and the answer lands as a reply.
  • Files and triages — "make these three tasks" goes through intake as drafts, never straight into the backlog.
  • Filters — an available backend can turn a request into a task filter. Offline, the local parser handles a limited set of English phrases.
  • Writes rules — a rule described in words becomes the same typed rule document, dry-runnable before it is enabled.
  • Enriches drafts — optional type, priority and labels on intake, failing open.
  • Distils and summarises on a label — eve-distill asks once for a digest of the task's record; eve-summarize keeps a running summary while the label is on.
  • Writes meeting notes — notes, decisions and action-item drafts for a meeting task (vitrinka task meeting-notes).

Choosing the AI

The AI is chosen at two levels, and the automatic work on top of it is switchable at both.

  • The organization's provider — Settings → Organization → AI picks the one provider every workspace uses for @mentions and review passes: Eve — managed AI (billed against the organization's AI credits), OpenRouter, OpenAI or Anthropic with your own key, ChatGPT or Claude Code through a one-time subscription login with no key, or any OpenAI-compatible endpoint. test it before you save; disconnect removes it.
  • The workspace — Settings → Workspace → AI holds use EVE AI (off keeps existing runs readable, while new sends answer with a notice), the default model and reasoning effort for the workspace, and, for admins, the backend override.
  • Automatic flows — intake enrichment, the morning brief, the brief refresh, todo conditions and the todo backfill run without anyone asking; the lookup decider, where Eve picks among an ambiguous task lookup's candidates, stays off until someone switches it on. The organization's AI page switches each one on or off; a workspace follows that default or switches a flow off for itself, may switch the lookup decider on unless the organization switched it off, and off at either level wins. An agent's deep lookup (deep: true) asks the decider whatever its switch says.
  • Spend — the workspace's AI page shows managed AI spending this month, reserved and completed calls and token activity; credits are bought under Plan & billing.

The backend underneath

Vitrinka does not ship a model. It proxies /api/v1/eve/{path} to an AI backend that speaks the public AI Backend Protocol — a normative wire contract, so any conforming backend plugs into any deployment unchanged. The deployment sets AI_BACKEND_URL and AI_BACKEND_TOKEN; a workspace admin can point their workspace at a different backend, and that override wins over the deployment's. A backend on a private, loopback or internal address, like an organization's own AI endpoint there, works only once deployment authority has saved it (Outbound targets). On the SaaS, every non-read call passes the workspace's AI credit gate first; a workspace on its own backend is not metered.

The repository also contains the optional Vitrinka-owned apps/eve runtime and packaged console host, deployed separately from the Go product. They consume public @evelinka-ai/core and @evelinka-ai/console packages pinned to 0.5.1. Activation requires those packages to be published, a registry lockfile and runtime acceptance checks; a build from packed prerequisite artifacts alone does not establish registry readiness.

The release coordinator uses typed, bounded server reads. A model or tool outage produces an inconclusive explanation rather than invented readiness; the task engine, scope decisions and release authority remain on the server.

An air-gapped deployment with no backend configured keeps everything else: the built-in rules, the local filter parser and the whole task engine run without Eve.

On this page