Liking cljdoc? Tell your friends :D

cli

Standalone CLI tool for bootstrapping new Wagoe projects and adding optional modules. Installed via bbin — does not require the monorepo. Generated projects are fully self-contained.

Published to Clojars as com.wagoe/wagoe-cli, in lockstep with the rest of the suite. As a CLI you normally install it with bbin rather than declaring it as a dependency.

Install

curl -fsSL https://get.wagoe.org | bash

The installer handles all prerequisites: JVM, Clojure CLI, Babashka, bbin, and the wagoe command itself. Supports macOS, Debian/Ubuntu, Arch Linux, and WSL2.

Fallback if get.wagoe.org is unavailable:

curl -fsSL https://raw.githubusercontent.com/wagoebv/wagoe/main/scripts/install.sh | bash

Commands

Create a new project

wagoe new my-app            # Scaffold a new project
wagoe new my-app --force    # Overwrite existing directory
wagoe new my-app --no-user  # Leave out the user module

Generates a complete project with four core modules pre-wired: core, observability, platform, and user. The project is immediately runnable after clojure -M:migrate up.

--no-user

The user module brings authentication, sessions, MFA and an audit trail, and the four tables behind them: users, auth_users, user_sessions and user_audit_log. Most applications want it, so it is on by default.

An application with no accounts does not, and --no-user leaves it out. Measured on two projects generated side by side:

default--no-user

GET /health

200

200

GET /web/login

200

404

Tables created

auth_users, users, user_sessions, user_audit_log

none

JWT_SECRET required

yes

no

The choice is a plain user? literal near the top of the generated src/wagoe/config.clj — turning the module back on later is editing one word, not regenerating the project. A database is still configured either way; if the application needs no persistence at all, remove :wagoe/sqlite from resources/conf/dev/config.edn as well.

Add a module

wagoe add payments          # PSP abstraction (Stripe / Mollie / Mock)
wagoe add cache             # Redis / in-memory caching
wagoe add search            # Full-text search (Meilisearch)
wagoe add jobs              # Background job processing

Wires the module into deps.edn, system.clj, and migration files.

List available modules

wagoe list modules          # Human-readable table
wagoe list modules --json   # Machine-readable JSON

Show version

wagoe version

Generated project structure

my-app/
├── deps.edn          # Clojure deps with :migrate, :repl, :test aliases
├── bb.edn            # Babashka tasks (scaffold, check, doctor, deploy, ...)
├── dev-config.edn    # Development environment config
├── test-config.edn   # Test environment config
├── src/
│   └── my_app/
│       └── system.clj    # Component system wiring
└── AGENTS.md         # AI agent context file

Manual bbin install (advanced)

If you prefer to manage your own bbin installation:

bbin install https://github.com/wagoebv/wagoe \
  --tag v1.0.1-alpha-15 \
  --git/root libs/wagoe-cli \
  --main-opts '["-m" "wagoe.cli.main"]' \
  --as wagoe

AI agent tooling

The installer also installs clj-nrepl-eval and clj-paren-repair from clojure-mcp-light for REPL-over-MCP workflows:

clj-nrepl-eval --discover-ports   # Connect AI agent to running REPL

Can you improve this documentation? These fine people already did:
Thijs Creemers & thijscreemers
Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close