shenron 0.5.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. shenron-0.5.3/.github/copilot-instructions.md +36 -0
  2. shenron-0.5.3/.github/workflows/ci.yaml +157 -0
  3. shenron-0.5.3/.github/workflows/pr-title-check.yml +27 -0
  4. shenron-0.5.3/.github/workflows/python-release.yaml +72 -0
  5. shenron-0.5.3/.github/workflows/release-assets.yaml +60 -0
  6. shenron-0.5.3/.github/workflows/release-please.yaml +21 -0
  7. shenron-0.5.3/.gitignore +212 -0
  8. shenron-0.5.3/.gitmodules +0 -0
  9. shenron-0.5.3/.release-please-manifest.json +3 -0
  10. shenron-0.5.3/CHANGELOG.md +73 -0
  11. shenron-0.5.3/Cargo.lock +634 -0
  12. shenron-0.5.3/Cargo.toml +24 -0
  13. shenron-0.5.3/LICENSE +21 -0
  14. shenron-0.5.3/PKG-INFO +78 -0
  15. shenron-0.5.3/README.md +61 -0
  16. shenron-0.5.3/VERSION +1 -0
  17. shenron-0.5.3/configs/Qwen06B-cu126-TP1.yml +36 -0
  18. shenron-0.5.3/docker/Dockerfile.cu126 +105 -0
  19. shenron-0.5.3/docker/Dockerfile.cu129 +116 -0
  20. shenron-0.5.3/docker/Dockerfile.cu130 +56 -0
  21. shenron-0.5.3/docker/README.md +21 -0
  22. shenron-0.5.3/docker/docker-compose.yml +51 -0
  23. shenron-0.5.3/docker/entrypoint_samples/Shenron-0.1.0-B200-Qwen3-VL-235B-FP8-TP2.sh +237 -0
  24. shenron-0.5.3/docker/entrypoint_samples/Shenron-0.1.0-Hopper-Qwen3-VL-235B-FP8-TP4.sh +164 -0
  25. shenron-0.5.3/docker/entrypoint_samples/Shenron-0.1.0-Hopper-Qwen3-VL-235B-FP8-TP8-EP8.sh +165 -0
  26. shenron-0.5.3/docker/entrypoint_samples/Shenron-0.1.0-Qwen0.6B.sh +235 -0
  27. shenron-0.5.3/docker/run_docker_compose.sh +30 -0
  28. shenron-0.5.3/docker/vllm_samples/QWEN235VL-FP8-TP4.sh +11 -0
  29. shenron-0.5.3/pyproject.toml +30 -0
  30. shenron-0.5.3/release-please-config.json +14 -0
  31. shenron-0.5.3/scripts/ci.sh +26 -0
  32. shenron-0.5.3/shenron/__init__.py +3 -0
  33. shenron-0.5.3/shenron/__main__.py +40 -0
  34. shenron-0.5.3/src/core.rs +582 -0
  35. shenron-0.5.3/src/lib.rs +21 -0
  36. shenron-0.5.3/tests/test_compose_generation.sh +32 -0
  37. shenron-0.5.3/tests/test_docker_compose.sh +19 -0
  38. shenron-0.5.3/tests/test_generate_from_config.sh +26 -0
@@ -0,0 +1,36 @@
1
+ # Copilot instructions (Shenron)
2
+
3
+ ## What this repo is
4
+ - This repository is primarily a **docker-compose distribution + launcher script** for a multi-service inference stack.
5
+ - The stack is defined in [docker/docker-compose.yml](docker/docker-compose.yml) and is driven by [docker/run_docker_compose.sh](docker/run_docker_compose.sh), which generates runtime config into `docker/.generated/`.
6
+
7
+ ## Big-picture runtime architecture
8
+ - `vllm` (GPU inference) runs `vllm serve ...` inside `ghcr.io/doublewordai/shenron:${SHENRON_VERSION}-cu${CU}`.
9
+ - `onwards` is an **external gateway image** (`ghcr.io/doublewordai/onwards:latest`) configured via a generated JSON file.
10
+ - `prometheus` scrapes vLLM metrics over the docker network.
11
+ - `scouter-reporter` reads Prometheus and reports to a Scouter collector (reachable via `host.docker.internal`).
12
+
13
+ ## Local workflows (source of truth)
14
+ - Generate configs only: `./docker/run_docker_compose.sh --dry-run` (writes `docker/.generated/*`).
15
+ - Start the stack: `./docker/run_docker_compose.sh` (runs `docker compose ... up -d`).
16
+ - vLLM is **not exposed to the host**; debug it via compose exec, e.g. `docker compose -f docker/docker-compose.yml exec vllm curl -sS http://localhost:8000/health`.
17
+
18
+ ## Editing behavior (important conventions)
19
+ - If changing vLLM launch flags, edit the `VLLM_ARGS=(...)` array in [docker/run_docker_compose.sh](docker/run_docker_compose.sh). Do **not** hand-edit `docker/.generated/vllm_start.sh` (it is regenerated).
20
+ - If you change `MODELNAME`, `APIKEY`, or ports (e.g. `VLLM_PORT`), rerun `./docker/run_docker_compose.sh` to regenerate `docker/.generated/onwards_config.json`, `prometheus.yml`, and `*.env`.
21
+ - When updating only runtime args (no image rebuild), restart just vLLM:
22
+ `docker compose -f docker/docker-compose.yml up -d --no-deps --force-recreate vllm`
23
+
24
+ ## Versioning and releases (don’t break this)
25
+ - `VERSION` is the single source of truth for the release version (used as `SHENRON_VERSION`).
26
+ - Compose must reference `${SHENRON_VERSION}` **without** a hardcoded fallback; tests enforce this (see [tests/test_compose_version_matches.sh](tests/test_compose_version_matches.sh)).
27
+ - [docker/run_docker_compose.sh](docker/run_docker_compose.sh) contains the placeholder `__SHENRON_RELEASE_TAG__` which is stamped by the release workflow; keep that placeholder intact.
28
+
29
+ ## Tests / CI expectations
30
+ - Run the same checks as CI: `./scripts/ci.sh`.
31
+ - Includes shell tests in [tests/](tests/) and optionally runs docker-compose validation if `docker` is available.
32
+ - ShellCheck is expected to pass for the launcher script: `shellcheck -x docker/run_docker_compose.sh`.
33
+
34
+ ## When making changes
35
+ - Prefer small, surgical edits to [docker/run_docker_compose.sh](docker/run_docker_compose.sh), [docker/docker-compose.yml](docker/docker-compose.yml), and the shell tests.
36
+ - If you add/remove any generated artifact, update the required-file list in [tests/test_run_docker_compose_dry_run.sh](tests/test_run_docker_compose_dry_run.sh).
@@ -0,0 +1,157 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+ release:
9
+ types: [published]
10
+ workflow_dispatch:
11
+
12
+ jobs:
13
+ lint:
14
+ if: github.event_name != 'release'
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v6
18
+
19
+ - name: Install ShellCheck
20
+ run: sudo apt-get update && sudo apt-get install -y shellcheck
21
+
22
+ - name: ShellCheck (docker/run_docker_compose.sh)
23
+ run: shellcheck -x docker/run_docker_compose.sh
24
+
25
+ test:
26
+ if: github.event_name != 'release'
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - uses: actions/checkout@v6
30
+
31
+ - name: Set up Python
32
+ uses: actions/setup-python@v5
33
+ with:
34
+ python-version: '3.11'
35
+
36
+ - name: Install Rust
37
+ uses: dtolnay/rust-toolchain@stable
38
+
39
+ - name: Run Shenron tests
40
+ run: ./scripts/ci.sh
41
+
42
+ docker-build:
43
+ name: docker-build (${{ matrix.name }})
44
+ runs-on: ubuntu-latest
45
+ if: github.event_name == 'push' || github.event_name == 'release'
46
+ permissions:
47
+ contents: read
48
+ packages: write
49
+ id-token: write
50
+ strategy:
51
+ fail-fast: false
52
+ matrix:
53
+ include:
54
+ - name: cu126
55
+ dockerfile: docker/Dockerfile.cu126
56
+ tag_suffix: -cu126
57
+ - name: cu129
58
+ dockerfile: docker/Dockerfile.cu129
59
+ tag_suffix: -cu129
60
+ - name: cu130
61
+ dockerfile: docker/Dockerfile.cu130
62
+ tag_suffix: -cu130
63
+
64
+ steps:
65
+ - name: Maximize build space
66
+ uses: easimon/maximize-build-space@v10
67
+ with:
68
+ root-reserve-mb: 1024
69
+ temp-reserve-mb: 100
70
+ swap-size-mb: 1024
71
+ remove-dotnet: 'true'
72
+ remove-android: 'true'
73
+ remove-haskell: 'true'
74
+ remove-codeql: 'true'
75
+
76
+ - uses: actions/checkout@v6
77
+ with:
78
+ ref: ${{ github.event_name == 'release' && github.event.release.tag_name || github.sha }}
79
+
80
+ - name: Detect changes
81
+ id: changes
82
+ uses: dorny/paths-filter@v3
83
+ with:
84
+ filters: |
85
+ docker_cuda:
86
+ - 'docker/Dockerfile.cu*'
87
+ release_version:
88
+ - 'VERSION'
89
+
90
+ - name: Read VERSION
91
+ if: github.event_name == 'release' || steps.changes.outputs.docker_cuda == 'true' || steps.changes.outputs.release_version == 'true'
92
+ run: echo "VERSION=$(tr -d '[:space:]' < VERSION)" >> "$GITHUB_ENV"
93
+
94
+ - uses: docker/setup-buildx-action@v3
95
+ if: github.event_name == 'release' || steps.changes.outputs.docker_cuda == 'true' || steps.changes.outputs.release_version == 'true'
96
+
97
+ - name: Set up Depot CLI
98
+ if: github.event_name == 'release' || steps.changes.outputs.docker_cuda == 'true' || steps.changes.outputs.release_version == 'true'
99
+ uses: depot/setup-action@v1
100
+
101
+ - name: Log in to GitHub Container Registry
102
+ if: |
103
+ (github.event_name == 'release') ||
104
+ (github.event_name == 'push' && (steps.changes.outputs.docker_cuda == 'true' || steps.changes.outputs.release_version == 'true'))
105
+ uses: docker/login-action@v3
106
+ with:
107
+ registry: ghcr.io
108
+ username: ${{ github.actor }}
109
+ password: ${{ secrets.GITHUB_TOKEN }}
110
+
111
+ - name: Extract metadata
112
+ if: github.event_name == 'release' || steps.changes.outputs.docker_cuda == 'true' || steps.changes.outputs.release_version == 'true'
113
+ id: meta
114
+ uses: docker/metadata-action@v5
115
+ with:
116
+ images: ghcr.io/${{ github.repository_owner }}/shenron
117
+ flavor: |
118
+ suffix=${{ matrix.tag_suffix }}
119
+ tags: |
120
+ type=raw,value=${{ env.VERSION }}
121
+ type=sha,event=branch,prefix=sha-
122
+ type=ref,event=pr
123
+ type=raw,value=latest,enable=${{ github.event_name == 'release' }}
124
+
125
+ - name: Verify Depot project configuration
126
+ if: (github.event_name == 'push' || github.event_name == 'release') && (steps.changes.outputs.docker_cuda == 'true' || steps.changes.outputs.release_version == 'true') && !vars.DEPOT_PROJECT_ID
127
+ run: |
128
+ echo "::error::DEPOT_PROJECT_ID repo variable is not set. Create a Depot project and set DEPOT_PROJECT_ID in GitHub repo Variables." \
129
+ " If you are using OIDC, also add a Trust Relationship in Depot project settings for this repo/workflow." \
130
+ " Otherwise, set a DEPOT_TOKEN secret and the workflow will use it."
131
+ exit 1
132
+
133
+ - name: Build and push with Depot (main)
134
+ if: github.event_name == 'push' && (steps.changes.outputs.docker_cuda == 'true' || steps.changes.outputs.release_version == 'true')
135
+ uses: depot/build-push-action@v1
136
+ with:
137
+ project: ${{ vars.DEPOT_PROJECT_ID }}
138
+ token: ${{ secrets.DEPOT_TOKEN }}
139
+ context: .
140
+ file: ./${{ matrix.dockerfile }}
141
+ platforms: linux/amd64
142
+ push: true
143
+ tags: ${{ steps.meta.outputs.tags }}
144
+
145
+ - name: Build and push with Depot (release)
146
+ if: github.event_name == 'release'
147
+ uses: depot/build-push-action@v1
148
+ with:
149
+ project: ${{ vars.DEPOT_PROJECT_ID }}
150
+ token: ${{ secrets.DEPOT_TOKEN }}
151
+ context: .
152
+ file: ./${{ matrix.dockerfile }}
153
+ platforms: linux/amd64,linux/arm64
154
+ push: true
155
+ tags: ${{ steps.meta.outputs.tags }}
156
+ sbom: true
157
+ provenance: true
@@ -0,0 +1,27 @@
1
+ name: PR Title Check
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, edited, synchronize, reopened]
6
+
7
+ permissions:
8
+ pull-requests: read
9
+
10
+ jobs:
11
+ check-title:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - if: ${{ env.ACT }}
15
+ name: Validate PR title locally (act)
16
+ env:
17
+ PR_TITLE: ${{ github.event.pull_request.title }}
18
+ run: |
19
+ if ! echo "$PR_TITLE" | grep -Eq '^(feat|fix|docs|style|refactor|perf|test|build|ci|chore)(\(.+\))?!?: .+'; then
20
+ echo "Invalid PR title: $PR_TITLE" >&2
21
+ exit 1
22
+ fi
23
+
24
+ - if: ${{ !env.ACT }}
25
+ uses: amannn/action-semantic-pull-request@v6
26
+ env:
27
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,72 @@
1
+ name: Publish Python Package
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ release_tag:
9
+ description: Release tag to build from (e.g. v0.5.3)
10
+ required: false
11
+ type: string
12
+ dry_run:
13
+ description: Skip PyPI publish step
14
+ required: false
15
+ type: boolean
16
+ default: true
17
+
18
+ permissions:
19
+ contents: read
20
+ id-token: write
21
+
22
+ jobs:
23
+ publish:
24
+ runs-on: ubuntu-latest
25
+ environment: pypi
26
+ steps:
27
+ - if: ${{ !env.ACT }}
28
+ uses: actions/checkout@v6
29
+ with:
30
+ ref: ${{ github.event.release.tag_name }}
31
+
32
+ - if: ${{ env.ACT }}
33
+ uses: actions/checkout@v6
34
+
35
+ - name: Set up Python
36
+ uses: actions/setup-python@v5
37
+ with:
38
+ python-version: '3.11'
39
+
40
+ - name: Install Rust
41
+ uses: dtolnay/rust-toolchain@stable
42
+
43
+ - name: Sync package versions to release tag
44
+ run: |
45
+ if [[ "${GITHUB_EVENT_NAME}" == "release" ]]; then
46
+ tag="${{ github.event.release.tag_name }}"
47
+ elif [[ -n "${{ inputs.release_tag }}" ]]; then
48
+ tag="${{ inputs.release_tag }}"
49
+ else
50
+ tag="v$(tr -d '[:space:]' < VERSION)"
51
+ fi
52
+
53
+ version="${tag}"
54
+ version="${version#v}"
55
+ sed -i -E "s/^version = \".*\"$/version = \"${version}\"/" Cargo.toml
56
+ sed -i -E "s/^version = \".*\"$/version = \"${version}\"/" pyproject.toml
57
+ sed -i -E "s/^shenron_version:.*$/shenron_version: ${version}/" configs/Qwen06B-cu126-TP1.yml
58
+ printf "%s\n" "$version" > VERSION
59
+
60
+ - name: Build wheel and sdist
61
+ uses: PyO3/maturin-action@v1
62
+ with:
63
+ command: build
64
+ args: --release --sdist --out dist
65
+
66
+ - name: Verify dist locally (act)
67
+ if: ${{ env.ACT }}
68
+ run: ls -la dist
69
+
70
+ - name: Publish to PyPI
71
+ if: ${{ !env.ACT && !(github.event_name == 'workflow_dispatch' && inputs.dry_run) }}
72
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,60 @@
1
+ name: Release Assets
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ release_tag:
9
+ description: Release tag to stamp into assets (e.g. v0.5.3)
10
+ required: false
11
+ type: string
12
+ dry_run:
13
+ description: Skip GitHub release upload step
14
+ required: false
15
+ type: boolean
16
+ default: true
17
+
18
+ permissions:
19
+ contents: write
20
+
21
+ jobs:
22
+ upload-assets:
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - if: ${{ !env.ACT }}
26
+ uses: actions/checkout@v6
27
+ with:
28
+ ref: ${{ github.event.release.tag_name }}
29
+
30
+ - if: ${{ env.ACT }}
31
+ uses: actions/checkout@v6
32
+
33
+ - name: Prepare assets
34
+ run: |
35
+ if [[ "${GITHUB_EVENT_NAME}" == "release" ]]; then
36
+ tag="${{ github.event.release.tag_name }}"
37
+ elif [[ -n "${{ inputs.release_tag }}" ]]; then
38
+ tag="${{ inputs.release_tag }}"
39
+ else
40
+ tag="v$(tr -d '[:space:]' < VERSION)"
41
+ fi
42
+
43
+ version="${tag}"
44
+ version="${version#v}"
45
+ for cfg in configs/*.yml; do
46
+ out="$(basename "$cfg")"
47
+ sed -E "s|^shenron_version:.*$|shenron_version: ${version}|g" "$cfg" > "$out"
48
+ done
49
+
50
+ - name: Verify assets locally (act)
51
+ if: ${{ env.ACT }}
52
+ run: ls -la ./*.yml
53
+
54
+ - name: Upload assets
55
+ if: ${{ !env.ACT && !(github.event_name == 'workflow_dispatch' && inputs.dry_run) }}
56
+ uses: softprops/action-gh-release@v2
57
+ with:
58
+ fail_on_unmatched_files: true
59
+ files: |
60
+ *.yml
@@ -0,0 +1,21 @@
1
+ name: Release Please
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ permissions:
9
+ contents: write
10
+ pull-requests: write
11
+ issues: write
12
+
13
+ jobs:
14
+ release-please:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: googleapis/release-please-action@v4
18
+ with:
19
+ config-file: release-please-config.json
20
+ manifest-file: .release-please-manifest.json
21
+ token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,212 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+ Cargo.lock
78
+
79
+ # Jupyter Notebook
80
+ .ipynb_checkpoints
81
+
82
+ # IPython
83
+ profile_default/
84
+ ipython_config.py
85
+
86
+ # pyenv
87
+ # For a library or package, you might want to ignore these files since the code is
88
+ # intended to run in multiple environments; otherwise, check them in:
89
+ # .python-version
90
+
91
+ # pipenv
92
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
93
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
94
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
95
+ # install all needed dependencies.
96
+ #Pipfile.lock
97
+
98
+ # UV
99
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
100
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
101
+ # commonly ignored for libraries.
102
+ #uv.lock
103
+
104
+ docker/.generated/
105
+ configs/.generated/
106
+ configs/docker-compose.yml
107
+
108
+ # poetry
109
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
110
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
111
+ # commonly ignored for libraries.
112
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
113
+ #poetry.lock
114
+ #poetry.toml
115
+
116
+ # pdm
117
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
118
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
119
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
120
+ #pdm.lock
121
+ #pdm.toml
122
+ .pdm-python
123
+ .pdm-build/
124
+
125
+ # pixi
126
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
127
+ #pixi.lock
128
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
129
+ # in the .venv directory. It is recommended not to include this directory in version control.
130
+ .pixi
131
+
132
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
133
+ __pypackages__/
134
+
135
+ # Celery stuff
136
+ celerybeat-schedule
137
+ celerybeat.pid
138
+
139
+ # SageMath parsed files
140
+ *.sage.py
141
+
142
+ # Environments
143
+ .env
144
+ .envrc
145
+ .venv
146
+ env/
147
+ venv/
148
+ ENV/
149
+ env.bak/
150
+ venv.bak/
151
+
152
+ # Spyder project settings
153
+ .spyderproject
154
+ .spyproject
155
+
156
+ # Rope project settings
157
+ .ropeproject
158
+
159
+ # mkdocs documentation
160
+ /site
161
+
162
+ # mypy
163
+ .mypy_cache/
164
+ .dmypy.json
165
+ dmypy.json
166
+
167
+ # Pyre type checker
168
+ .pyre/
169
+
170
+ # pytype static type analyzer
171
+ .pytype/
172
+
173
+ # Cython debug symbols
174
+ cython_debug/
175
+
176
+ # PyCharm
177
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
178
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
179
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
180
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
181
+ #.idea/
182
+
183
+ # Abstra
184
+ # Abstra is an AI-powered process automation framework.
185
+ # Ignore directories containing user credentials, local state, and settings.
186
+ # Learn more at https://abstra.io/docs
187
+ .abstra/
188
+
189
+ # Visual Studio Code
190
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
191
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
192
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
193
+ # you could uncomment the following to ignore the entire vscode folder
194
+ # .vscode/
195
+
196
+ # Ruff stuff:
197
+ .ruff_cache/
198
+
199
+ # PyPI configuration file
200
+ .pypirc
201
+
202
+ # Cursor
203
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
204
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
205
+ # refer to https://docs.cursor.com/context/ignore-files
206
+ .cursorignore
207
+ .cursorindexingignore
208
+
209
+ # Marimo
210
+ marimo/_static/
211
+ marimo/_lsp/
212
+ __marimo__/
File without changes
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.5.2"
3
+ }
@@ -0,0 +1,73 @@
1
+ # Changelog
2
+
3
+ ## [0.5.2](https://github.com/doublewordai/shenron/compare/v0.5.1...v0.5.2) (2026-02-09)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * add depy auth ([4fa847a](https://github.com/doublewordai/shenron/commit/4fa847a73ee0fe5dd19e728489ac4eda7b296353))
9
+ * add verification for DEPOT_PROJECT_ID in CI workflow and update build steps ([223c256](https://github.com/doublewordai/shenron/commit/223c256f4334513e22c68b368960c9f8ab4461b4))
10
+ * add verification for DEPOT_PROJECT_ID in CI workflow and update build steps ([b5111df](https://github.com/doublewordai/shenron/commit/b5111dfc91a5cc441d5617d50e596cfe7bce9c76))
11
+
12
+ ## [0.5.1](https://github.com/doublewordai/shenron/compare/v0.5.0...v0.5.1) (2026-02-09)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * add Depot CLI setup step to CI workflow for release events ([87e7ef8](https://github.com/doublewordai/shenron/commit/87e7ef8654f149f2f5721626cb87ed94e8dd3248))
18
+ * add Depot CLI setup step to CI workflow for release events ([cc642c1](https://github.com/doublewordai/shenron/commit/cc642c1da8919e54f15657d91cf7e5c28f6a62c0))
19
+
20
+ ## [0.5.0](https://github.com/doublewordai/shenron/compare/v0.4.0...v0.5.0) (2026-02-09)
21
+
22
+
23
+ ### Features
24
+
25
+ * add Copilot instructions and enhance CI workflow with build space maximization ([b632cea](https://github.com/doublewordai/shenron/commit/b632ceaf851a3f6efad59ae340c303c809b1a88d))
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * add Copilot instructions and enhance CI workflow with build space maximization ([d15d018](https://github.com/doublewordai/shenron/commit/d15d018a71b445b528c15ef5f9e3ccd2ff49dbfb))
31
+
32
+ ## [0.4.0](https://github.com/doublewordai/shenron/compare/v0.3.0...v0.4.0) (2026-02-06)
33
+
34
+
35
+ ### Features
36
+
37
+ * update Docker image references to use ghcr.io for consistency ([7797780](https://github.com/doublewordai/shenron/commit/7797780b06b42bdcc67ac34142b5fb6a54ec7a3f))
38
+
39
+
40
+ ### Bug Fixes
41
+
42
+ * update Docker image references to use ghcr.io for consistency ([c3d755a](https://github.com/doublewordai/shenron/commit/c3d755af94ee52d35c2ca88570de483626521792))
43
+
44
+ ## [0.3.0](https://github.com/doublewordai/shenron/compare/v0.2.0...v0.3.0) (2026-02-06)
45
+
46
+
47
+ ### Features
48
+
49
+ * update SHENRON_VERSION handling in docker-compose and related tests ([333db7f](https://github.com/doublewordai/shenron/commit/333db7f90ca2074ca898c59c18bec5f40985f954))
50
+
51
+
52
+ ### Bug Fixes
53
+
54
+ * update SHENRON_VERSION handling in docker-compose and related t… ([77cd3bd](https://github.com/doublewordai/shenron/commit/77cd3bd34e1cb241f090ac1b2d4f57e1053f8f84))
55
+
56
+ ## [0.2.0](https://github.com/doublewordai/shenron/compare/v0.1.0...v0.2.0) (2026-02-06)
57
+
58
+
59
+ ### Features
60
+
61
+ * add ci ([f2c245e](https://github.com/doublewordai/shenron/commit/f2c245e6ab6c844a6aba6f26159842e3b8706ebd))
62
+ * add GitHub Actions workflow for automated releases ([05b8ad4](https://github.com/doublewordai/shenron/commit/05b8ad4505867be33eadd4cf258e825d2c5253c5))
63
+ * add GitHub Actions workflow for releasing assets and enhance run_docker_compose.sh for auto-downloading compose files ([c470d11](https://github.com/doublewordai/shenron/commit/c470d113fc2d00695a61c8910084b8b8a40b1c6a))
64
+ * add pull-requests permission to docker-build job in CI workflow ([08b02f8](https://github.com/doublewordai/shenron/commit/08b02f889f396aee878a8482e40466ea23811e73))
65
+ * remove branch protection workflow for main ([a23b950](https://github.com/doublewordai/shenron/commit/a23b950eebe51f4943e127c18db3a8692f860e12))
66
+ * remove branch protection workflow for main ([cd17472](https://github.com/doublewordai/shenron/commit/cd17472029b3f98c5ac493e277e4a56f1434cfad))
67
+ * remove redundant hadolint and Rust formatting steps from CI workflow ([cb07f9f](https://github.com/doublewordai/shenron/commit/cb07f9f9bd5998b961364f2f315f45e5268e1813))
68
+ * update CI workflow to specify ShellCheck target and enhance run_docker_compose.sh for version handling and vLLM config ([773e931](https://github.com/doublewordai/shenron/commit/773e931bd4d14237debfd12c254641653ef552f8))
69
+ * update docker-build job permissions and conditions in CI workflow ([dcf13ad](https://github.com/doublewordai/shenron/commit/dcf13ad81cf45fd90a0b45a975f3638e1d83e4e0))
70
+ * update release-please workflow to use GITHUB_TOKEN instead of RELEASE_TOKEN ([ca24a0c](https://github.com/doublewordai/shenron/commit/ca24a0c5639cdf70f31d0b3dda3724f0d630324f))
71
+ * update release-please workflow to use GITHUB_TOKEN instead of RELEASE_TOKEN ([dadf699](https://github.com/doublewordai/shenron/commit/dadf6996ccc0c405a785618b8feeb2bd152ffbfb))
72
+
73
+ ## Changelog