[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73733":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":16,"starSnapshotCount":16,"syncStatus":36,"lastSyncTime":37,"discoverSource":38},73733,"varlock","dmno-dev\u002Fvarlock","dmno-dev","AI-safe .env files: Schemas for agents, Secrets for humans.","https:\u002F\u002Fvarlock.dev",null,"TypeScript",3615,100,8,31,0,11,52,217,33,108.01,"MIT License",false,"main",[26,27,28,29,30,31,32],"configuration","dotenv","env","env-vars","schema","security","validation","2026-06-12 04:01:10","\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fvarlock.dev\" target=\"_blank\" rel=\"noopener noreferrer\">\n    \u003Cimg src=\"\u002Fpackages\u002Fvarlock-website\u002Fsrc\u002Fassets\u002Flogos\u002Fwordmark.png\" alt=\"Varlock banner\">\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cbr\u002F>\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fvarlock\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fvarlock.svg\" alt=\"npm package\">\u003C\u002Fa>\n  \u003Ca href=\"\u002FLICENSE.md\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fvarlock.svg\" alt=\"license\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fnodejs.org\u002Fen\u002Fabout\u002Fprevious-releases\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnode\u002Fv\u002Fvarlock.svg\" alt=\"node compatibility\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdmno-dev\u002Fvarlock\u002Factions\u002Fworkflows\u002Ftest.yaml\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Factions\u002Fworkflow\u002Fstatus\u002Fdmno-dev\u002Fvarlock\u002Ftest.yaml?style=flat&logo=github&label=CI\" alt=\"build status\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fchat.dmno.dev\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fchat-discord-5865F2?style=flat&logo=discord\" alt=\"discord chat\">\u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cbr\u002F>\n\n## Varlock\n> AI-safe .env files: Schemas for agents, Secrets for humans.\n\n- 🤖 AI-safe config — agents read your schema, never your secrets\n- 🔍 proactive leak scanning via `varlock scan` + git hooks\n- 🔏 runtime protection — log redaction and leak prevention\n- 🛡️ validation, coercion, type safety w\u002F IntelliSense\n- 🌐 flexible multi-environment management — auto .env.* loading and explicit import\n- 🔌 [plugins](https:\u002F\u002Fvarlock.dev\u002Fplugins\u002Foverview\u002F) to pull data from various backends (1Password, Infisical, AWS, Azure, GCP, HCP Vault, more!)\n\nUnlike .env.example, **your .env.schema is a single source of truth**, built for collaboration, that will never be out of sync.\n\n```bash\n# @defaultSensitive=false @defaultRequired=infer @currentEnv=$APP_ENV\n# ---\n# our environment flag, will control automatic loading of `.env.xxx` files\n# @type=enum(development, preview, production, test)\nAPP_ENV=development # default value, can override\n\n# @type=port\nAPI_PORT=8080 # non-sensitive values can be set directly\n\n# API url including _expansion_ referencing another env var\n# @type=url\nAPI_URL=http:\u002F\u002Flocalhost:${API_PORT}\n\n# sensitive api key, with extra validation\n# @required @sensitive @type=string(startsWith=sk-)\nOPENAI_API_KEY=\n```\n\n**Flexible plugin system**: adds new decorators, functions, types - enables secure declarative secret loading.\n\n```bash\n# @plugin(@varlock\u002F1password-plugin)\n# @initOp(token=$OP_TOKEN, allowAppAuth=forEnv(dev), account=acmeco)\n# ---\n\n# @type=opServiceAccountToken @sensitive\nOP_TOKEN=\n\n# Fetch secrets using 1Password secret references\nDB_PASS=op(op:\u002F\u002Fmy-vault\u002Fdatabase-password\u002Fpassword)\nAPI_KEY=op(op:\u002F\u002Fapi-vault\u002Fstripe\u002Fapi-key)\n```\n\n## Installation\n\nYou can get started with varlock by installing the CLI:\n\n```bash\n# Run the installation wizard, which will install as a dependency in a JavaScript project\nnpx varlock init\n\n# Or install as standalone binary\nbrew install dmno-dev\u002Ftap\u002Fvarlock # via homebrew\ncurl -sSfL https:\u002F\u002Fvarlock.dev\u002Finstall.sh | sh -s # via cURL\n\n# Or use the official Docker image\ndocker pull ghcr.io\u002Fdmno-dev\u002Fvarlock:latest\n```\nSee the full [installation docs](https:\u002F\u002Fvarlock.dev\u002Fgetting-started\u002Finstallation\u002F) or the [Docker guide](https:\u002F\u002Fvarlock.dev\u002Fguides\u002Fdocker\u002F) for more information.\n\n\n## Workflow\n\nValidate your `.env.schema` and pretty print your environment variables with:\n\n```bash\nvarlock load\n```\n\nIf you need to pass resolved env vars into another process, you can run:\n\n```bash\nvarlock run -- python script.py\n```\n\nIn many cases you can use our [drop-in integrations](https:\u002F\u002Fvarlock.dev\u002Fintegrations\u002Fjavascript\u002F) for seamless experience - with additional security guardrails, like log redaction and leak prevention.\n\n## AI-Safe Config\n\nYour `.env.schema` gives AI agents full context on your config — variable names, types, validation rules, descriptions — without ever exposing secret values. Combined with `varlock scan` to catch leaked secrets in AI-generated code, varlock is purpose-built for the AI era. Learn more in the [AI-safe config guide](https:\u002F\u002Fvarlock.dev\u002Fguides\u002Fai-tools\u002F).\n\n## @env-spec\n\nVarlock is built on top of @env-spec, a new DSL for attaching a schema and additional functionality to .env files using JSDoc style comments. The @env-spec package contains a parser and info about the spec itself.\n\n- @env-spec [docs](https:\u002F\u002Fvarlock.dev\u002Fenv-spec\u002Foverview\u002F)\n- @env-spec [RFC](https:\u002F\u002Fgithub.com\u002Fdmno-dev\u002Fvarlock\u002Fdiscussions\u002F17)\n\n\n## Published Packages\n\n### Core\n| Package | Published listing page |\n| --- | --- |\n| [varlock](packages\u002Fvarlock) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fvarlock.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fvarlock) |\n| [@env-spec\u002Fparser](packages\u002Fenv-spec-parser) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@env-spec\u002Fparser.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@env-spec\u002Fparser) |\n| [@env-spec VSCode extension](packages\u002Fvscode-plugin) | [VSCode Marketplace](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=varlock.env-spec-language), [Open VSX Registry](https:\u002F\u002Fopen-vsx.org\u002Fextension\u002Fvarlock\u002Fenv-spec-language) |\n| [varlock Docker image](Dockerfile) | [GitHub Container Registry](https:\u002F\u002Fgithub.com\u002Forgs\u002Fdmno-dev\u002Fpackages\u002Fcontainer\u002Fpackage\u002Fvarlock) |\n\n### Plugins\n| Package | Published listing page |\n| --- | --- |\n| [@varlock\u002F1password-plugin](packages\u002Fplugins\u002F1password) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002F1password-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002F1password-plugin) |\n| [@varlock\u002Faws-secrets-plugin](packages\u002Fplugins\u002Faws-secrets) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Faws-secrets-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Faws-secrets-plugin) |\n| [@varlock\u002Fazure-key-vault-plugin](packages\u002Fplugins\u002Fazure-key-vault) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fazure-key-vault-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fazure-key-vault-plugin) |\n| [@varlock\u002Fbitwarden-plugin](packages\u002Fplugins\u002Fbitwarden) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fbitwarden-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fbitwarden-plugin) |\n| [@varlock\u002Fgoogle-secret-manager-plugin](packages\u002Fplugins\u002Fgoogle-secret-manager) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fgoogle-secret-manager-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fgoogle-secret-manager-plugin) |\n| [@varlock\u002Fhashicorp-vault-plugin](packages\u002Fplugins\u002Fhashicorp-vault) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fhashicorp-vault-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fhashicorp-vault-plugin) |\n| [@varlock\u002Finfisical-plugin](packages\u002Fplugins\u002Finfisical) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Finfisical-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Finfisical-plugin) |\n| [@varlock\u002Fkeepass-plugin](packages\u002Fplugins\u002Fkeepass) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fkeepass-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fkeepass-plugin) |\n| [@varlock\u002Fpass-plugin](packages\u002Fplugins\u002Fpass) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fpass-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fpass-plugin) |\n| [@varlock\u002Fpassbolt-plugin](packages\u002Fplugins\u002Fpassbolt) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fpassbolt-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fpassbolt-plugin) |\n| [@varlock\u002Fproton-pass-plugin](packages\u002Fplugins\u002Fproton-pass) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fproton-pass-plugin.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fproton-pass-plugin) |\n\n### Framework Integrations\n| Package | Published listing page |\n| --- | --- |\n| [@varlock\u002Fastro-integration](packages\u002Fintegrations\u002Fastro) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fastro-integration.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fastro-integration) |\n| [@varlock\u002Fnextjs-integration](packages\u002Fintegrations\u002Fnextjs) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fnextjs-integration.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fnextjs-integration) |\n| [@varlock\u002Fvite-integration](packages\u002Fintegrations\u002Fvite) | [![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@varlock\u002Fvite-integration.svg)](https:\u002F\u002Fnpmjs.com\u002Fpackage\u002F@varlock\u002Fvite-integration) |\n\n\n## MCP Servers\n| MCP Server | Link | URL |\n| --- | --- | --- |\n| Varlock Docs (HTTP) | [Installation](https:\u002F\u002Fvarlock.dev\u002Fguides\u002Fmcp\u002F#docs-mcp) | https:\u002F\u002Fdocs.mcp.varlock.dev\u002Fmcp |\n| Varlock Docs (SSE) | [Installation](https:\u002F\u002Fvarlock.dev\u002Fguides\u002Fmcp\u002F#docs-mcp) | https:\u002F\u002Fdocs.mcp.varlock.dev\u002Fsse |\n\n## Examples\nExamples of integrating varlock in various frameworks and situations can be found in the [Varlock examples repo](https:\u002F\u002Fgithub.com\u002Fdmno-dev\u002Fvarlock-examples)\n\n## Development & Contribution\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for more information.\n","Varlock 是一个用于创建安全的 .env 文件的工具，旨在为 AI 代理提供配置模式而将敏感信息保密。其核心功能包括通过模式定义保护敏感数据、主动扫描潜在泄露风险、运行时保护如日志去敏处理和防止信息泄露、以及对环境变量进行验证、转换和类型安全检查等。此外，它支持灵活的多环境管理，并能通过插件系统从不同后端服务（如1Password, AWS, Azure等）加载数据。Varlock 特别适合于需要在开发团队与自动化流程间共享配置但同时保证敏感信息安全的应用场景中使用。",2,"2026-06-11 03:47:07","high_star"]