Skip to main content

OpenComb

Developer Swiss Army Knife – combine, build, search, packages, and a full .prt programming language.

PyPI Python CI License: MIT

OpenComb Logo

pip install opencomb
# optional formatters
pip install "opencomb[format]"

Features (v0.9.0)

Area Commands Description
PRT language prt · run Own .prt language + REPL
Build build Interactive menu, 20 targets, terminal animations
Drill drill Interactive shell locked to one directory (bright red)
Code combine · format Merge Python files (local + URLs), format
Config merge · env YAML/JSON/TOML deep-merge, .env + export
Generate generate Cartesian / pairwise / sample + HTML reports
AI prompt · template LLM prompts, Jinja2
Recipes recipe Declarative pipelines
Packages pak add/list/info/… Install & inspect from PyPI (oc-pak)
Project init · tree · bump · ignore Scaffold, tree, version bump, gitignore
Quality check · doctor ruff + pytest gate
Power search · todos · stats · diff · hash · outdated · serve · watch Search, TODOs, LOC, diff, checksums, outdated deps, HTTP serve, file watch

Quick start

# Scaffold a project
opencomb init my-app -d "My cool app"
cd my-app

# Packages
opencomb pak add requests rich

# Quality
opencomb check
opencomb bump patch

# Interactive build (animations + menu)
opencomb build
opencomb build wheel sdist
opencomb build --list

# Drill into a directory
opencomb drill .

# PRT language
opencomb prt examples/prt/hello.prt
opencomb prt                          # REPL
opencomb prt -e 'print(2 + 3)'

OpenComb PRT (.prt)

OpenComb ships its own programming language with files ending in .prt.

Run

opencomb prt script.prt
opencomb run script.prt
opencomb prt -e 'print("hello", 1+2)'
opencomb prt                  # interactive REPL

Example

# hello.prt
let name = "OpenComb"
print("Hello from", name, "!")

fn add(a, b) {
    return a + b
}
print("2+3 =", add(2, 3))

var sum = 0
for n in [1, 2, 3, 4, 5] {
    sum += n
}
print("sum =", sum)

if sum > 10 {
    print("big")
} else {
    print("small")
}

write("out.txt", "saved by PRT")
# Call OpenComb from PRT:
# oc("stats", ".")

Language highlights

  • Variables: let, var
  • Types: numbers, strings, bools, null, lists, dicts
  • Control: if / elif / else, while, for … in, break, continue
  • Functions: fn name(args) { … return x }
  • Operators: + - * / % == != < > <= >= and or not += -= *= /=
  • Builtins: print, len, str, int, read, write, shell, range, listdir, exists, cwd, oc / opencomb, …

See examples/prt/.


Build system

opencomb build              # interactive menu + animations
opencomb build --list       # list all targets
opencomb build wheel sdist  # non-interactive
opencomb build release      # clean → format → check → package

Targets include: wheel, sdist, package, editable, install, clean, format, check, test, typecheck, coverage, docs, docker, reqs, lock, release, ci, tree, stats, combine.


Drill mode

Lock the terminal to one project directory (bright-red UI):

opencomb drill path/to/project
opencomb drill .

Inside drill:

opencomb:.> ls
opencomb:.> cd src
opencomb:src> pak add httpx
opencomb:src> combine a.py b.py -o out.py
opencomb:src> status
opencomb:src> exit

Packages (oc-pak)

opencomb pak add requests "httpx>=0.27"
opencomb pak list
opencomb pak show requests
opencomb pak info httpx
opencomb pak freeze -o requirements.txt
opencomb pak remove some-package

Power tools

opencomb search "TODO" .
opencomb search -E "def \\w+" src/
opencomb todos .
opencomb stats .
opencomb diff a.py b.py
opencomb hash src/ --tree
opencomb outdated
opencomb serve . -p 8765 --open report.html
opencomb watch src/ -r "pytest -q"
opencomb watch . --recipe recipes/dev.yaml

Combine, merge, generate

opencomb combine a.py b.py https://example.com/c.py -o out.py --format
opencomb merge base.yaml prod.yaml -o final.yaml
opencomb env .env .env.local --export -o load.sh
opencomb generate -p params.yaml --method pairwise --html
opencomb prompt -s system.txt -i task.txt -o prompt.txt
opencomb template page.j2 -d data.yaml -o out.html
opencomb recipe pipeline.yaml

Library usage

from opencomb import (
    CodeCombiner,
    ConfigMerger,
    CombinatorialGenerator,
    PackageManager,
    ProjectHelper,
    Checker,
    RecipeRunner,
)
from opencomb.prt import run_source, run_file, start_repl

# PRT
run_source('print("hi", 1+2)')
run_file("script.prt")

# Project
ProjectHelper().init("demo", description="Demo")

# Packages
PackageManager().add(["requests"])

# Checks
Checker().run_all()

Project layout (this repo)

src/opencomb/
  cli.py           # CLI entry
  prt/             # .prt language (lexer, parser, interpreter, REPL)
  builder.py       # interactive build
  drill.py         # drill shell
  combiner.py      # code combine
  tools.py         # search, todos, stats, …
  …
examples/prt/      # PRT samples
.github/workflows/ # CI + PyPI publish

Publishing

git tag v0.9.0
git push origin v0.9.0
# Create a GitHub Release → publish.yml uploads to PyPI (Trusted Publishing)

MIT © DarkFox Co.

Release files for opencomb 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for opencomb 0.9.0
File Size Uploaded
opencomb-0.9.0.tar.gz 33.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for opencomb 0.9.0
File Interpreter ABI Platform
opencomb-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 71.4 kB

Release files / opencomb-0.9.0.tar.gz

Download URL opencomb-0.9.0.tar.gz
Size 33.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5cbe1a830bfadf45b711097000db882b557a95daf74b746d5912ad9daf23f070
BLAKE2b-256 checksum
How to use checksums
eba617b82283dececa049c8ef1be93782d0df013afc049f705e85083ebaa1816
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / opencomb-0.9.0-py3-none-any.whl

Download URL opencomb-0.9.0-py3-none-any.whl
Size 38.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1827ab0c6cc8e240727c9bdaf4b0d43bb2061b23e4064eea776ac82833ce4f73
BLAKE2b-256 checksum
How to use checksums
b1b7ee32cb016b0f0a6e7ac23e74ea141b34746b395eb73bc14ddef7a1468b6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release history Release notifications | RSS feed

0.18.0

2 release files

0.17.2

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.11.0

2 release files

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page