Skip to main content

Advanced project-aware task runner

Project description

Shemul

Shemul is a simple and lightweight project-aware task runner for development workflows. 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.14
  • 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)
  • 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.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.
  • 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

{
  "$schema": "https://shemul.dev/schema.json",
  "name": "example-project",
  "version": "1.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

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

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.0.tar.gz (19.0 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.0-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shemul-1.0.0.tar.gz
  • Upload date:
  • Size: 19.0 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.0.tar.gz
Algorithm Hash digest
SHA256 83700bc3b7c6df9b37b8eea184afa484741baaffd24c1eb16d22f1edb72574d4
MD5 2a0cd41164ed8ca6b255d8d91c8ef317
BLAKE2b-256 faa9f4c4e91e6306d944224b5cc315af0197a7be9097825cc12d8e7989ee2c09

See more details on using hashes here.

Provenance

The following attestation bundles were made for shemul-1.0.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: shemul-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 17.5 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 07cf67faf87abf09ade291f9fcb922e81d2c84228eb5a695a2f8ebce3b2e8124
MD5 23d8d4a18593782f63a23961a2865961
BLAKE2b-256 0204f4ec88042593bb0852d22f44dd36a98677d90d3c64a1e06f7812bee7169e

See more details on using hashes here.

Provenance

The following attestation bundles were made for shemul-1.0.0-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