Skip to main content

Shemul CLI is an advanced project-aware task runner based on JSON configuration.

Project description

Shemul

Shemul is an advanced project-aware CLI tool for task automation based on JSON configuration for PIP. It is a free and open-source CLI that centralizes repetitive development commands in shemul.json and runs them with safety controls, supporting both project-local and user-global command scopes.

Table of Contents

Requirements

  • Python >= 3.9
  • Optional: shell completion (bash, zsh, or fish) via scripts in completion/

Features

  • Dual scope config: project and global
  • Deterministic precedence: project overrides global on command conflicts
  • Project discovery with shemul.json
  • Command model supporting vars and env templating
  • Safe execution controls: confirm, danger, --dry, --trace
  • Diagnostics via shemul doctor
  • Rich CLI output with grouped command lists and contextual help
  • Built-in template-based initialization (shemul init [template])
  • Global initializer: shemul init -g
  • JSON Schema validation for shemul.json
  • Friendly command listing, info, help, and suggestions
  • Shell completion scripts for bash, zsh, and fish

Change log

Version 1.0.1 (March 20, 2026)

  • Fixed Python version requirement to >= 3.9 across package metadata and docs.

Version 1.0.0 (February 11, 2026)

  • Initial release.
  • Project and global scope config.
  • Template-based init and safety controls.

Please see CHANGELOG for more information on what has changed recently.

Installation

Shemul can be installed using pip:

pip install shemul

Usage

Scope model

Shemul supports two config scopes:

  • Project scope: <project>/shemul.json
  • Global scope (OS-native):
    • Windows: %APPDATA%\Shemul\shemul.json
    • macOS: ~/Library/Application Support/Shemul/shemul.json
    • Linux: $XDG_CONFIG_HOME/shemul/shemul.json (fallback: ~/.config/shemul/shemul.json)

If both scopes define the same command, project scope wins. If no config exists, Shemul suggests running shemul init -g.

Initialize global config

shemul init -g

Initialize project config

shemul init --list
shemul init fastapi-backend

List and run commands

shemul ls
shemul <command>

Init behavior

  • shemul init [template] creates project shemul.json; without template uses none.
  • shemul init -g [template] creates global shemul.json; without template uses none.
  • If config already exists, init warns with path and opens the file for editing.
  • Use --force to overwrite existing config.

Available templates: docker-fastapi-backend, fastapi-backend, django-drf-backend, expressjs-backend, nestjs-backend, react-native-expo-app, nextjs-frontend, none.

Common commands

shemul ls
shemul info
shemul help <name|group>
shemul doctor
shemul schema
shemul <command>

Safety flags

  • confirm: true in config prompts before run.
  • danger: true prompts with stronger warning.
  • --dry prints resolved command.
  • --trace prints resolved command and env context.

Configuration example

{
	"name": "example-project",
	"version": "1.0.0",
	"runtime": "docker",
	"env": {
		"local": {
			"compose": "docker-compose.yml"
		}
	},
	"vars": {
		"API": "api"
	},
	"commands": {
		"up": {
			"run": "docker compose up --build",
			"env": "local",
			"desc": "Start stack"
		},
		"migrate:up": {
			"run": "docker compose exec {{API}} alembic upgrade head",
			"confirm": true
		}
	}
}

Development

  • Source layout uses src/. Tests are in test/.
  • Run tests:
python -m pytest -q

FAQs

What is Shemul?

Shemul is an advanced project-aware CLI tool for task automation based on JSON configuration for PIP.

What is shemul.json?

It is the project or global JSON config that defines your commands, variables, and environment presets.

Do I need both global and project configs?

No. You can use either. If both exist, project commands override global commands with the same name.

How do I create a blank Shemul config?

Run shemul init to create a minimal config using the none template.

How do I see the built-in schema for Shemul?

Run shemul schema to print the bundled JSON Schema.

Where is the global config stored?

Windows: %APPDATA%\Shemul\shemul.json
macOS: ~/Library/Application Support/Shemul/shemul.json
Linux: $XDG_CONFIG_HOME/shemul/shemul.json (fallback: ~/.config/shemul/shemul.json)

License

Shemul is open-sourced software licensed under the MIT License.

Security

If you discover any security-related issues, please email product@stechbd.net instead of using the issue tracker.

Future Plan

  • Plugin/extensibility system for custom resolvers and runners
  • More built-in templates and community template registry
  • Better cross-platform editor/open behavior and UX polish
  • Optional remote/team-shared config patterns
  • Additional command introspection and diagnostics
  • Support for custom terminal colors and themes

Author

Contributors

None yet.

About S Technologies

S Technologies (STechBD.Net) is a research-based technology company in Bangladesh. It was founded in 2013. It provides services like domain registration, web hosting, web servers, software development, AI model development, software as a service (SaaS), UI/UX design, SEO, business solutions, etc. S Technologies has been working in research of new technologies especially in artificial intelligence, and developing new products. You'll find an overview of all our open source products on our website.

Support

If you are having general issues with this package, feel free to contact us on STechBD.Net/support.

If you believe you have found an issue, please report it using the GitHub issue tracker, or better yet, fork the repository and submit a pull request.

Hire Us

Contribute

More

Copyright

© 2013–26 S Technologies. All rights reserved.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shemul-1.0.1.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shemul-1.0.1-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

Details for the file shemul-1.0.1.tar.gz.

File metadata

  • Download URL: shemul-1.0.1.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shemul-1.0.1.tar.gz
Algorithm Hash digest
SHA256 6b1b2c22f5b4b1fca6206a42dc6c23dbd3a998a5d20ed7320e957d9d988cdf20
MD5 e984c2a20c438ac07ef027618accdcf0
BLAKE2b-256 3b886955a6e03c698115afbf585b6523714bdd45f849bd4ebac3a99ebb819e16

See more details on using hashes here.

Provenance

The following attestation bundles were made for shemul-1.0.1.tar.gz:

Publisher: publish.yml on STechBD/Shemul-PIP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shemul-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: shemul-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shemul-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e4980341588bf10cd7a868a162151709b9ac7673b1bfe9bcf4ca4455ac8b6fbb
MD5 698cf942f54299f79fec6a929b0eb004
BLAKE2b-256 82e535e6bef58cd793c4265e0a1e9f4c666c39804841b9152c1df9acafaaaed6

See more details on using hashes here.

Provenance

The following attestation bundles were made for shemul-1.0.1-py3-none-any.whl:

Publisher: publish.yml on STechBD/Shemul-PIP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page