DEV Community

Cover image for Oneconfig: A CLI That Detects Your Stack and Provisions Your Dev Environment
Thanasis Akriotis
Thanasis Akriotis

Posted on

Oneconfig: A CLI That Detects Your Stack and Provisions Your Dev Environment

Every repo has the same onboarding ritual: figure out the stack, install the right tools, start the right services, and hope the README is still accurate.

I built Oneconfig because I got tired of writing READMEs that went stale.

What it does

Oneconfig is a single Go binary with two commands:

oneconfig generate recursively scans your project — including monorepos with packages/ and apps/ workspaces — and infers your entire stack: languages, runtimes, package managers, frameworks, databases, env files, Dockerfiles, Makefiles, Procfiles. It outputs a single oneconfig.yml.

oneconfig up reads that YAML and executes a deterministic pipeline: install runtimes, resolve dependencies, inject env vars, start services in dependency order, run health checks, then execute post-start steps like migrations and seeds.

Why not just use Docker Compose?

Docker Compose and devcontainers solve this problem, but they require upfront configuration. You write a Dockerfile. You define services. You maintain it.

Oneconfig assumes you already have a working project with lockfiles and config files. It reads what's there and generates the setup automatically. If you outgrow it, the generated YAML is a useful starting point for something heavier.

What's detected today

  • Languages: Node.js, Python, Go, Rust, Java, Ruby
  • Package managers: npm, yarn, pnpm, bun, pip, Poetry, uv, Pipenv, Cargo, Maven, Gradle, Bundler
  • Frameworks: Next.js, Django, FastAPI, Flask, Streamlit, Gradio, Rails, Sinatra
  • Databases: PostgreSQL, MongoDB, Redis, MySQL (spun up via Docker)
  • Infrastructure: Dockerfile, docker-compose.yml, Makefile, Procfile

The detection engine

The core is a simple Detector interface:

type Detector interface {
    Detect(projectDir string, result *ScanResult) error
}
Enter fullscreen mode Exit fullscreen mode

Adding a new ecosystem is one file. The engine recursively walks your repo, scores matches, and resolves conflicts when multiple detectors hit the same files.

Config validation happens against a JSON Schema before up runs anything. Services start in topologically sorted order. Health checks use TCP and HTTP probes with configurable timeouts.

What it's not

  • Not a container runtime or replacement for Docker in production
  • Not a CI/CD tool — purely for local dev environment setup
  • Not magic — undocumented system-level dependencies still require manual addition

Try it

go install github.com/Thanos2002/Oneconfig@latest
cd your-project/
oneconfig generate
oneconfig up
Enter fullscreen mode Exit fullscreen mode

The generated oneconfig.yml is meant to be committed alongside your code — executable documentation for your dev setup.

Source: https://github.com/Thanos2002/Oneconfig (MIT)

Top comments (0)