Installation Guide
Get from zero to a working pipeline in under 10 minutes. Follow the Quick Install path to let a script handle everything, or use the Manual path to do each step yourself.
Before you start
You need three things. Everything else is optional.
-
Java 17 or later — the platform runs on the JVM.
If you are not sure whether Java is installed, open a terminal and run
java -version. The first number afterversion "must be 17 or higher. If it is not, the Quick Install script will tell you — or follow Install Java below. -
An Anthropic or OpenAI API key — the platform calls an LLM to generate plans and code.
Get an Anthropic key at console.anthropic.com
(starts with
sk-ant-) or an OpenAI key at platform.openai.com/api-keys. Keep it private — do not commit it to source control. - A software project on your machine — Spring Boot (Maven or Gradle), Node.js, or Python. You run the pipeline against a real project directory. Any project with a standard build file works.
Windows 10 (build 1903+) or Windows 11. Use PowerShell or Command Prompt.
macOS 12 Monterey or later. Intel and Apple Silicon both supported.
Any 64-bit distro (Ubuntu 20.04+, Debian 11+, RHEL 8+). Run uname -m — need x86_64 or aarch64.
Quick Install — Recommended
One command. The script checks Java, downloads the JAR, creates the wrapper, and adds it to your PATH.
macOS / Linux
curl -fsSL https://bakalarsoftware.com/dl/install.sh | bash
After the script finishes, activate in your current terminal (or open a new one):
export PATH="${HOME}/.sdlc/bin:${PATH}"
Windows (PowerShell)
irm https://bakalarsoftware.com/dl/install.ps1 | iex
Restart your terminal after the script finishes. The sdlc command will be available in new windows.
Verify the install worked:
sdlc --version
You should see SDLC Execution Platform vX.Y.Z.
If you see "command not found", the PATH change hasn't taken effect — open a new terminal or run the export command above.
Done? Jump to First Run ↓
Install Java
Skip this section if java -version already shows 17 or higher.
The recommended distribution is Eclipse Temurin — free, open-source, widely used in production.
Windows
- Go to adoptium.net/temurin/releases/?version=21
- Select: Version 21, OS Windows, Architecture x64, Package JDK
- Download the
.msiinstaller and run it - When asked, check "Set JAVA_HOME variable" and "Add to PATH"
- Close and reopen your terminal, then run
java -version
'java' is not recognized after reopening? Search "Environment Variables" in Start, open "Edit the system environment variables", and verify a path ending in \jdk-21\bin is in the Path variable.
macOS
With Homebrew:
brew install --cask temurin@21
Without Homebrew: Download the .pkg from adoptium.net. Select x64 for Intel, aarch64 for Apple Silicon (M1/M2/M3).
Linux
Ubuntu / Debian:
sudo apt-get update && sudo apt-get install -y default-jdk-headless
RHEL / Fedora:
sudo dnf install java-21-openjdk-headless
If the package manager installs an older version, use the Adoptium apt repository: adoptium.net/installation/linux.
After installing, close your terminal, open a new one, and confirm with java -version.
Do not proceed until you see 17 or higher.
Manual Install
If you prefer to control each step yourself, or if the install script failed.
Download the JAR
Download sdlc-orchestrator.jar from the link below and save it somewhere you can find it (e.g. your home directory or Downloads).
https://bakalarsoftware.com/dl/sdlc-orchestrator.jar
| Problem | Fix |
|---|---|
| Browser warns file is dangerous | Click "Keep" or "Keep anyway" — .jar files are Java archives, not executables |
Saved as sdlc-orchestrator.jar.zip | macOS auto-expanded it. Rename back to sdlc-orchestrator.jar |
| macOS Gatekeeper blocks it | Right-click in Finder → Open → confirm. Or: xattr -d com.apple.quarantine sdlc-orchestrator.jar |
Verify the JAR runs
Open a terminal, navigate to where you saved the JAR, and run:
java -jar sdlc-orchestrator.jar --help
What you should see:
| Error | Fix |
|---|---|
Unable to access jarfile | Wrong directory. Run ls or dir to confirm the file is present |
UnsupportedClassVersionError | Java too old — go back and install Java 17+ |
| Permission denied | chmod +r sdlc-orchestrator.jar |
Create the config file
The platform reads your API key from ~/.sdlc/sdlc-local.properties.
Create the directory:
# macOS / Linux
mkdir -p ~/.sdlc
# Windows (PowerShell)
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.sdlc"
Create and open the file:
# macOS / Linux
nano ~/.sdlc/sdlc-local.properties
# Windows (PowerShell)
notepad "$env:USERPROFILE\.sdlc\sdlc-local.properties"
Paste this, replacing the placeholder with your real key:
# Anthropic (recommended):
llm.anthropicApiKey=sk-ant-YOUR-KEY-HERE
# OpenAI (alternative):
# llm.openAiApiKey=sk-YOUR-KEY-HERE
Save and close. Verify the file was created:
# macOS / Linux
cat ~/.sdlc/sdlc-local.properties
# Windows
type "$env:USERPROFILE\.sdlc\sdlc-local.properties"
You should see your key printed. If you see "No such file or directory", the file was not saved to the right location — check the path, including the leading dot in .sdlc.
Optional — add a short sdlc command
Without this step you run the platform with java -jar sdlc-orchestrator.jar. With it, you can just type sdlc.
macOS / Linux:
mkdir -p ~/.sdlc/bin
cp sdlc-orchestrator.jar ~/.sdlc/
cat > ~/.sdlc/bin/sdlc <<'EOF'
#!/bin/sh
exec java -jar "$HOME/.sdlc/sdlc-orchestrator.jar" "$@"
EOF
chmod +x ~/.sdlc/bin/sdlc
echo 'export PATH="$HOME/.sdlc/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc # or: source ~/.zshrc
Windows (PowerShell):
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.sdlc\bin"
Copy-Item sdlc-orchestrator.jar "$env:USERPROFILE\.sdlc\"
Set-Content -Path "$env:USERPROFILE\.sdlc\bin\sdlc.bat" `
-Value "@echo off`r`njava -jar `"%USERPROFILE%\.sdlc\sdlc-orchestrator.jar`" %*"
$p = [Environment]::GetEnvironmentVariable("PATH","User")
[Environment]::SetEnvironmentVariable("PATH","$p;$env:USERPROFILE\.sdlc\bin","User")
Open a new terminal and verify with sdlc --version.
First Run — Test It
Run the platform against a real project with an inline ticket. No Jira or Linear required.
You need a project with a standard build file: pom.xml (Spring Boot / Maven), build.gradle, package.json, or requirements.txt.
Replace /path/to/your/project with the actual path.
macOS / Linux
java -jar sdlc-orchestrator.jar \
--ticket-id TEST-1 \
--title "Add a health check endpoint" \
--description "Add a GET /health endpoint that returns HTTP 200 with body: ok" \
--project /path/to/your/project
Windows (PowerShell — backtick for line continuation)
java -jar sdlc-orchestrator.jar `
--ticket-id TEST-1 `
--title "Add a health check endpoint" `
--description "Add a GET /health endpoint that returns HTTP 200 with body: ok" `
--project C:\path\to\your\project
If you set up the sdlc shortcut, use sdlc instead of java -jar sdlc-orchestrator.jar.
What you should see:
Type yes and press Enter.
The platform generates code and shows a diff, then asks:
Type yes again.
Files are written, your build runs, a git commit is created, and an audit record is saved to ~/.sdlc/audit/.
If something goes wrong:
| Error | Cause | Fix |
|---|---|---|
config validation failed: no LLM key |
Config file not found or key missing | Run cat ~/.sdlc/sdlc-local.properties and confirm the file exists with your key |
401 Unauthorized |
API key wrong or revoked | Log into the API console and generate a new key |
Could not detect project type |
No standard build file in the project root | Add --project-type spring-boot (or node, python, gradle) |
Build failed after apply |
Generated code has a compile or test error | Run sdlc --show-audit TEST-1 for details; try with a clearer --description |
REJECTED_BY_VALIDATION |
Plan validation failed | Add more detail to --description; run --rescan if the codebase index is stale |
Next Steps
Once the first run works, here is what to explore next.