setup project structure
This commit is contained in:
68
README.md
68
README.md
@@ -1,6 +1,6 @@
|
|||||||
# Gamayun
|
# Gamayun
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Concept
|
## Concept
|
||||||
|
|
||||||
@@ -31,11 +31,73 @@ Client-Server Separation: Compute-intensive operations (embedding generation, LL
|
|||||||
- Deployment in air-gapped labs
|
- Deployment in air-gapped labs
|
||||||
- Efficient resource utilization (centralized compute nodes can serve multiple investigators)
|
- Efficient resource utilization (centralized compute nodes can serve multiple investigators)
|
||||||
|
|
||||||
|
## Development Setup
|
||||||
|
|
||||||
|
## 🛠 Development Setup
|
||||||
|
|
||||||
|
This project uses [uv](https://github.com/astral-sh/uv) for fast dependency management and the modern "Src Layout" structure.
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- Python 3.13+
|
||||||
|
- [uv](https://github.com/astral-sh/uv) installed (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
|
||||||
|
|
||||||
|
### Installation Steps
|
||||||
|
|
||||||
|
1. **Clone the repository**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone <your-repo-url>
|
||||||
|
cd gamayun
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Create a virtual environment**
|
||||||
|
This project requires Python 3.13.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
uv venv --python 3.13
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Activate the environment**
|
||||||
|
|
||||||
|
- Linux/macOS:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
source .venv/bin/activate
|
||||||
|
```
|
||||||
|
|
||||||
|
- Windows:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
.venv\Scripts\activate
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Install dependencies**
|
||||||
|
This command installs locked dependencies and links the local `gamayun` package in editable mode.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
uv pip install -r requirements.txt -e .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Running the Application
|
||||||
|
|
||||||
|
You can execute the module directly:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python src/gamayun/main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### Running Tests
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pytest
|
||||||
|
```
|
||||||
|
|
||||||
## Data Flow
|
## Data Flow
|
||||||
|
|
||||||
### Ingestion Pipeline
|
### Ingestion Pipeline
|
||||||
|
|
||||||
```
|
```bash
|
||||||
Raw Evidence Sources
|
Raw Evidence Sources
|
||||||
├─ Forensic Images (E01, DD, AFF4)
|
├─ Forensic Images (E01, DD, AFF4)
|
||||||
├─ Timeline CSV (Timesketch format)
|
├─ Timeline CSV (Timesketch format)
|
||||||
@@ -94,7 +156,7 @@ This manifest allows exact reproduction of the index from the same source data.
|
|||||||
|
|
||||||
### Query Execution Pipeline
|
### Query Execution Pipeline
|
||||||
|
|
||||||
```
|
```bash
|
||||||
Natural Language Query
|
Natural Language Query
|
||||||
"bitcoin transaction after drug deal"
|
"bitcoin transaction after drug deal"
|
||||||
│
|
│
|
||||||
|
|||||||
29
pyproject.toml
Normal file
29
pyproject.toml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
[project]
|
||||||
|
name = "gamayun"
|
||||||
|
version = "0.0.0"
|
||||||
|
description = "Scalable vector search engine with focus on post-mortem forensics"
|
||||||
|
authors = [
|
||||||
|
{name = "Mario Stöckl", email = "mstoeck3@hs-mittweida.de"}
|
||||||
|
]
|
||||||
|
readme = "README.md"
|
||||||
|
requires-python = "~=3.13"
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
"PySide6~=6.8.0",
|
||||||
|
"qdrant_client~=1.16.1",
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.optional-dependencies]
|
||||||
|
dev = [
|
||||||
|
"pytest",
|
||||||
|
]
|
||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["hatchling"]
|
||||||
|
build-backend = "hatchling.build"
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.wheel]
|
||||||
|
packages = ["src/gamayun"]
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
gamayun-cli = "gamayun.main:main"
|
||||||
75
requirements.txt
Normal file
75
requirements.txt
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# This file was autogenerated by uv via the following command:
|
||||||
|
# uv pip compile pyproject.toml --extra dev -o requirements.txt
|
||||||
|
annotated-types==0.7.0
|
||||||
|
# via pydantic
|
||||||
|
anyio==4.11.0
|
||||||
|
# via httpx
|
||||||
|
certifi==2025.11.12
|
||||||
|
# via
|
||||||
|
# httpcore
|
||||||
|
# httpx
|
||||||
|
grpcio==1.76.0
|
||||||
|
# via qdrant-client
|
||||||
|
h11==0.16.0
|
||||||
|
# via httpcore
|
||||||
|
h2==4.3.0
|
||||||
|
# via httpx
|
||||||
|
hpack==4.1.0
|
||||||
|
# via h2
|
||||||
|
httpcore==1.0.9
|
||||||
|
# via httpx
|
||||||
|
httpx==0.28.1
|
||||||
|
# via qdrant-client
|
||||||
|
hyperframe==6.1.0
|
||||||
|
# via h2
|
||||||
|
idna==3.11
|
||||||
|
# via
|
||||||
|
# anyio
|
||||||
|
# httpx
|
||||||
|
iniconfig==2.3.0
|
||||||
|
# via pytest
|
||||||
|
numpy==2.3.5
|
||||||
|
# via qdrant-client
|
||||||
|
packaging==25.0
|
||||||
|
# via pytest
|
||||||
|
pluggy==1.6.0
|
||||||
|
# via pytest
|
||||||
|
portalocker==3.2.0
|
||||||
|
# via qdrant-client
|
||||||
|
protobuf==6.33.1
|
||||||
|
# via qdrant-client
|
||||||
|
pydantic==2.12.4
|
||||||
|
# via qdrant-client
|
||||||
|
pydantic-core==2.41.5
|
||||||
|
# via pydantic
|
||||||
|
pygments==2.19.2
|
||||||
|
# via pytest
|
||||||
|
pyside6==6.8.3
|
||||||
|
# via gamayun (pyproject.toml)
|
||||||
|
pyside6-addons==6.8.3
|
||||||
|
# via pyside6
|
||||||
|
pyside6-essentials==6.8.3
|
||||||
|
# via
|
||||||
|
# pyside6
|
||||||
|
# pyside6-addons
|
||||||
|
pytest==9.0.1
|
||||||
|
# via gamayun (pyproject.toml)
|
||||||
|
qdrant-client==1.16.1
|
||||||
|
# via gamayun (pyproject.toml)
|
||||||
|
shiboken6==6.8.3
|
||||||
|
# via
|
||||||
|
# pyside6
|
||||||
|
# pyside6-addons
|
||||||
|
# pyside6-essentials
|
||||||
|
sniffio==1.3.1
|
||||||
|
# via anyio
|
||||||
|
typing-extensions==4.15.0
|
||||||
|
# via
|
||||||
|
# grpcio
|
||||||
|
# pydantic
|
||||||
|
# pydantic-core
|
||||||
|
# typing-inspection
|
||||||
|
typing-inspection==0.4.2
|
||||||
|
# via pydantic
|
||||||
|
urllib3==2.5.0
|
||||||
|
# via qdrant-client
|
||||||
|
Before Width: | Height: | Size: 5.6 MiB After Width: | Height: | Size: 5.6 MiB |
0
src/gamayun/__init__.py
Normal file
0
src/gamayun/__init__.py
Normal file
0
src/gamayun/main.py
Normal file
0
src/gamayun/main.py
Normal file
Reference in New Issue
Block a user