Skip to content

Commit 58c2301

Browse files
ci: add GitHub Actions workflows (CI, Release, CodeQL), issue templates, PR template, and security policy
1 parent aa284d6 commit 58c2301

9 files changed

Lines changed: 394 additions & 17 deletions

File tree

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
name: 🐛 Bug Report
2+
description: Report unexpected behavior, retrieval errors, or system crashes in localrag-kit.
3+
title: "[Bug]: "
4+
labels: ["bug", "triage"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thank you for reporting an issue in **localrag-kit**!
10+
Please verify you are running the latest version before submitting.
11+
12+
- type: textarea
13+
id: description
14+
attributes:
15+
label: Bug Description
16+
description: A clear, concise description of what the bug is.
17+
placeholder: When running `localrag query ...`, the system fails with ...
18+
validations:
19+
required: true
20+
21+
- type: textarea
22+
id: reproduction
23+
attributes:
24+
label: Steps to Reproduce
25+
description: Provide the exact CLI command or Python code snippet used.
26+
placeholder: |
27+
1. Initialize store: `localrag init`
28+
2. Ingest document: `localrag ingest ./docs/manual.pdf`
29+
3. Execute query: `localrag query "summarize section 2"`
30+
validations:
31+
required: true
32+
33+
- type: dropdown
34+
id: embedding-model
35+
attributes:
36+
label: Embedding Model / Backend
37+
description: Which embedding provider or model was in use?
38+
options:
39+
- sentence-transformers (default: all-MiniLM-L6-v2)
40+
- Ollama Embeddings
41+
- HuggingFace Local
42+
- Custom / Other
43+
validations:
44+
required: true
45+
46+
- type: dropdown
47+
id: llm-backend
48+
attributes:
49+
label: LLM Provider
50+
description: Which local inference provider was active?
51+
options:
52+
- Ollama (e.g., llama3, mistral)
53+
- llama.cpp / GGUF
54+
- vLLM
55+
- None (Embedding/Retrieval-only)
56+
- Other
57+
58+
- type: textarea
59+
id: environment
60+
attributes:
61+
label: Environment & Hardware
62+
description: What OS, Python version, and hardware are you running?
63+
placeholder: |
64+
- OS: Windows 11 / Ubuntu 24.04 / macOS Sequoia
65+
- Python Version: 3.11.8
66+
- Hardware: Apple M2 / NVIDIA RTX 4070 / Intel i7 (CPU only)
67+
- RAM: 16 GB
68+
validations:
69+
required: true
70+
71+
- type: textarea
72+
id: logs
73+
attributes:
74+
label: Terminal Traceback / Logs
75+
description: Paste any error tracebacks or verbose CLI logs here.
76+
render: shell
77+
78+
- type: checkboxes
79+
id: checks
80+
attributes:
81+
label: Checklist
82+
options:
83+
- label: I verified that the issue persists on the latest `main` branch.
84+
required: true
85+
- label: I confirmed my hardware meets minimum RAM requirements for the chosen model.
86+
required: true
87+
- label: No private credentials or proprietary data are included in this report.
88+
required: true

‎.github/ISSUE_TEMPLATE/config.yml‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: 💬 Community Discussions & Questions
4+
url: https://github.com/RitualDev-Lab/localrag-kit/discussions
5+
about: Ask implementation questions, share use cases, or discuss local LLM performance.
6+
- name: 🌐 RitualDev Studio Portal
7+
url: https://ritualdev.in/open-source
8+
about: Learn more about our offline-first systems architecture.
9+
- name: 🔒 Report a Security Vulnerability
10+
url: https://github.com/RitualDev-Lab/localrag-kit/security/policy
11+
about: Privately report a security sensitivity or vulnerability.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: 💡 Feature Request
2+
description: Propose an enhancement, new parser, or CLI feature for localrag-kit.
3+
title: "[Feature]: "
4+
labels: ["enhancement"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
We welcome feature ideas that uphold our core philosophy: **100% Offline, Zero Cloud Telemetry, High Precision**.
10+
11+
- type: textarea
12+
id: problem
13+
attributes:
14+
label: Problem Statement
15+
description: Is your feature request related to a problem or workflow limitation?
16+
placeholder: I am currently unable to ingest EPUB or LaTeX documents without pre-converting them...
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: solution
22+
attributes:
23+
label: Proposed Solution
24+
description: Describe what you want to happen and how it should integrate into localrag-kit.
25+
placeholder: Add a native parser under `localrag/parsers/` that extracts text from ...
26+
validations:
27+
required: true
28+
29+
- type: textarea
30+
id: alternatives
31+
attributes:
32+
label: Alternative Approaches
33+
description: What other workarounds or libraries have you considered?
34+
35+
- type: checkboxes
36+
id: contribution
37+
attributes:
38+
label: Implementation
39+
options:
40+
- label: I am interested in opening a Pull Request to implement this feature.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: 🧠 Model / Provider Support Request
2+
description: Propose support for a new offline embedding model, vector index, or local inference engine.
3+
title: "[Provider Support]: "
4+
labels: ["provider", "ai-models"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
LocalRAG-Kit aims to run seamlessly with the best open-weights models and local runtimes.
10+
11+
- type: dropdown
12+
id: provider-category
13+
attributes:
14+
label: Category
15+
options:
16+
- Local Embedding Model (e.g. BGE-M3, Nomic-Embed, GTE)
17+
- Local LLM Runtime (e.g. llama.cpp, ExLlamaV2, MLC-LLM)
18+
- Vector Storage Backend (e.g. LanceDB, Qdrant Local, DuckDB VSS)
19+
- Document Parser (e.g. Docx, EPUB, Audio-Transcription)
20+
default: 0
21+
validations:
22+
required: true
23+
24+
- type: input
25+
id: model-name
26+
attributes:
27+
label: Model or Framework Identifier
28+
placeholder: BAAI/bge-m3 / llama-cpp-python / etc.
29+
validations:
30+
required: true
31+
32+
- type: textarea
33+
id: rationale
34+
attributes:
35+
label: Why should this be supported?
36+
description: Explain the benefits (e.g. lower memory footprint, multi-lingual support, speed benchmarks).
37+
validations:
38+
required: true
39+
40+
- type: textarea
41+
id: documentation-links
42+
attributes:
43+
label: Relevant Links & Documentation
44+
placeholder: HuggingFace model card, GitHub repo, or benchmark links.

‎.github/pull_request_template.md‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
## Description
2+
3+
Closes #(issue)
4+
5+
Please provide a concise summary of the changes proposed in this pull request and the rationale behind them.
6+
7+
---
8+
9+
## Type of Change
10+
11+
- [ ] 🐛 Bug fix (non-breaking change fixing an issue)
12+
- [ ] ✨ New feature (non-breaking change adding functionality)
13+
- [ ] ⚡ Performance improvement
14+
- [ ] ♻️ Refactoring / Code cleanup
15+
- [ ] 📝 Documentation update
16+
- [ ] 🧪 Test coverage addition
17+
18+
---
19+
20+
## Changes Made
21+
22+
-
23+
-
24+
-
25+
26+
---
27+
28+
## Local Verification & Testing
29+
30+
- [ ] All existing and new tests pass locally (`pytest -v`).
31+
- [ ] Code formatting and linting pass (`ruff check .` / `black --check .`).
32+
- [ ] Verified that **no remote API calls or telemetry** are introduced.
33+
- [ ] Tested on sample documents (PDF / Markdown / Code files).
34+
35+
---
36+
37+
## Checklist
38+
39+
- [ ] My code follows the project's coding guidelines.
40+
- [ ] I have updated corresponding documentation where applicable.
41+
- [ ] I have added tests that prove my fix is effective or that my feature works.

‎.github/workflows/ci.yml‎

Lines changed: 46 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,42 @@
1-
name: CI
1+
name: CI
22

33
on:
44
push:
55
branches: [ "main" ]
66
pull_request:
77
branches: [ "main" ]
88

9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
913
jobs:
14+
lint:
15+
name: Code Quality & Linting
16+
runs-on: ubuntu-latest
17+
steps:
18+
- name: Checkout Code
19+
uses: actions/checkout@v4
20+
21+
- name: Set up Python
22+
uses: actions/setup-python@v5
23+
with:
24+
python-version: "3.11"
25+
cache: "pip"
26+
27+
- name: Install Linting Tools
28+
run: |
29+
python -m pip install --upgrade pip
30+
pip install ruff
31+
32+
- name: Run Ruff Linter & Formatter Check
33+
run: |
34+
ruff check .
35+
ruff format --check . || echo "Format warnings noted."
36+
1037
test:
1138
name: Test on ${{ matrix.os }} (Python ${{ matrix.python-version }})
39+
needs: [lint]
1240
runs-on: ${{ matrix.os }}
1341
strategy:
1442
fail-fast: false
@@ -17,19 +45,20 @@ jobs:
1745
python-version: ["3.10", "3.11", "3.12", "3.13"]
1846

1947
steps:
20-
- uses: actions/checkout@v4
21-
22-
- name: Set up Python ${{ matrix.python-version }}
23-
uses: actions/setup-python@v5
24-
with:
25-
python-version: ${{ matrix.python-version }}
26-
cache: "pip"
27-
28-
- name: Install Dependencies
29-
run: |
30-
python -m pip install --upgrade pip
31-
pip install -e ".[dev]"
32-
33-
- name: Run Test Suite
34-
run: |
35-
pytest -v
48+
- name: Checkout Code
49+
uses: actions/checkout@v4
50+
51+
- name: Set up Python ${{ matrix.python-version }}
52+
uses: actions/setup-python@v5
53+
with:
54+
python-version: ${{ matrix.python-version }}
55+
cache: "pip"
56+
57+
- name: Install Dependencies
58+
run: |
59+
python -m pip install --upgrade pip
60+
pip install -e ".[dev]"
61+
62+
- name: Run Pytest Suite
63+
run: |
64+
pytest -v --durations=10

‎.github/workflows/codeql.yml‎

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: "CodeQL Analysis"
2+
3+
on:
4+
push:
5+
branches: [ "main" ]
6+
pull_request:
7+
branches: [ "main" ]
8+
schedule:
9+
- cron: '30 1 * * 1'
10+
11+
jobs:
12+
analyze:
13+
name: CodeQL Security Scan
14+
runs-on: ubuntu-latest
15+
permissions:
16+
actions: read
17+
contents: read
18+
security-events: write
19+
20+
strategy:
21+
fail-fast: false
22+
matrix:
23+
language: [ 'python' ]
24+
25+
steps:
26+
- name: Checkout repository
27+
uses: actions/checkout@v4
28+
29+
- name: Initialize CodeQL
30+
uses: github/codeql-action/init@v3
31+
with:
32+
languages: ${{ matrix.language }}
33+
34+
- name: Perform CodeQL Analysis
35+
uses: github/codeql-action/analyze@v3
36+
with:
37+
category: "/language:${{matrix.language}}"

‎.github/workflows/release.yml‎

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: Release & Packaging
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*.*.*"
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
build-and-release:
13+
name: Build Distribution & Publish GitHub Release
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- name: Checkout Code
18+
uses: actions/checkout@v4
19+
with:
20+
fetch-depth: 0
21+
22+
- name: Set up Python
23+
uses: actions/setup-python@v5
24+
with:
25+
python-version: "3.11"
26+
cache: "pip"
27+
28+
- name: Install Build Tooling
29+
run: |
30+
python -m pip install --upgrade pip
31+
pip install build
32+
33+
- name: Build Source and Wheel Distributions
34+
run: |
35+
python -m build
36+
37+
- name: Create GitHub Release & Attach Assets
38+
uses: softprops/action-gh-release@v2
39+
with:
40+
files: |
41+
dist/*.whl
42+
dist/*.tar.gz
43+
generate_release_notes: true
44+
draft: false
45+
prerelease: false
46+
env:
47+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)