Skip to content

Applications Manifests and Python

Karialo edited this page Aug 3, 2026 · 1 revision

Applications, Manifests, and Python

Application installs

Noob mode

Install a project directory:

binman install ./MyApp

If BinMan cannot safely guess the entry point, tell it:

binman install ./weather-app \
  --entry 'python3 src/main.py' \
  --workdir src

Python projects can receive an isolated environment:

binman install ./weather-app --venv

Pro mode

Directory apps are stored under ~/.local/share/binman/apps/<name> and exposed through a shim in ~/.local/bin/<name>. The shim changes to the configured working directory, activates the selected environment when appropriate, and uses exec for the real entry command so signals and exit status are not swallowed by a shell wrapper.

Entry detection scores conventional candidates such as bin/<name>, Python __main__.py, and language-specific source files. Explicit --entry and --workdir override detection. --link stores a development symlink instead of copying a directory tree; single files are still copied.

Single-file Python tools

Single-file Python targets receive a stable payload under ~/.config/<name>/app.py. When requirements are present, BinMan creates a neighbouring environment and installs them. Directory apps use the app-store environment flow instead.

Manifests

Noob mode

Install a text manifest:

binman install --manifest tools.txt

Manifest files can contain one source per line. Blank lines and # comments are ignored.

Pro mode

JSON manifests are accepted when jq is installed. They may contain an array of strings or objects with a source field. Each item is routed through the normal installer, so its copy/link mode, app detection, venv setup, and confirmation rules still apply.

Wizard-created projects also receive BinMan manifests in the active app store:

<name>.cmd   single-file project
<name>.app   application project

The record includes name, type, version, source path, run target, preview, and help text. Existing manifests are not silently overwritten.

Doctor and virtual environments

binman doctor
binman doctor --all --python 3.11
binman doctor --dry-run MyApp

Doctor reports the active mode, paths, archive tools, PATH status, and possible shadowing. For Python apps it can create .venv, update pip best-effort, and install dependencies from requirements.txt or a basic pyproject.toml dependency list. An executable .binman/doctor.sh hook runs from the app directory.

--fix-path updates existing .zshrc, .zprofile, .bashrc, and .profile files, and adds a Fish config entry when Fish is available. It does not reload the current shell.

Clone this wiki locally