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
}
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
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)