Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>VibePod CLI | Zero-Config AI Coding Agents in Docker or Podman</title>
<meta name="description" content="Install VibePod CLI from PyPI and run Claude, Gemini, Codex, Devstral, Copilot, Auggie, OpenCode, Pi, Antigravity, and Tau locally in isolated Docker or Podman containers. No config required; reusable skills supported.">
<meta name="description" content="Install VibePod CLI from PyPI and run Claude, Gemini, Codex, Devstral, Copilot, Auggie, OpenCode, Pi, Antigravity, Tau, and Jcode locally in isolated Docker or Podman containers. No config required; reusable skills supported.">
<meta name="theme-color" content="#fff7ed">
<link rel="icon" type="image/png" href="assets/icon.png">
<link rel="apple-touch-icon" href="assets/icon.png">
Expand Down Expand Up @@ -73,7 +73,7 @@
<p class="eyebrow">Zero-config local agents</p>
<h1>One CLI for AI coding agents in isolated containers.</h1>
<p class="hero-lead">Built-in local metrics, HTTP traffic tracking, and an analytics dashboard to see what your agents do. Zero config &mdash; just <code>vp run claude</code> in Docker or Podman.</p>
<p class="hero-detail">Install VibePod once. Run Claude, Gemini, Codex, Devstral, Copilot, Auggie, OpenCode, Pi, Antigravity, or Tau in an isolated container with a single command. Add reusable prompt recipes with <code>vp skills</code>, and add global or project YAML only when you want shared defaults, custom images, env vars, init scripts, or LLM routing.</p>
<p class="hero-detail">Install VibePod once. Run Claude, Gemini, Codex, Devstral, Copilot, Auggie, OpenCode, Pi, Antigravity, Tau, or Jcode in an isolated container with a single command. Add reusable prompt recipes with <code>vp skills</code>, and add global or project YAML only when you want shared defaults, custom images, env vars, init scripts, or LLM routing.</p>
<div class="install-widget">
<div class="install-tabs" role="group" aria-label="Choose an install method">
<button type="button" class="install-tab is-active" data-install="pip" aria-pressed="true">pip</button>
Expand Down Expand Up @@ -121,6 +121,12 @@ <h2>Release notes, feature updates, and ecosystem stories.</h2>
<a class="button button-ghost" href="news/">View all news</a>
</div>
<div class="shell news-grid compact">
<article class="news-card" data-reveal>
<p class="news-meta">Jul 31, 2026 · Release · CLI</p>
<h3>VibePod CLI 0.19: Project overlays, Herdr integration, port publishing, and Jcode</h3>
<p>Projects extend agent images with committed Dockerfile fragments, agents report live state to herdr panes, containers publish ports via per-agent config, and Jcode joins as <code>jcode</code>.</p>
<a class="card-link" href="news/vibepod-cli-0-19/">Read post</a>
</article>
<article class="news-card" data-reveal>
<p class="news-meta">Jul 26, 2026 · Release · CLI</p>
<h3>VibePod CLI 0.18: Tau agent, local skills, and Podman auto-detect</h3>
Expand All @@ -133,12 +139,6 @@ <h3>VibePod CLI 0.17: Pull progress and Python 3.14 polish</h3>
<p>Image pulls now show progress for agents and helper images, Podman socket setup is clearer, and Python 3.14 client-close handling is quieter.</p>
<a class="card-link" href="news/vibepod-cli-0-17/">Read post</a>
</article>
<article class="news-card" data-reveal>
<p class="news-meta">Jun 20, 2026 · Release · CLI</p>
<h3>VibePod CLI 0.16: Rootless Podman support</h3>
<p>Run agents with rootless Podman using automatic <code>keep-id</code> handling and documented container DNS setup.</p>
<a class="card-link" href="news/vibepod-cli-0-16/">Read post</a>
</article>
</div>
</section>

Expand Down Expand Up @@ -199,7 +199,7 @@ <h2>Install and run an agent</h2>
</div>
<figure class="demo-frame">
<pre class="code-block"><code>$ vp version
VibePod CLI: 0.18.0
VibePod CLI: 0.19.0
Python: 3.12.3
Docker: 28.1.1

Expand Down Expand Up @@ -240,7 +240,7 @@ <h2>Zero-config local agent operations</h2>
<div class="feature-grid">
<article class="feature-card" data-reveal>
<h3>Zero config by default</h3>
<p>No project file is needed to start. Claude, Gemini, Codex, Devstral, Copilot, Auggie, OpenCode, Pi, Antigravity, and Tau are ready out of the box.</p>
<p>No project file is needed to start. Claude, Gemini, Codex, Devstral, Copilot, Auggie, OpenCode, Pi, Antigravity, Tau, and Jcode are ready out of the box.</p>
<p class="proof">Proof point: run an agent with <code>vp run &lt;agent&gt;</code>.</p>
</article>
<article class="feature-card" data-reveal>
Expand Down Expand Up @@ -455,7 +455,7 @@ <h2>Top questions</h2>
</details>
<details>
<summary>Do I need to configure anything before running an agent?</summary>
<p>No. VibePod comes pre-configured for Claude, Gemini, Codex, Devstral, Copilot, Auggie, OpenCode, Pi, Antigravity, and Tau. Run <code>vp run &lt;agent&gt;</code> and it starts from the default image.</p>
<p>No. VibePod comes pre-configured for Claude, Gemini, Codex, Devstral, Copilot, Auggie, OpenCode, Pi, Antigravity, Tau, and Jcode. Run <code>vp run &lt;agent&gt;</code> and it starts from the default image.</p>
</details>
<details>
<summary>Can I use YAML config files?</summary>
Expand Down Expand Up @@ -487,7 +487,7 @@ <h2>Top questions</h2>
</details>
<details>
<summary>Which coding agents can I switch between?</summary>
<p>VibePod currently supports Claude, Gemini, OpenCode, Devstral, Auggie, GitHub Copilot, OpenAI Codex, Pi, Antigravity, and Tau.</p>
<p>VibePod currently supports Claude, Gemini, OpenCode, Devstral, Auggie, GitHub Copilot, OpenAI Codex, Pi, Antigravity, Tau, and Jcode.</p>
</details>
<details>
<summary>Where can I track roadmap and issues?</summary>
Expand Down
7 changes: 7 additions & 0 deletions news/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,13 @@ <h2 id="latest-news">Latest updates</h2>
</div>
</div>
<div class="shell news-grid">
<article class="news-card" data-reveal>
<p class="news-meta">Jul 31, 2026 · Release · CLI</p>
<h3>VibePod CLI 0.19: Project overlays, Herdr integration, port publishing, and Jcode</h3>
<p>Projects extend agent images with committed Dockerfile fragments, agents report live state to herdr panes, containers publish ports via per-agent config, and Jcode joins as <code>jcode</code>.</p>
<div class="tag-row" aria-label="Tags"><span>Release</span><span>CLI</span><span>Agents</span></div>
<a class="card-link" href="vibepod-cli-0-19/">Read post</a>
</article>
<article class="news-card" data-reveal>
<p class="news-meta">Jul 26, 2026 · Release · CLI</p>
<h3>VibePod CLI 0.18: Tau agent, local skills, and Podman auto-detect</h3>
Expand Down
137 changes: 137 additions & 0 deletions news/vibepod-cli-0-19/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>VibePod CLI 0.19: Project overlays, Herdr integration, port publishing, and Jcode | VibePod CLI</title>
<meta name="description" content="VibePod 0.19.0 adds committable project overlays for agent images, wires agents into herdr panes with live state, publishes container ports via per-agent config, and adds Jcode as the jcode agent.">
<meta name="theme-color" content="#fff7ed">
<link rel="icon" type="image/png" href="../../assets/icon.png">
<link rel="apple-touch-icon" href="../../assets/icon.png">
<meta property="og:type" content="article">
<meta property="og:title" content="VibePod CLI 0.19: Project overlays, Herdr integration, port publishing, and Jcode">
<meta property="og:description" content="VibePod 0.19.0 adds committable project overlays for agent images, wires agents into herdr panes with live state, publishes container ports via per-agent config, and adds Jcode as the jcode agent.">
<link rel="canonical" href="https://vibepod.dev/news/vibepod-cli-0-19/">
<meta property="og:image" content="https://vibepod.dev/assets/vibepod-preview.svg">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="VibePod CLI 0.19: Project overlays, Herdr integration, port publishing, and Jcode">
<meta name="twitter:description" content="Extend agent images with committed Dockerfile fragments, report live agent state to herdr, publish ports, and run Jcode.">
<meta name="twitter:image" content="https://vibepod.dev/assets/vibepod-preview.svg">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400&family=IBM+Plex+Sans:wght@400;500;600&family=Sora:wght@500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="../../styles.css">
</head>
<body>
<a class="skip-link" href="#main-content">Skip to main content</a>
<header class="site-header">
<div class="shell nav-shell">
<a class="brand" href="../../" aria-label="VibePod CLI home"><span class="brand-mark" aria-hidden="true"></span><span class="brand-text">VibePod CLI</span></a>
<nav class="main-nav" aria-label="Primary">
<a href="../../#quickstart">Quickstart</a>
<a href="../../docs/">Docs</a>
<a href="../">News</a>
<a href="../../repositories/">Repositories</a>
</nav>
<div class="header-actions">
<button class="button button-sm button-outline theme-toggle" id="theme-toggle" type="button" aria-label="Switch to dark mode" aria-pressed="false"><span class="sr-only">Toggle color theme</span></button>
<a class="button button-sm button-outline" href="https://pypi.org/project/vibepod/" target="_blank" rel="noreferrer">PyPI Package</a>
</div>
</div>
</header>
<main id="main-content">
<section class="page-hero shell" data-reveal>
<p class="eyebrow">Release · CLI · Agents</p>
<h1>VibePod CLI 0.19: Project overlays, Herdr integration, port publishing, and Jcode</h1>
<p class="hero-lead">VibePod 0.19.0 lets a project extend its agent images with a
committed Dockerfile fragment, reports live agent state to herdr panes,
publishes container ports straight from per-agent config, and adds Jcode to
the agent matrix.</p>
<div class="hero-actions"><a class="button button-primary" href="../../docs/overlays/">Read the overlay docs</a><a class="button button-ghost" href="../">Back to News</a></div>
</section>
<article class="shell post-article" data-reveal>
<p class="news-meta">2026-07-31 · Release · CLI · Agents</p>
<h2>Project overlays: extend agent images from the repo</h2>
<p>A project can now extend the agent image it runs in — extra apt packages,
language toolchains, CLIs — by committing a <code>FROM</code>-less Dockerfile
fragment under <code>.vibepod/overlay/</code>. A shared fragment applies to every
agent; a per-agent fragment like <code>.vibepod/overlay/claude/Dockerfile</code>
wins for that agent.</p>
<pre class="code-block"><code># .vibepod/overlay/Dockerfile — no FROM line
RUN apt-get update &amp;&amp; apt-get install -y --no-install-recommends jq \
&amp;&amp; rm -rf /var/lib/apt/lists/*
COPY requirements.txt /tmp/requirements.txt
RUN pip install -r /tmp/requirements.txt</code></pre>
<p>On <code>vp run</code> (and <code>vp task create</code>) the fragment is appended
to the agent's base image and built as a workspace-local, content-addressed image.
Unchanged overlays never rebuild, switching branches just switches images, and a
newer base image rebuilds the overlay on top. The overlay directory is the build
context, so fragments can <code>COPY</code> files committed next to them — the
whole team shares the environment. Opt out with <code>--no-overlay</code>, force a
clean rebuild with <code>--rebuild-overlay</code>, or set
<code>agents.&lt;agent&gt;.overlay: false</code>.</p>
<h2>Herdr integration: live agent state in your multiplexer</h2>
<p><a href="https://herdr.dev/" target="_blank" rel="noreferrer">herdr</a> is a
terminal multiplexer for coding agents. When <code>vp run</code> starts inside a
herdr pane, VibePod detects it automatically, mounts the herdr socket into the
container, forwards <code>HERDR_*</code> variables, and injects a lifecycle
integration into the agent's config directory. The agent then shows up in herdr
with a <code>vp:&lt;agent&gt;</code> identity and live working / blocked / idle
state.</p>
<p>Built-in state reporting ships for Claude, Codex, Copilot, OpenCode, Pi, and
Tau; other agents still appear with pane identity and initial state. No setup is
needed, custom agents can be wired through <code>herdr.integrations</code> in the
config, <code>vp doctor herdr</code> diagnoses the whole chain, and
<code>--no-herdr</code> or <code>herdr: false</code> opts out.</p>
<h2>Publish container ports</h2>
<p>Agent containers can now publish ports to the host using
<code>docker run -p</code> syntax, validated up front:</p>
<pre class="code-block"><code>agents:
claude:
ports:
- "8000:8000"
- "127.0.0.1:5173:5173"</code></pre>
<p>That makes dev servers started by an agent reachable from the host browser
without leaving the container's isolation model.</p>
<h2>Jcode joins the agent matrix</h2>
<p>Jcode is 1jehuang's resource-focused terminal coding agent written in Rust and
shipped as a single static binary. It talks to Anthropic, OpenAI (including the
Codex subscription), Gemini, GitHub Copilot, OpenRouter, Azure, Ollama, LM Studio,
and custom OpenAI-compatible endpoints. Start it with the full name or the new
<code>vp j</code> shortcut:</p>
<pre class="code-block"><code>vp run jcode
vp j
vp run jcode -- login --provider claude</code></pre>
<p>Credentials, configuration, MCP servers, and session history persist under
<code>~/.config/vibepod/agents/jcode/</code> and survive container restarts.
OAuth logins support <code>--no-browser</code> for the containerized flow, and API
keys can be injected via <code>agents.jcode.env</code>.</p>
<h2>Release details</h2>
<ul>
<li>Added project overlays: committable <code>.vibepod/overlay/</code> Dockerfile fragments, content-addressed builds, <code>--no-overlay</code> / <code>--rebuild-overlay</code>, automatic cleanup of superseded images.</li>
<li>Added herdr integration with automatic pane detection, live state reporting for six agents, data-driven custom integrations, and <code>vp doctor herdr</code>.</li>
<li>Added per-agent <code>ports</code> config with <code>docker run -p</code> syntax and validation.</li>
<li>Added Jcode (<code>jcode</code>, shortcut <code>vp j</code>, image <code>vibepod/jcode:latest</code>, override <code>VP_IMAGE_JCODE</code>).</li>
<li>Added pre-commit with ruff, pyupgrade, and actionlint, enforced in CI.</li>
<li>Bumped the package version to <code>0.19.0</code>.</li>
</ul>
<h2>Related links</h2>
<ul>
<li><a href="../../docs/overlays/">Project overlays docs</a></li>
<li><a href="../../docs/herdr/">Herdr integration docs</a></li>
<li><a href="../../docs/agents/#jcode-1jehuang">Agents docs: Jcode (1jehuang)</a></li>
<li><a href="../../docs/configuration/">Configuration docs: ports</a></li>
<li><a href="https://github.com/VibePod/vibepod-cli/releases/tag/0.19.0" target="_blank" rel="noreferrer">0.19.0 release on GitHub</a></li>
<li><a href="https://github.com/VibePod/vibepod-cli" target="_blank" rel="noreferrer">vibepod-cli on GitHub</a></li>
</ul>
</article>
</main>
<footer class="site-footer">
<div class="shell footer-shell">
<p><span id="year"></span> VibePod CLI. Installed from PyPI, built in public on GitHub.</p>
<div class="footer-links"><a href="../../docs/">Docs</a><a href="../">News</a><a href="../../repositories/">Repositories</a><a href="https://pypi.org/project/vibepod/" target="_blank" rel="noreferrer">PyPI</a></div>
</div>
</footer>
<script src="../../script.js" defer></script>
</body>
</html>
5 changes: 3 additions & 2 deletions script.js
Original file line number Diff line number Diff line change
Expand Up @@ -336,14 +336,15 @@ if (lightbox) {
{ cmd: "copilot", name: "GitHub Copilot" },
{ cmd: "opencode", name: "OpenCode" },
{ cmd: "agy", name: "Google Antigravity" },
{ cmd: "tau", name: "Hugging Face Tau" }
{ cmd: "tau", name: "Hugging Face Tau" },
{ cmd: "jcode", name: "Jcode" }
];

const buildScript = (agent) => [
{ t: "cmd", text: "pip install vibepod" },
{ t: "dim", text: "Successfully installed vibepod" },
{ t: "cmd", text: "vp version" },
{ t: "out", text: "VibePod CLI: 0.18.0" },
{ t: "out", text: "VibePod CLI: 0.19.0" },
{ t: "out", text: "Python: 3.12.3" },
{ t: "out", text: "Docker: 28.3.3" },
{ t: "cmd", text: "vp run " + agent.cmd },
Expand Down