惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Vercel News
Vercel News
F
Fortinet All Blogs
月光博客
月光博客
G
Google Developers Blog
博客园 - Franky
GbyAI
GbyAI
The Cloudflare Blog
I
InfoQ
雷峰网
雷峰网
WordPress大学
WordPress大学
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
T
The Blog of Author Tim Ferriss
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 聂微东
小众软件
小众软件
腾讯CDC
B
Blog
量子位
V
V2EX
S
SegmentFault 最新的问题
Google DeepMind News
Google DeepMind News

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - sjhalani7/vaen: Package your AI coding harness i...
sjhalani7 · 2026-05-28 · via Hacker News: Show HN

VAEN is a portable CLI for packaging and importing agentic coding setups.

It takes an agent.yaml manifest, bundles instructions, skills, and project-scoped MCP declarations into an OCI-backed .agent archive, and imports that setup into another repository without transporting secrets.

Demo

Watch the 24-second flow: docs/assets/vaen-demo.mp4

vaen validate -f agent.yaml
vaen build -f agent.yaml -o team-setup.agent
vaen inspect team-setup.agent
vaen import team-setup.agent --client codex
vaen doctor --client codex

What VAEN Packages

VAEN packages configuration and authoring files, not runtime environments.

  • Main instructions and optional instruction includes
  • Skill directories and their files
  • Project-scoped MCP declarations
  • Bundle metadata used for import, inspection, and validation

VAEN never packages credential values, .env files, private keys, OAuth state, or MCP server implementations.

Why Not Just Zip the Files?

A zip file can move files, but it does not explain what the setup is, what should be imported, where files should land, or which credential variable names the receiver must provide locally.

VAEN keeps that handoff explicit:

  • agent.yaml declares the instructions, skills, MCP declarations, and required variable names.
  • vaen validate catches malformed manifests before sharing.
  • vaen inspect lets the receiver review bundle contents before import.
  • vaen import materializes the setup into predictable client-specific locations.
  • vaen doctor checks the imported structure without reading credential values.

Install

Install from GitHub with pipx:

pipx install git+https://github.com/sjhalani7/vaen.git

Or install from a local clone:

python3 -m venv .venv
. .venv/bin/activate
pip install -e .

The CLI provides:

vaen validate
vaen build
vaen inspect
vaen import
vaen doctor
vaen cleanup

Quick Start

See docs/quick-start.md for a minimal instructions-only bundle flow.

Public Agent Setup Packages

The dist/agents/ directory contains ready-to-import .agent archives for popular, reputable public agent setups.

Current packages:

See dist/agents/README.md for import commands and attribution.

Manifest

agent.yaml is the source of truth for a bundle.

version: "0.1"
publisher: "Shiv Jhalani"

instructions:
  main: "~/.codex/AGENTS.md"
  includes:
    - "./style.md"

artifacts:
  - type: skills
    path: "~/.codex/skills/code-review"
  - type: skills
    path: "~/.codex/skills/refactor"

requiredVars:
  - OPENAI_API_KEY

mcp:
  servers:
    - name: context7
      transport: stdio
      command: npx
      args: ["-y", "@upstash/context7-mcp"]
      env_vars:
        - CONTEXT7_API_KEY

    - name: docs
      transport: http
      url: https://example.com/mcp
      http_headers:
        X-Region: us-east-1
      bearer_token_env_var: DOCS_MCP_TOKEN
      header_env_vars:
        X-API-Key: DOCS_MCP_TOKEN

Manifest rules:

  • version, publisher, and instructions.main are required.
  • instructions.includes is optional.
  • artifacts is a list and may be empty for instructions-only bundles.
  • skills is the supported artifact type.
  • requiredVars and MCP env fields store environment variable names only, never values.
  • Manifest authors are responsible for writing names such as OPENAI_API_KEY, not credential values such as API keys, tokens, URLs with passwords, or NAME=value assignments.
  • http_headers stores non-secret static HTTP headers for MCP servers.
  • mcp is optional and lives at the top level of the manifest.
  • Source paths may point inside or outside the repo.

Correct:

requiredVars:
  - OPENAI_API_KEY

mcp:
  servers:
    - name: docs
      transport: http
      url: https://example.com/mcp
      bearer_token_env_var: DOCS_MCP_TOKEN

Incorrect:

requiredVars:
  - OPENAI_API_KEY=sk-proj-secret
  - sk-proj-secret

mcp:
  servers:
    - name: docs
      transport: http
      url: https://user:password@example.com/mcp
      bearer_token_env_var: sk-proj-secret

MCP support is host-neutral in the manifest. During import, VAEN writes the selected client format for Codex, Claude Code, or Copilot.

YAML Examples

Instructions only:

version: "0.1"
publisher: "Your Name"

instructions:
  main: "./AGENTS.md"

artifacts: []
  • instructions.main points to AGENTS.md or another main agent instruction file.

Instructions with skills:

version: "0.1"
publisher: "Your Name"

instructions:
  main: "./AGENTS.md"
  includes:
    - "./style.md"

artifacts:
  - type: skills
    path: "./skills/code-review"
  - type: skills
    path: "./skills/refactor"
  • instructions.includes is for extra Markdown instruction/context files.
  • Each artifacts entry points to one skill directory.

MCP servers:

version: "0.1"
publisher: "Your Name"

instructions:
  main: "./AGENTS.md"

artifacts: []

mcp:
  servers:
    - name: context7
      transport: stdio
      command: npx
      args: ["-y", "@upstash/context7-mcp"]
      env_vars:
        - CONTEXT7_API_KEY
    - name: figma
      transport: http
      url: "https://mcp.figma.com/mcp"
      bearer_token_env_var: FIGMA_OAUTH_TOKEN
      http_headers:
        X-Figma-Region: us-east-1
  • name is the local MCP server name.
  • transport is either stdio or http.
  • command and args define how stdio MCP servers are launched.
  • url defines the HTTP MCP endpoint.
  • env_vars and bearer_token_env_var contain environment variable names only, never secret values.
  • http_headers contains non-secret static headers.

Typical Flow

1. Validate

vaen validate -f examples/synthetic-fixture/agent.yaml

2. Build

vaen build -f examples/synthetic-fixture/agent.yaml

If -o is omitted, VAEN writes <manifest-directory-name>.agent in the working directory:

examples/synthetic-fixture/agent.yaml -> synthetic-fixture.agent

You can choose the archive name:

vaen build -f examples/synthetic-fixture/agent.yaml -o shiv-setup.agent

Explicit output paths must end in .agent.

3. Inspect

vaen inspect synthetic-fixture.agent

inspect reads the OCI archive and prints bundle metadata, normalized bundle paths, instructions, skills, MCP declarations, and required variable names.

4. Import

In the target repo:

vaen import /path/to/synthetic-fixture.agent

If the bundle contains MCP declarations, select the client config to write:

vaen import /path/to/synthetic-fixture.agent --client codex
vaen import /path/to/synthetic-fixture.agent --client claude
vaen import /path/to/synthetic-fixture.agent --client copilot

Default import (no --client and no target override flags) writes root instructions to AGENTS.md and CLAUDE.md, and mirrors skills to .agent/skills/... and .claude/skills/....

If --client is provided and none of --target, --target-instructions-file-name, --target-skills-directory are provided, activated outputs default to the client:

  • --client claude: CLAUDE.md and .claude/skills/...
  • --client codex: AGENTS.md and .codex/skills/...
  • --client copilot: AGENTS.md and .copilot/skills/...

To target another agent directory:

vaen import /path/to/synthetic-fixture.agent --target copilot

This writes COPILOT.md and .copilot/skills/....

Optional import overrides:

vaen import /path/to/synthetic-fixture.agent --target copilot --target-instructions-file-name copilot-instructions
vaen import /path/to/synthetic-fixture.agent --target copilot --target-skills-directory vscode

These write copilot-instructions.md and .vscode/skills/....

5. Verify

Use the same targeting and MCP client flags that were used during import:

vaen doctor --client codex
vaen doctor --target copilot --client copilot
vaen doctor --target copilot --target-instructions-file-name copilot-instructions
vaen doctor --target copilot --target-skills-directory vscode

doctor validates the imported structure and reports required environment variable names as warnings.

6. Cleanup

After confirming the activated files look right, remove the canonical stored copy:

vaen cleanup /path/to/synthetic-fixture.agent

Cleanup deletes .agent/<bundle-name> only. It does not delete root instruction files, skill mirrors, or MCP client config.

Archive Layout

A .agent file is an OCI-style archive:

bundle.agent
├── oci-layout
├── index.json
└── blobs/sha256/
    ├── <manifest blob>
    ├── <config blob>
    └── <layer blob>

The layer blob is a tar payload:

vaen/metadata.json
instructions/...
skills/...
mcp/...

Path terminology:

  • source path: where a file lives on the builder's machine
  • bundle path: where that file is stored inside the .agent
  • materialized path: where that file is written during import

This lets a builder reference files from places like ~/.codex/AGENTS.md while keeping the bundle layout stable and machine-independent.

Import Layout

Import writes a canonical stored copy first:

.agent/<bundle-name>/
├── instructions/
├── mcp/
├── skills/
└── vaen/metadata.json

Then it writes activated files for the target repo:

  • Root instruction files: AGENTS.md and CLAUDE.md, or the configured target filename.
  • Skill mirrors: .agent/skills/... and .claude/skills/..., or the configured target skill directory.
  • MCP client config: .codex/config.toml, .mcp.json, or .github/mcp.json when --client is used.

Included instruction files remain in .agent/<bundle-name>/instructions/...; they are not concatenated into the root instruction file.

Safety Rules

VAEN fails before overwriting existing setup files.

  • Existing root instruction files block import.
  • Existing .agent/<bundle-name> directories block import.
  • Existing mirrored skill names block import.
  • Existing MCP client config files block import.

Skill directories should contain only instructions, scripts, references, and assets needed by the agent. Do not place credential files such as .env, .env.*, private keys, or credential stores inside a skill directory before building a bundle.

Build rejects obvious declared secret file paths such as .env, .env.*, *.pem, *.key, and id_rsa. Detected secret values are never printed.

Credential handling is metadata-only:

  • requiredVars and MCP env fields store variable names only.
  • doctor does not read .env files.
  • doctor does not inspect shell environment variables, keychains, or other credential stores.
  • MCP validation checks local config syntax and expected file placement; it does not connect to MCP servers or validate auth.

Examples

The test fixture is a compact reference manifest:

The project-specific example is here:

License

VAEN is released under the MIT License.

The software is provided as-is, without warranty of any kind. The authors and copyright holders are not liable for claims, damages, or other liability arising from use of the software. See LICENSE for the full license text.