@reliverse/renvilso is a ...
reconf is the config system that care about you and your project.
- 🧠 loads any format:
.ts,.json,.yml,.toml,****.env,package.json,rc—doesn’t blink - 🧩 schema-first, powered by
zod,typebox, or native ts—your rules, your types - 🔗 extend configs from anywhere: local, github, npm, you name it
- 🔁 deep merges, layered configs—no more “which file wins?” drama
- 🚦 environment overrides:
$production,$dev,$env:preview, etc.—switch context, instantly - 🔄 hmr-ready for local dev—reloads before you can even save
- 🌍 runs everywhere: esm, cjs, bun, node, deno (soon)
- 🛠️
@reliverse/reconf-cli: let users generate configs with interactive prompts—no more handholding
if you’re building clis, monorepos, saas sdks, or anything that needs real config, reconf is the only answer.
one repo, all the power:
@reliverse/schema— shared config schema for everything in reliverse (and beyond)@reliverse/reconf— config loader for apps, clis, tools, whatever@reliverse/config— the canonical reliverse config implementation@reliverse/reconf-cli— cli to generate configs from your terminal, no excuses
install and extend:
bun add -D @reliverse/cfg// mytool.config.ts
export default {
extends: ["@reliverse/cfg"],
mytool: {
enabled: true,
rules: ["auto"],
},
}works with any tool built on @reliverse/reconf.
no magic, just results.
bun add @reliverse/reconf
# bun add -D @reliverse/reconf-cli # coming soonload your config:
import { loadConfig } from "@reliverse/reconf"
const { config } = await loadConfig({
name: "mytool", // looks for mytool.config.ts/json, .mytoolrc, etc.
})watch for updates (dev mode):
import { watchConfig } from "@reliverse/reconf"
const { config, watchingFiles } = watchConfig({
cwd: process.cwd(),
envName: "development",
onUpdate({ oldConfig, newConfig }) {
console.log("config updated:", newConfig)
},
})- programmatic overrides
- local config file
package.jsonfield- home config (
~/.myapprc) - env overrides (
$production,$env.preview, etc.) - defaults
- extends (npm, github, local)
export default {
logLevel: "info",
$production: {
logLevel: "warn",
},
$env: {
preview: {
apiUrl: "https://preview.api.com",
},
},
}export default {
extends: [
"./base",
"gh:reliverse/starter-template#main"
]
}supported sources:
- local paths
- npm packages
- github/git remotes (
gh:user/repo#branch)
powered by unjs/giget
# coming soon
# bunx @reliverse/reconf-cli gen reliverse/cli-starter- pulls
schema.jsonfrom the repo - interactive cli, no guesswork
- outputs your config (
config.ts,.myapprc, whatever)
# coming soon
# reconf schema ./schema.ts- uses
zod,typebox, or native ts - outputs
schema.json
now anyone can run reconf gen your/repo and get typed configs, instantly.
config.{ts,mts,cts,js,mjs,cjs}.myapprc,.myapprc.json,.yaml,.tomlpackage.json > config.env,.env.production, etc.
| feature | c12 | reconf |
|---|---|---|
| schema-based generation | ❌ | ✅ |
| interactive cli ux | ❌ | ✅ |
| remote scaffolding support | ❌ | ✅ |
| type-safe schema formats | ❌ | ✅ |
| sync config loading | ❌ | 🔜 |
| deep merge layering | ✅ | ✅ |
| live hmr config watching | ✅ | ✅ |
| git/npm extendable configs | ✅ | ✅ |
reconf isn’t just a loader. it’s a config engine.
c12 is nice. reconf is ruthless.
import { z } from "zod"
export const reliverseConfigSchema = z.object({
name: z.string().optional(),
env: z.enum(["dev", "prod", "preview"]).default("dev"),
engines: z.object({
rengine: z.boolean().default(true),
blengine: z.boolean().default(false),
}),
addons: z.array(z.string()).optional(),
ai: z.object({
enabled: z.boolean().default(true),
model: z.string().default("gpt-4"),
}),
})- auto-adapts to
NODE_ENV - supports
$production,$preview,$dev, etc. - env-specific presets, no config spaghetti
modular by default—override, extend, or rip out what you don’t need.
- 🧬 schema-first (zod, typebox, ts)
- 🛠️ cli and programmatic
- 🌎 remote & local extending
- 🔁 env-based overrides
- 🔍 validated & typed
- 💡 perfect for templates, ai agents, game engines, whatever
in a reliverse cli tool:
import { loadConfig } from "@reliverse/reconf"
const { config } = await loadConfig({
name: "mytool",
extends: ["@reliverse/cfg"],
})in an ai agent:
if (config.ai.enabled) {
useModel(config.ai.model)
}- full ide autocomplete via json schema
-
reconf gen @reliverse/cfg(interactive cli config creation) - drag-and-drop visual config tool
- public schema registry & introspection
- plugin dev support for schema extension
- 🐛 bug? open an issue
- 💡 idea? start a discussion
- ❤️ just vibing? discord
reconf evolves with your help.
building a reliverse tool and need more schema?
pr it. let’s make config unstoppable.
@reliverse/schema— libs/schema@reliverse/reconf— libs/reconf@reliverse/config— libs/config@reliverse/reconf-cli— libs/cli- drag-and-drop config app — src
or just drop by discord and talk shop.
@reliverse/reconf— type-safe config engine@reliverse/reconf-cli— generate configs from schema@reliverse/cli— uses config for integrations@reliverse/rempts— prompt framework, config-driven
c12— the ogcosmiconfig— classic config loaderenv-schema— env validationzod,typebox,arktype— schema libs
mit © blefnk nazar kornienko
part of the reliverse ecosystem.
p.s. this readme was generated with @reliverse/redocs