<?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: Vangelis</title>
    <description>The latest articles on DEV Community by Vangelis (@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: Vangelis</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>Build Sprint-Driven AI Projects with vem: Cycles, Tasks, and Flow Metrics</title>
      <dc:creator>Vangelis</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>
