<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: vem.dev</title>
    <description>The latest articles on DEV Community by vem.dev (@vem).</description>
    <link>https://dev.to/vem</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3889000%2F603849b1-62ab-4485-872d-2e67dd31524f.png</url>
      <title>DEV Community: vem.dev</title>
      <link>https://dev.to/vem</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vem"/>
    <language>en</language>
    <item>
      <title>Mastering vem Tasks: Create, Prioritize, Implement, and Ship — A Complete Guide</title>
      <dc:creator>vem.dev</dc:creator>
      <pubDate>Tue, 21 Apr 2026 16:22:48 +0000</pubDate>
      <link>https://dev.to/vem/mastering-vem-tasks-create-prioritize-implement-and-ship-a-complete-guide-4a41</link>
      <guid>https://dev.to/vem/mastering-vem-tasks-create-prioritize-implement-and-ship-a-complete-guide-4a41</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;🚀 &lt;strong&gt;vem is in early access&lt;/strong&gt; — we're looking for our first users. If you try it and find it useful, we'd love to hear from you. &lt;strong&gt;Early access is completely free.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Everything in vem revolves around tasks. A task is more than a to-do item — it carries the metadata your AI agent needs to implement it correctly: priority, type, time estimate, validation steps, dependencies, and a targeted context block written specifically for the agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is a complete guide to every task feature in vem.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Prerequisites — Install vem and Link a Project
&lt;/h2&gt;

&lt;p&gt;You need the vem CLI installed, an authenticated account, and a repository linked to a vem cloud project. If you completed the Cycles or Memory tutorials you are already set up — jump to the next section.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @vemdev/cli
vem login &amp;lt;your-api-key&amp;gt;   &lt;span class="c"&gt;# key from vem.dev/keys&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;my-project &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; vem init &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; vem &lt;span class="nb"&gt;link
&lt;/span&gt;vem status                 &lt;span class="c"&gt;# confirm everything is connected&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Task: vem's Atomic Unit of Work
&lt;/h2&gt;

&lt;p&gt;Everything in vem revolves around tasks. A task is more than a to-do item — it carries the metadata your AI agent needs to implement it correctly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Priority:&lt;/strong&gt; low / medium / high / critical&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type:&lt;/strong&gt; feature / bug / chore / spike / enabler&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Estimate:&lt;/strong&gt; hours (used in cycle capacity planning)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation steps:&lt;/strong&gt; shell commands that must pass before the task is considered done&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dependencies:&lt;/strong&gt; blocked-by and depends-on relationships between tasks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Impact score:&lt;/strong&gt; RICE-based 0-100 score for data-driven prioritization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tasks move through a clear lifecycle: &lt;code&gt;todo&lt;/code&gt; → &lt;code&gt;ready&lt;/code&gt; → &lt;code&gt;in-progress&lt;/code&gt; → &lt;code&gt;done&lt;/code&gt; (or &lt;code&gt;blocked&lt;/code&gt; when something is in the way). At any point an agent can pick up a &lt;code&gt;ready&lt;/code&gt; task, load its full context, and start working — without any setup instructions from you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Create a Task with Rich Metadata
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vem task add&lt;/code&gt; accepts a full set of flags on a single command. You can create a bare-bones task with just a title, or a fully-specified task that gives your AI agent everything it needs before it writes the first line of code.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;--validation&lt;/code&gt; flag is particularly powerful: it defines the shell commands that must pass before the task can be considered done. When you run &lt;code&gt;vem cycle validate&lt;/code&gt; at the end of a sprint, vem re-runs these commands and flags any task whose validation steps now fail — catching regressions automatically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vem task add &lt;span class="s2"&gt;"Implement JWT refresh token rotation"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--priority&lt;/span&gt; high &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--type&lt;/span&gt; feature &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--description&lt;/span&gt; &lt;span class="s2"&gt;"Replace static tokens with rotating refresh tokens"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--estimate-hours&lt;/span&gt; 4 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--validation&lt;/span&gt; &lt;span class="s2"&gt;"pnpm test:auth, pnpm lint"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--depends-on&lt;/span&gt; TASK-001

&lt;span class="c"&gt;# Quick task (interactive mode when title is omitted)&lt;/span&gt;
vem task add
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Task Lifecycle — Ready, Start, Block, Done
&lt;/h2&gt;

&lt;p&gt;Tasks start in &lt;code&gt;todo&lt;/code&gt; status. When a task is refined and ready to be picked up — requirements clear, dependencies met — mark it &lt;code&gt;ready&lt;/code&gt;. This is the queue that agents and the web runner pull from.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vem task start&lt;/code&gt; sets the start timestamp used for cycle time measurement. &lt;code&gt;vem task done&lt;/code&gt; marks it complete and records evidence. Use &lt;code&gt;vem task block&lt;/code&gt; when a task is stuck, and &lt;code&gt;vem task unblock&lt;/code&gt; when the blocker is resolved.&lt;/p&gt;

&lt;p&gt;The lifecycle is designed so every state transition is intentional and auditable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Refine and mark ready to pick up&lt;/span&gt;
vem task ready TASK-002

&lt;span class="c"&gt;# Start working (records start timestamp for cycle time)&lt;/span&gt;
vem task start TASK-002

&lt;span class="c"&gt;# Mark done with evidence of completion&lt;/span&gt;
vem task &lt;span class="k"&gt;done &lt;/span&gt;TASK-002 &lt;span class="nt"&gt;--evidence&lt;/span&gt; &lt;span class="s2"&gt;"Added retry with backoff in src/api/client.ts — tests pass"&lt;/span&gt;

&lt;span class="c"&gt;# Mark blocked and explain why&lt;/span&gt;
vem task block TASK-002 &lt;span class="nt"&gt;--reason&lt;/span&gt; &lt;span class="s2"&gt;"Waiting for API key rotation spec"&lt;/span&gt;

&lt;span class="c"&gt;# Unblock when resolved&lt;/span&gt;
vem task unblock TASK-002
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Subtasks and Dependencies
&lt;/h2&gt;

&lt;p&gt;Large tasks can be broken into subtasks using &lt;code&gt;--parent&lt;/code&gt;. Subtasks inherit the parent's cycle assignment and appear grouped in &lt;code&gt;vem task subtasks&lt;/code&gt;. This is useful for features that span multiple implementation areas but share a single acceptance criterion.&lt;/p&gt;

&lt;p&gt;Dependencies between tasks are tracked with &lt;code&gt;--depends-on&lt;/code&gt; (soft dependency — informational) and &lt;code&gt;--blocked-by&lt;/code&gt; (hard block — the blocking task must complete first). These relationships feed into the cycle board and agent context so agents understand sequencing without you having to explain it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Break a task into subtasks&lt;/span&gt;
vem task add &lt;span class="s2"&gt;"Write unit tests for token rotation"&lt;/span&gt; &lt;span class="nt"&gt;--parent&lt;/span&gt; TASK-007 &lt;span class="nt"&gt;--order&lt;/span&gt; 1
vem task add &lt;span class="s2"&gt;"Update API docs for new token flow"&lt;/span&gt; &lt;span class="nt"&gt;--parent&lt;/span&gt; TASK-007 &lt;span class="nt"&gt;--order&lt;/span&gt; 2

&lt;span class="c"&gt;# View the subtask tree&lt;/span&gt;
vem task subtasks &lt;span class="nt"&gt;--parent&lt;/span&gt; TASK-007

&lt;span class="c"&gt;# Mark a dependency&lt;/span&gt;
vem task update TASK-008 &lt;span class="nt"&gt;--depends-on&lt;/span&gt; TASK-007
vem task update TASK-009 &lt;span class="nt"&gt;--blocked-by&lt;/span&gt; TASK-007
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Per-Task Agent Context
&lt;/h2&gt;

&lt;p&gt;Every task has a dedicated context block — a free-text note written by you (or a previous agent) that the AI agent reads before starting work. This is different from the project-level &lt;code&gt;CONTEXT.md&lt;/code&gt;: it is task-specific, pointing the agent at the exact file, function, or edge case that matters for this particular task.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vem task context &amp;lt;id&amp;gt; --set&lt;/code&gt; replaces the context. &lt;code&gt;--append&lt;/code&gt; adds to it. &lt;code&gt;--clear&lt;/code&gt; removes it. When the MCP server sends a task to an agent, the task context is included in the payload alongside the task metadata — so your agent knows exactly where to look without any back-and-forth.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set targeted context for the AI agent&lt;/span&gt;
vem task context TASK-001 &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="s2"&gt;"Offline mode throws an unhandled rejection when
the API is unreachable. Fix in src/sync/push.ts — catch the network error and
write to .vem/queue/ instead. Test with: npm test -- --grep offline"&lt;/span&gt;

&lt;span class="c"&gt;# Append additional context&lt;/span&gt;
vem task context TASK-001 &lt;span class="nt"&gt;--append&lt;/span&gt; &lt;span class="s2"&gt;"Related: the queue flush logic is in src/sync/flush.ts"&lt;/span&gt;

&lt;span class="c"&gt;# View what the agent will see&lt;/span&gt;
vem task context TASK-001
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Impact Scoring — Prioritize with Data
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vem task score&lt;/code&gt; shows all tasks ranked by their impact score (0-100). Scores use a RICE-inspired model: tasks with no score show &lt;code&gt;—&lt;/code&gt; and appear at the bottom. When you run &lt;code&gt;vem task score &amp;lt;id&amp;gt; --set &amp;lt;score&amp;gt;&lt;/code&gt;, you can attach reasoning that is stored with the score and shown to agents during prioritization.&lt;/p&gt;

&lt;p&gt;Impact scores feed directly into cycle planning — when you create a new cycle, vem can suggest which backlog tasks have the highest combined impact for the planned scope.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# View all tasks ranked by score&lt;/span&gt;
vem task score

&lt;span class="c"&gt;# Score a specific task with reasoning&lt;/span&gt;
vem task score TASK-001 &lt;span class="nt"&gt;--set&lt;/span&gt; 92 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--reasoning&lt;/span&gt; &lt;span class="s2"&gt;"Critical path: all auth features blocked until offline mode is fixed"&lt;/span&gt;

&lt;span class="c"&gt;# Score multiple tasks&lt;/span&gt;
vem task score TASK-005 &lt;span class="nt"&gt;--set&lt;/span&gt; 45 &lt;span class="nt"&gt;--reasoning&lt;/span&gt; &lt;span class="s2"&gt;"Nice to have — no active blockers"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Validation Steps — Built-In Quality Gates
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;--validation&lt;/code&gt; flag on &lt;code&gt;vem task add&lt;/code&gt; (or &lt;code&gt;vem task update&lt;/code&gt;) stores a comma-separated list of shell commands that define what "done" means for that task. At the end of each sprint, &lt;code&gt;vem cycle validate&lt;/code&gt; re-runs all validation steps for completed tasks and flags any that now fail.&lt;/p&gt;

&lt;p&gt;This is how vem detects regressions: a feature implemented in sprint 1 may break when sprint 3 refactors the same module. Cycle validation catches it before it ships. The validation steps are also shown to agents during implementation so they know exactly how to verify their work.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set validation steps at creation&lt;/span&gt;
vem task add &lt;span class="s2"&gt;"Add rate limiting to API endpoints"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--validation&lt;/span&gt; &lt;span class="s2"&gt;"pnpm test:api, pnpm test:integration, pnpm build"&lt;/span&gt;

&lt;span class="c"&gt;# Update validation steps on an existing task&lt;/span&gt;
vem task update TASK-004 &lt;span class="nt"&gt;--validation&lt;/span&gt; &lt;span class="s2"&gt;"pnpm test, pnpm lint, pnpm type-check"&lt;/span&gt;

&lt;span class="c"&gt;# Run cycle validation at sprint end&lt;/span&gt;
vem cycle validate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Flow Metrics — Measure What Matters
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vem task flow&lt;/code&gt; shows the flow metrics for a specific task or a project-wide summary. For a single task: lead time (created → done), cycle time (started → done), and time spent in each status. For the project: throughput, average cycle time, and current work-in-progress count.&lt;/p&gt;

&lt;p&gt;These metrics do not require any extra setup — they are calculated automatically from the timestamps recorded by &lt;code&gt;vem task start&lt;/code&gt; and &lt;code&gt;vem task done&lt;/code&gt;. Over multiple sprints the data becomes a reliable baseline for estimating how long similar work takes and where tasks tend to get stuck.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Flow metrics for a specific task&lt;/span&gt;
vem task flow TASK-003

&lt;span class="c"&gt;# Project-wide summary (throughput, avg cycle time, WIP)&lt;/span&gt;
vem task flow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Agent-Powered Implementation
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vem agent --task TASK-X&lt;/code&gt; launches your configured AI agent (Copilot, Claude, Gemini, Codex) with the task's full context pre-loaded: task description, per-task context, project &lt;code&gt;CONTEXT.md&lt;/code&gt;, active cycle, and related decisions. The agent works in your local repository and can create branches, write code, run tests, and open PRs.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;--task&lt;/code&gt; flag scopes the agent to a single task. vem wraps the agent session to record which task was worked on, what commands were run, and what was completed — building the audit trail in &lt;code&gt;vem task sessions&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy:&lt;/strong&gt; your AI provider keys (OpenAI, Anthropic, etc.) are stored in your local environment variables and never sent to the vem cloud. vem only orchestrates which task to run — the agent execution happens entirely on your machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Run Copilot on a specific task&lt;/span&gt;
vem agent &lt;span class="nt"&gt;--task&lt;/span&gt; TASK-001

&lt;span class="c"&gt;# Use a different agent&lt;/span&gt;
vem agent &lt;span class="nt"&gt;--task&lt;/span&gt; TASK-001 &lt;span class="nt"&gt;--agent&lt;/span&gt; claude

&lt;span class="c"&gt;# Run without strict memory enforcement (not recommended)&lt;/span&gt;
vem agent &lt;span class="nt"&gt;--task&lt;/span&gt; TASK-001 &lt;span class="nt"&gt;--no-strict-memory&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  PR Iteration — Continue from an Existing Branch
&lt;/h2&gt;

&lt;p&gt;When an agent opens a PR but the implementation needs refinement, &lt;code&gt;vem task iterate&lt;/code&gt; picks up where it left off. It finds the latest run with an open PR for the task, checks out that branch, and launches the agent again with follow-up instructions — so the agent continues from the existing code instead of starting from scratch.&lt;/p&gt;

&lt;p&gt;This is the difference between re-running an agent (which may diverge or duplicate work) and iterating on a PR (which builds on what already exists).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Continue from the latest PR for a task&lt;/span&gt;
vem task iterate TASK-001 &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"The backoff is correct but the error message
needs to include the retry count. Also add a --max-retries flag."&lt;/span&gt;

&lt;span class="c"&gt;# Iterate with a specific agent&lt;/span&gt;
vem task iterate TASK-001 &lt;span class="nt"&gt;--agent&lt;/span&gt; claude &lt;span class="nt"&gt;--prompt&lt;/span&gt; &lt;span class="s2"&gt;"Add the missing unit test for the edge case where retries &amp;gt; 3"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Web Board — Visual Task Management
&lt;/h2&gt;

&lt;p&gt;The vem web app at &lt;a href="https://app.vem.dev" rel="noopener noreferrer"&gt;app.vem.dev&lt;/a&gt; provides a visual view of every task in your project. The Board tab shows all tasks with a real-time summary: total count, blocked count, high-priority count, and completed count for the active cycle.&lt;/p&gt;

&lt;p&gt;Clicking a task opens the full task detail page with everything in one place: status and priority badges, the task context summary for agents, a Discussion thread, and the &lt;strong&gt;Run with agent&lt;/strong&gt; panel. The agent panel lets you choose between running locally or in the cloud, select the agent, pick the branch, and add extra instructions — then hit Start run to dispatch the agent.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapsn37h3ruzd2zla1zeh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapsn37h3ruzd2zla1zeh.png" alt="vem Board tab showing task stats and full task list" width="800" height="611"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The Board tab — at-a-glance stats, agent activity, GitHub integration, and the full task list&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Audit Trail — Task Sessions
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vem task sessions &amp;lt;id&amp;gt;&lt;/code&gt; lists all agent sessions that touched a task: which agent ran, when it started and ended, what commands were executed, and whether the task was completed during that session. This gives you a full audit trail for every unit of work.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# List all sessions that worked on a task&lt;/span&gt;
vem task sessions TASK-001
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Putting It All Together
&lt;/h2&gt;

&lt;p&gt;A well-maintained task is more than a to-do item — it is a self-contained work package that any agent can pick up and execute correctly without additional instructions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Create with rich metadata&lt;/span&gt;
vem task add &lt;span class="s2"&gt;"Implement rate limiting"&lt;/span&gt; &lt;span class="nt"&gt;--priority&lt;/span&gt; high &lt;span class="nt"&gt;--type&lt;/span&gt; feature &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--estimate-hours&lt;/span&gt; 3 &lt;span class="nt"&gt;--validation&lt;/span&gt; &lt;span class="s2"&gt;"pnpm test:api, pnpm lint"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--depends-on&lt;/span&gt; TASK-001

&lt;span class="c"&gt;# 2. Write targeted agent context&lt;/span&gt;
vem task context TASK-008 &lt;span class="nt"&gt;--set&lt;/span&gt; &lt;span class="s2"&gt;"Add rate limiting in src/api/middleware.ts.
Use sliding window algorithm. Limits: 100 req/min per API key, 10 req/min
for unauthenticated. Test: npm test -- --grep rate"&lt;/span&gt;

&lt;span class="c"&gt;# 3. Score by impact&lt;/span&gt;
vem task score TASK-008 &lt;span class="nt"&gt;--set&lt;/span&gt; 78 &lt;span class="nt"&gt;--reasoning&lt;/span&gt; &lt;span class="s2"&gt;"Needed before public beta"&lt;/span&gt;

&lt;span class="c"&gt;# 4. Mark ready and start&lt;/span&gt;
vem task ready TASK-008 &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; vem task start TASK-008

&lt;span class="c"&gt;# 5. Run agent implementation&lt;/span&gt;
vem agent &lt;span class="nt"&gt;--task&lt;/span&gt; TASK-008 &lt;span class="nt"&gt;--agent&lt;/span&gt; claude

&lt;span class="c"&gt;# 6. Check flow metrics&lt;/span&gt;
vem task flow TASK-008

&lt;span class="c"&gt;# 7. Sync to cloud&lt;/span&gt;
vem push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every task you create this way is a self-contained work package — any agent can pick it up, understand what to build, implement it, and verify it is done. That is the core promise of vem tasks.&lt;/p&gt;







&lt;p&gt;&lt;strong&gt;vem is currently in early access.&lt;/strong&gt; We're looking for our first users — developers who want their AI agents to work from structured, durable tasks rather than free-form prompts. Early access is &lt;strong&gt;completely free&lt;/strong&gt;. No credit card, no trial timer.&lt;/p&gt;

&lt;p&gt;If you found this useful, &lt;a href="https://vem.dev" rel="noopener noreferrer"&gt;sign up at vem.dev&lt;/a&gt; and let us know what you're building. Your feedback will directly shape the product. 🙏&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>ai</category>
      <category>productivity</category>
      <category>cli</category>
    </item>
    <item>
      <title>Your AI Agent Now Remembers Your Project: Persistent Memory with vem</title>
      <dc:creator>vem.dev</dc:creator>
      <pubDate>Tue, 21 Apr 2026 07:50:46 +0000</pubDate>
      <link>https://dev.to/vem/your-ai-agent-now-remembers-your-project-persistent-memory-with-vem-2d95</link>
      <guid>https://dev.to/vem/your-ai-agent-now-remembers-your-project-persistent-memory-with-vem-2d95</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;🚀 &lt;strong&gt;vem is in early access&lt;/strong&gt; — we're looking for our first users. If you try it and find it useful, we'd love to hear from you. &lt;strong&gt;Early access is completely free.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every time you open a new chat with your AI coding assistant you spend the first few minutes re-explaining the same things: what the project does, which patterns you follow, what you were just working on, and why you made the architectural choices you did.&lt;/p&gt;

&lt;p&gt;This is not a UX quirk — it is a structural gap. AI agents are stateless. &lt;strong&gt;vem&lt;/strong&gt; solves this with a local memory layer that lives inside your repository.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prerequisites — Install vem and Link a Project
&lt;/h2&gt;

&lt;p&gt;You need the vem CLI installed, an authenticated account, and a repository linked to a vem cloud project. If you completed the Cycles tutorial you are already set up — skip to the next section.&lt;/p&gt;

&lt;p&gt;Sign up at &lt;a href="https://vem.dev" rel="noopener noreferrer"&gt;vem.dev&lt;/a&gt;, grab your API key from vem.dev/keys, then run the three commands below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Install the CLI globally&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @vemdev/cli

&lt;span class="c"&gt;# 2. Authenticate with your API key from vem.dev/keys&lt;/span&gt;
vem login &amp;lt;your-api-key&amp;gt;

&lt;span class="c"&gt;# 3. Initialise memory in your repo and link to a cloud project&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;my-project
vem init
vem &lt;span class="nb"&gt;link&lt;/span&gt;

&lt;span class="c"&gt;# Confirm everything is connected&lt;/span&gt;
vem status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Problem: AI Agents Forget Everything
&lt;/h2&gt;

&lt;p&gt;Every time you open a new chat with your AI coding assistant you spend the first few minutes re-explaining the same things: what the project does, which patterns you follow, what you were just working on, and why you made the architectural choices you did.&lt;/p&gt;

&lt;p&gt;This is not a UX quirk — it is a structural gap. AI agents are stateless. They have no memory between sessions. The work you do to orient them at the start of each session is pure overhead, and the accumulated reasoning from previous sessions is permanently lost.&lt;/p&gt;

&lt;p&gt;vem solves this with a local memory layer that lives inside your repository. Everything your agents need to hit the ground running — project context, architectural decisions, sprint state — is stored durably in &lt;code&gt;.vem/&lt;/code&gt; and synced to the cloud so agents can query it instantly.&lt;/p&gt;




&lt;h2&gt;
  
  
  How vem Memory Works
&lt;/h2&gt;

&lt;p&gt;vem's memory system is built around four durable artifacts, all stored in &lt;code&gt;.vem/&lt;/code&gt; inside your repository. They are gitignored by default (so secrets never leak) but backed up to the vem cloud for search indexing and team sharing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CONTEXT.md&lt;/strong&gt; — project overview and "need to know" facts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CURRENT_STATE.md&lt;/strong&gt; — live progress summary updated after each work session&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;decisions/&lt;/strong&gt; — one ADR file per architectural decision&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;tasks/&lt;/strong&gt; — structured task backlog with cycle assignments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;CONTEXT.md&lt;/code&gt; is your project's "North Star" — a human-readable summary of what the project is, who it is for, and the non-obvious things any new contributor (human or AI) needs to know. &lt;code&gt;CURRENT_STATE.md&lt;/code&gt; captures where work stands right now: what just changed, what is in progress, and what is blocked.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;decisions/&lt;/code&gt; directory holds Architectural Decision Records (ADRs) — one file per decision, recording what was chosen, why, and what was considered and rejected. Together these four artifacts give any AI agent a complete, structured picture of your project before it writes a single line of code.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1 — Write Your First Project Context
&lt;/h2&gt;

&lt;p&gt;Start by writing a concise project context. Open &lt;code&gt;.vem/CONTEXT.md&lt;/code&gt; in any editor and describe your project in plain language: what it does, the main tech choices, and any gotchas a new developer would need to know on day one.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vem context show&lt;/code&gt; prints the current context so you can confirm what your agents will see. After editing, run &lt;code&gt;vem push&lt;/code&gt; to sync it to the cloud immediately.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Open the context file in your editor&lt;/span&gt;
&lt;span class="nv"&gt;$EDITOR&lt;/span&gt; .vem/CONTEXT.md

&lt;span class="c"&gt;# Preview what agents see right now&lt;/span&gt;
vem context show

&lt;span class="c"&gt;# Sync to the cloud after editing&lt;/span&gt;
vem push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 2 — Record an Architectural Decision
&lt;/h2&gt;

&lt;p&gt;Every non-obvious choice deserves a decision record. &lt;code&gt;vem decision add&lt;/code&gt; writes an ADR to &lt;code&gt;.vem/decisions/&lt;/code&gt; and immediately makes it searchable via the MCP server.&lt;/p&gt;

&lt;p&gt;Include the context (why you faced this decision) and the decision (what you chose). Future agents — and future you — will understand not just what was chosen but why. This prevents the "why did we do it this way?" confusion that slows down every project after the first month.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vem decision add &lt;span class="s2"&gt;"Use Zod for input validation at CLI boundaries"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--context&lt;/span&gt; &lt;span class="s2"&gt;"Catching invalid user input early prevents confusing downstream errors."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--decision&lt;/span&gt; &lt;span class="s2"&gt;"All CLI inputs are validated with Zod schemas before any business logic runs."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 3 — See Exactly What Your Agent Sees
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vem pack&lt;/code&gt; generates a structured JSON snapshot of your entire project memory — tasks, context, decisions, and sprint state — in a single block. This is the exact payload that the MCP server sends to your AI agent at the start of each session.&lt;/p&gt;

&lt;p&gt;Running &lt;code&gt;vem pack&lt;/code&gt; manually is the fastest way to audit your memory quality. If the output looks thin or outdated, that is what your agents are working with. A well-maintained pack is the difference between an agent that needs three rounds of clarification and one that writes correct code on the first attempt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Generate the full context pack&lt;/span&gt;
vem pack

&lt;span class="c"&gt;# Pipe to a file to inspect offline&lt;/span&gt;
vem pack &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /tmp/my-project-context.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 4 — Ask Questions About Your Project
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vem search&lt;/code&gt; performs semantic search across your project memory — tasks, decisions, context, and changelog entries. It is powered by the vem cloud vector index built from your most recent &lt;code&gt;vem push&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is especially useful for finding related decisions, locating tasks about a specific feature, or checking whether a topic has already been addressed before adding a new decision record.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Search across all memory artifacts&lt;/span&gt;
vem search &lt;span class="s2"&gt;"error handling"&lt;/span&gt;

&lt;span class="c"&gt;# Find decisions related to authentication&lt;/span&gt;
vem search &lt;span class="s2"&gt;"auth"&lt;/span&gt;

&lt;span class="c"&gt;# Find tasks mentioning a specific library&lt;/span&gt;
vem search &lt;span class="s2"&gt;"retry logic"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 5 — Connect Any Agent via MCP
&lt;/h2&gt;

&lt;p&gt;The vem MCP server is the bridge between your memory layer and any AI agent that supports the Model Context Protocol: Claude Desktop, Cursor, Copilot, and more. Once connected, your agent calls structured tools to read tasks, search memory, and record decisions — no copy-pasting context into the chat window.&lt;/p&gt;

&lt;p&gt;Add the snippet below to your agent's MCP configuration file. Your vem API key is read automatically from &lt;code&gt;~/.vem/config.json&lt;/code&gt; — you never need to expose it in the config.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy matters:&lt;/strong&gt; vem uses a Bring Your Own Key model. Your AI provider keys (OpenAI, Anthropic, etc.) are stored only on your local machine and never sent to the vem cloud.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"@vemdev/mcp-server"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tools available to your agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Tools exposed by the vem MCP server:&lt;/span&gt;
&lt;span class="c"&gt;# get_active_tasks()     — list current sprint tasks with status&lt;/span&gt;
&lt;span class="c"&gt;# search_memory(query)   — semantic search across all memory artifacts&lt;/span&gt;
&lt;span class="c"&gt;# read_decision(id)      — fetch a specific ADR by ID&lt;/span&gt;
&lt;span class="c"&gt;# update_task(id, ...)   — mark progress and add evidence&lt;/span&gt;
&lt;span class="c"&gt;# record_decision(...)   — write a new ADR from the agent session&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 6 — The Web Memory Dashboard
&lt;/h2&gt;

&lt;p&gt;The vem web app at &lt;a href="https://app.vem.dev" rel="noopener noreferrer"&gt;app.vem.dev&lt;/a&gt; gives you a visual view of everything stored in your project memory. The Context tab shows your &lt;code&gt;CONTEXT.md&lt;/code&gt;, current state, key decisions, and recent changelog entries all on one page.&lt;/p&gt;

&lt;p&gt;The Memory tab hosts a chat interface you can use to ask questions about your project directly from the browser — the same semantic search your agents use, but in a conversational UI. It is particularly useful during onboarding or code review when you need to quickly orient a new contributor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F02kgzg4lmo6zjugpahuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F02kgzg4lmo6zjugpahuw.png" alt="vem web context page showing key architectural decisions panel" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Key Decisions panel in the vem web app — all ADRs accessible to team members and agents&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 7 — Implement Tasks Remotely with the vem Agent
&lt;/h2&gt;

&lt;p&gt;vem does not just store context — it can act on it. The vem agent runner lets you trigger AI-powered task implementation from the web dashboard, delegating work to an agent running on your local dev machine or a cloud runner.&lt;/p&gt;

&lt;p&gt;Your AI keys never leave your machine. The vem cloud only orchestrates which task to run and where — the actual agent execution and code changes happen locally. This is BYOK (Bring Your Own Key) by design.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Start the vem runner — listens for tasks dispatched from the web&lt;/span&gt;
vem runner

&lt;span class="c"&gt;# Or specify a particular AI agent&lt;/span&gt;
vem runner &lt;span class="nt"&gt;--agent&lt;/span&gt; claude

&lt;span class="c"&gt;# The runner outputs a secure token you connect in the web Workspace tab&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 8 — Track Agent Activity with Insights
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vem insights&lt;/code&gt; shows a power score and command frequency breakdown for your project. It surfaces which workflow features you are using, which you are not, and how your agent activity patterns have evolved over time.&lt;/p&gt;

&lt;p&gt;The power score is a simple metric (0–100) that rewards high-value behaviours: agent-driven implementation, decision recording, task-driven work, and memory finalisation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Show power score and command frequency&lt;/span&gt;
vem insights
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 9 — Push Memory to the Cloud
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vem push&lt;/code&gt; publishes a snapshot of your entire &lt;code&gt;.vem/&lt;/code&gt; memory to the vem cloud. The snapshot is marked &lt;code&gt;pending&lt;/code&gt; until a matching Git push is detected — at that point it is verified using the &lt;code&gt;git_hash&lt;/code&gt; + &lt;code&gt;snapshot_hash&lt;/code&gt; pair and becomes permanently auditable.&lt;/p&gt;

&lt;p&gt;Push after any significant session: after adding decisions, after completing tasks, after updating context. Your teammates and any agent connected via MCP will immediately see the updated memory on their next request.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Publish current memory snapshot&lt;/span&gt;
vem push

&lt;span class="c"&gt;# Check sync and connection status&lt;/span&gt;
vem status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 10 — Cycle Validation: Memory Stays Correct Over Time
&lt;/h2&gt;

&lt;p&gt;Development never stops. New features can invalidate old decisions, refactors break assumptions captured in &lt;code&gt;CONTEXT.md&lt;/code&gt;, and security issues can surface weeks after the original code was written. vem's cycle validation step is designed exactly for this.&lt;/p&gt;

&lt;p&gt;When you close a sprint with &lt;code&gt;vem cycle validate&lt;/code&gt;, vem checks each completed task's validation steps against the current codebase and flags items that need human review.&lt;/p&gt;

&lt;p&gt;Run validation at the end of each cycle before you mark it done. It takes less than a minute and ensures your memory layer stays trustworthy — so agents in future cycles don't build on stale or incorrect foundations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Validate the active cycle before closing it&lt;/span&gt;
vem cycle validate

&lt;span class="c"&gt;# Review specific task validation results&lt;/span&gt;
vem cycle validate &lt;span class="nt"&gt;--task&lt;/span&gt; TASK-003

&lt;span class="c"&gt;# Close the cycle once validation passes&lt;/span&gt;
vem cycle close
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Full Memory Loop
&lt;/h2&gt;

&lt;p&gt;Every AI session should leave the project in a better state than it found it. That means updated context, recorded decisions, completed tasks, and a fresh push to the cloud. With vem, this loop takes under two minutes and pays dividends on every session that follows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Inspect what your agents currently see&lt;/span&gt;
vem pack

&lt;span class="c"&gt;# 2. Record any decisions made this session&lt;/span&gt;
vem decision add &lt;span class="s2"&gt;"..."&lt;/span&gt; &lt;span class="nt"&gt;--context&lt;/span&gt; &lt;span class="s2"&gt;"..."&lt;/span&gt; &lt;span class="nt"&gt;--decision&lt;/span&gt; &lt;span class="s2"&gt;"..."&lt;/span&gt;

&lt;span class="c"&gt;# 3. Update task progress&lt;/span&gt;
vem task &lt;span class="k"&gt;done &lt;/span&gt;TASK-001 &lt;span class="nt"&gt;--evidence&lt;/span&gt; &lt;span class="s2"&gt;"Implemented in src/auth.ts, tests pass"&lt;/span&gt;

&lt;span class="c"&gt;# 4. Refresh current state summary&lt;/span&gt;
vem context &lt;span class="nb"&gt;set &lt;/span&gt;current &lt;span class="s2"&gt;"Completed auth module. Next: add refresh token rotation."&lt;/span&gt;

&lt;span class="c"&gt;# 5. Push to cloud and verify&lt;/span&gt;
vem push
vem status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your agents start each session with full context. Your decisions are permanent and searchable. Your sprint state is always visible. And your memory is verified against your actual Git history — not just a file on disk.&lt;/p&gt;







&lt;p&gt;&lt;strong&gt;vem is currently in early access.&lt;/strong&gt; We're looking for our first users — developers and teams tired of re-explaining their project to AI agents every session. Early access is &lt;strong&gt;completely free&lt;/strong&gt;. No credit card, no trial timer.&lt;/p&gt;

&lt;p&gt;If you found this useful, &lt;a href="https://vem.dev" rel="noopener noreferrer"&gt;sign up at vem.dev&lt;/a&gt; and let us know what you're building. Your feedback will directly shape the product. 🙏&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>ai</category>
      <category>mcp</category>
      <category>programming</category>
    </item>
    <item>
      <title>Build Sprint-Driven AI Projects with vem: Cycles, Tasks, and Flow Metrics</title>
      <dc:creator>vem.dev</dc:creator>
      <pubDate>Mon, 20 Apr 2026 19:36:03 +0000</pubDate>
      <link>https://dev.to/vem/build-sprint-driven-ai-projects-with-vem-cycles-tasks-and-flow-metrics-3j0k</link>
      <guid>https://dev.to/vem/build-sprint-driven-ai-projects-with-vem-cycles-tasks-and-flow-metrics-3j0k</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;🚀 &lt;strong&gt;vem is in early access&lt;/strong&gt; — we're looking for our first users. If you try it and find it useful, we'd love to hear from you. &lt;strong&gt;Early access is completely free.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Your AI coding agent is smart, but it has no idea what you're working on this week. Every new session starts from scratch — no sprint goal, no priorities, no sense of what's blocked or nearly done. You spend the first five minutes re-explaining context instead of shipping.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;vem&lt;/strong&gt; fixes this with cycles. A cycle is a time-boxed, goal-driven container for tasks — exactly like a sprint. When a cycle is active, every agent that reads project context via vem automatically receives a "Current Sprint" block with the goal, open tasks, and progress percentage.&lt;/p&gt;

&lt;p&gt;In this tutorial we'll build a complete sprint workflow from scratch.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prerequisites — Install vem and Link a Project
&lt;/h2&gt;

&lt;p&gt;Before you can create cycles and run agents you need three things: the vem CLI installed, your account authenticated, and your repository linked to a vem cloud project. The whole setup takes under two minutes.&lt;/p&gt;

&lt;p&gt;Sign up for a free account at &lt;a href="https://vem.dev" rel="noopener noreferrer"&gt;vem.dev&lt;/a&gt;, then grab your API key from the Keys page (vem.dev/keys). The key is the only secret you need — all AI credentials stay on your machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Install the CLI&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @vemdev/cli

&lt;span class="c"&gt;# 2. Authenticate — paste your API key from vem.dev/keys&lt;/span&gt;
vem login &amp;lt;your-api-key&amp;gt;

&lt;span class="c"&gt;# 3. Initialise vem memory in your repo (creates .vem/)&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;my-project
vem init

&lt;span class="c"&gt;# 4. Link this repo to a vem cloud project&lt;/span&gt;
&lt;span class="c"&gt;#    Run interactively — picks up your GitHub remote automatically&lt;/span&gt;
vem &lt;span class="nb"&gt;link&lt;/span&gt;

&lt;span class="c"&gt;# 5. Confirm everything is connected&lt;/span&gt;
vem status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Problem: AI Agents Have No Sprint Awareness
&lt;/h2&gt;

&lt;p&gt;Your AI coding agent is smart, but it has no idea what you're working on this week. Every new session starts from scratch — no sprint goal, no priorities, no sense of what's blocked or nearly done. You spend the first five minutes re-explaining context instead of shipping.&lt;/p&gt;

&lt;p&gt;vem fixes this with cycles. A cycle is a time-boxed, goal-driven container for tasks — exactly like a sprint. When a cycle is active, every agent that reads project context via vem automatically receives a "Current Sprint" block with the goal, open tasks, and progress percentage. In this tutorial we'll build a complete sprint workflow from scratch.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1 — Create Your First Cycle
&lt;/h2&gt;

&lt;p&gt;Start by creating a cycle with a clear goal. The goal is the single sentence your AI agent will use to prioritise decisions inside this sprint.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a draft cycle with a goal&lt;/span&gt;
vem cycle create &lt;span class="s2"&gt;"Sprint 1: Core Auth"&lt;/span&gt; &lt;span class="nt"&gt;--goal&lt;/span&gt; &lt;span class="s2"&gt;"Implement login, signup and session management"&lt;/span&gt;

&lt;span class="c"&gt;# Start the sprint (moves it to active)&lt;/span&gt;
vem cycle start CYCLE-001

&lt;span class="c"&gt;# Set as the active focus for all agents&lt;/span&gt;
vem cycle focus CYCLE-001

&lt;span class="c"&gt;# Confirm it's live&lt;/span&gt;
vem cycle list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 2 — Populate the Sprint Backlog
&lt;/h2&gt;

&lt;p&gt;With the cycle active, add tasks directly to it using the &lt;code&gt;--cycle&lt;/code&gt; flag. Tasks inside a cycle inherit the sprint's goal and are surfaced to agents as in-scope work.&lt;/p&gt;

&lt;p&gt;You can also assign tasks to a cycle from the web dashboard by dragging them from the backlog into the active cycle — useful when you already have a backlog built up.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;vem task add &lt;span class="s2"&gt;"Implement JWT authentication"&lt;/span&gt; &lt;span class="nt"&gt;--cycle&lt;/span&gt; CYCLE-001
vem task add &lt;span class="s2"&gt;"Build signup form with validation"&lt;/span&gt; &lt;span class="nt"&gt;--cycle&lt;/span&gt; CYCLE-001
vem task add &lt;span class="s2"&gt;"Add password reset flow"&lt;/span&gt; &lt;span class="nt"&gt;--cycle&lt;/span&gt; CYCLE-001

&lt;span class="c"&gt;# See only tasks in this cycle&lt;/span&gt;
vem task list &lt;span class="nt"&gt;--cycle&lt;/span&gt; CYCLE-001
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 3 — The Web Dashboard
&lt;/h2&gt;

&lt;p&gt;Every cycle and its tasks are reflected in real time on the vem web dashboard. The Cycles tab gives you a sprint-level view: goal, progress ring, task breakdown, and agent activity hours spent inside the cycle.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe3ghpual5van7sjqhxls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe3ghpual5van7sjqhxls.png" alt="vem web dashboard cycles tab showing active cycle progress" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The Cycles tab — progress ring, task count, and agent hours per sprint&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 4 — Cycle Detail and Task Board
&lt;/h2&gt;

&lt;p&gt;Click into a cycle to see all its tasks, blocked items, and a timeline of agent activity. The board view groups tasks by status so you can see WIP at a glance.&lt;/p&gt;

&lt;p&gt;The board also shows high-level metrics: total active tasks, blocked count, high-priority items, and cumulative agent usage (tool calls, turns, and minutes).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwhlv69aayyksc0gons4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwhlv69aayyksc0gons4.png" alt="vem cycle detail showing tasks and agent activity timeline" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Cycle detail view — every task, every agent action, in one place&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 5 — Give Your Agent Real-Time Sprint Context
&lt;/h2&gt;

&lt;p&gt;When an AI agent connects via the vem MCP server, it calls &lt;code&gt;get_active_tasks()&lt;/code&gt; and immediately receives the active cycle, its goal, and all tasks scoped to that sprint. No prompt engineering required.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Agent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;calls:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;get_active_tasks()&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;vem&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;returns:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"cycle"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CYCLE-001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sprint 1: Core Auth"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"goal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Implement login, signup and session management"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"active"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"progress"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tasks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TASK-001"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Implement JWT authentication"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"active"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TASK-002"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Build signup form with validation"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"pending"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TASK-003"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Add password reset flow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"pending"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the MCP server to your agent's config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"vem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@vemdev/mcp-server"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 6 — Track Flow Metrics
&lt;/h2&gt;

&lt;p&gt;As tasks move through the cycle, vem tracks throughput, WIP, and cycle time. Run &lt;code&gt;vem task flow&lt;/code&gt; to see a live view of your team's delivery rate.&lt;/p&gt;

&lt;p&gt;Flow metrics tell you whether you're moving fast or accumulating WIP debt — crucial for keeping AI-assisted sprints from drifting.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Live flow metrics for the active cycle&lt;/span&gt;
vem task flow

&lt;span class="c"&gt;# See which tasks are ready to be picked up next&lt;/span&gt;
vem task ready
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Step 7 — Memory and Project Context
&lt;/h2&gt;

&lt;p&gt;Beyond tasks, vem maintains a persistent memory layer: &lt;code&gt;CONTEXT.md&lt;/code&gt; holds high-level project facts, &lt;code&gt;CURRENT_STATE.md&lt;/code&gt; captures the latest progress, and &lt;code&gt;decisions/&lt;/code&gt; stores architectural records. Agents read this automatically — so they always know not just what to build, but why.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4bsjqb1mzgv403s9ocg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4bsjqb1mzgv403s9ocg.png" alt="vem web dashboard memory tab showing context and decisions" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The Memory tab — context, decisions, and changelog all in one place&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 8 — Close the Sprint and Sync
&lt;/h2&gt;

&lt;p&gt;When the sprint is done, close the cycle to capture final state and push everything to the cloud. This creates a verified snapshot that other agents and team members can query.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Close the sprint (prompts for retrospective note)&lt;/span&gt;
vem cycle close CYCLE-001

&lt;span class="c"&gt;# Sync local memory to the cloud&lt;/span&gt;
vem push

&lt;span class="c"&gt;# Check dashboard for verified snapshot&lt;/span&gt;
vem status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Implement Tasks Remotely with vem agent &amp;amp; vem runner
&lt;/h2&gt;

&lt;p&gt;Once a cycle is set up you can trigger task implementation without ever leaving the browser. The vem runner is a background worker you start locally (or on a cloud VM) that polls the web dashboard for queued task runs and executes them inside a Docker sandbox using the AI agent of your choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privacy first — Bring Your Own Key (BYOK).&lt;/strong&gt; Your AI credentials (&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;, &lt;code&gt;OPENAI_API_KEY&lt;/code&gt;, &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;, or &lt;code&gt;GITHUB_TOKEN&lt;/code&gt;) are read from your local environment and injected into the sandbox at runtime. They are never sent to vem's cloud — the vem platform only coordinates task routing, not AI execution.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Set your AI key once (stays on your machine)&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;sk-ant-...

&lt;span class="c"&gt;# Start the runner — polls the web dashboard every 10s&lt;/span&gt;
&lt;span class="c"&gt;# Runs tasks in an isolated Docker sandbox by default&lt;/span&gt;
vem runner &lt;span class="nt"&gt;--agent&lt;/span&gt; claude &lt;span class="nt"&gt;--poll-interval&lt;/span&gt; 10

&lt;span class="c"&gt;# Or run without Docker (no isolation)&lt;/span&gt;
vem runner &lt;span class="nt"&gt;--agent&lt;/span&gt; claude &lt;span class="nt"&gt;--unsafe&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# vem agent wraps any AI CLI with sprint context + task tracking&lt;/span&gt;
&lt;span class="c"&gt;# Supports: claude, codex, gemini, copilot, gh, cursor, code&lt;/span&gt;
vem agent claude &lt;span class="nt"&gt;--task&lt;/span&gt; TASK-001

&lt;span class="c"&gt;# Auto-exit when the agent finishes (good for CI pipelines)&lt;/span&gt;
vem agent claude &lt;span class="nt"&gt;--task&lt;/span&gt; TASK-001 &lt;span class="nt"&gt;--auto-exit&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Cycle Validation — Catch Regressions Before They Ship
&lt;/h2&gt;

&lt;p&gt;Development never truly stops. New features can break existing behaviour, and fresh security vulnerabilities emerge as code evolves. vem's Cycle Validation tackles this with an AI agent that reviews every task in a cycle against a set of instructions you define.&lt;/p&gt;

&lt;p&gt;Each cycle has a Validation panel where you describe what to check — missing error handling, unvalidated user inputs, hardcoded credentials, race conditions, or anything else relevant to your codebase. The agent runs against all tasks in the cycle and surfaces issues grouped by severity.&lt;/p&gt;

&lt;p&gt;You choose when to run: manually on demand, on a daily schedule, or weekly — so every sprint close is automatically audited before the next one begins.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Run vem agent on a specific task to validate it&lt;/span&gt;
&lt;span class="c"&gt;# Use --auto-exit so the run completes and results are pushed&lt;/span&gt;
vem agent claude &lt;span class="nt"&gt;--task&lt;/span&gt; TASK-001 &lt;span class="nt"&gt;--auto-exit&lt;/span&gt;

&lt;span class="c"&gt;# Or let vem runner pick up the validation job queued from the web&lt;/span&gt;
vem runner &lt;span class="nt"&gt;--agent&lt;/span&gt; claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The Full Cycle, Closed Loop
&lt;/h2&gt;

&lt;p&gt;Here's the complete workflow: create a goal-driven cycle → populate the backlog → activate → let agents work with full context via &lt;code&gt;vem agent&lt;/code&gt; or &lt;code&gt;vem runner&lt;/code&gt; → track flow → run cycle validation to catch regressions and security issues → close and sync.&lt;/p&gt;

&lt;p&gt;Every step is reflected in the web dashboard and queryable via the MCP server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @vemdev/cli

&lt;span class="c"&gt;# Init in your repo&lt;/span&gt;
vem init

&lt;span class="c"&gt;# Create your first sprint&lt;/span&gt;
vem cycle create &lt;span class="s2"&gt;"Sprint 1"&lt;/span&gt; &lt;span class="nt"&gt;--goal&lt;/span&gt; &lt;span class="s2"&gt;"Ship the MVP login flow"&lt;/span&gt;
vem cycle start CYCLE-001
vem cycle focus CYCLE-001
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start your first cycle today with &lt;code&gt;vem cycle create&lt;/code&gt; and see how much less time you spend explaining priorities to your AI assistant.&lt;/p&gt;







&lt;p&gt;&lt;strong&gt;vem is currently in early access.&lt;/strong&gt; We're looking for our first users — developers and teams who want to ship AI-assisted projects more intentionally. Early access is &lt;strong&gt;completely free&lt;/strong&gt;. No credit card, no trial timer.&lt;/p&gt;

&lt;p&gt;If you found this useful, &lt;a href="https://vem.dev" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Sign up for vem early access — It's free!&lt;/a&gt;
 and let us know what you're building. Your feedback will directly shape the product. 🙏&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>productivity</category>
      <category>ai</category>
      <category>cli</category>
    </item>
  </channel>
</rss>
