Skip to content

Commit 9099142

Browse files
chrisarsenoclaude
andcommitted
Community edition — free tier features
Synced from private repo. Enterprise/Pro features available at gozerai.com. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0 parents  commit 9099142

169 files changed

Lines changed: 27428 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Vinzy-Engine Configuration
2+
# Copy this file to .env and fill in your values
3+
4+
# Environment
5+
VINZY_ENVIRONMENT=development
6+
7+
# Security Keys (CHANGE THESE IN PRODUCTION)
8+
VINZY_SECRET_KEY=change-me-to-a-random-secret
9+
VINZY_HMAC_KEY=change-me-to-a-random-hmac-key
10+
VINZY_API_KEY=change-me-to-a-random-api-key
11+
VINZY_SUPER_ADMIN_KEY=change-me-to-a-random-super-admin-key
12+
13+
# HMAC Keyring (JSON dict for key rotation)
14+
# VINZY_HMAC_KEYS={"0": "primary-key", "1": "rotated-key"}
15+
16+
# Database
17+
VINZY_DB_URL=sqlite+aiosqlite:///./data/vinzy.db
18+
19+
# Server
20+
VINZY_HOST=0.0.0.0
21+
VINZY_PORT=8080
22+
VINZY_API_PREFIX=
23+
24+
# CORS
25+
# VINZY_CORS_ORIGINS=["http://localhost:3000","http://localhost:8000"]
26+
27+
# Licensing Defaults
28+
VINZY_DEFAULT_MACHINES_LIMIT=3
29+
VINZY_DEFAULT_LICENSE_DAYS=365
30+
VINZY_HEARTBEAT_INTERVAL=3600
31+
32+
# Lease Settings
33+
VINZY_LEASE_TTL=86400
34+
VINZY_LEASE_OFFLINE_TTL=259200
35+
36+
# Pagination
37+
VINZY_DEFAULT_PAGE_SIZE=20
38+
VINZY_MAX_PAGE_SIZE=100
39+
40+
# ── Zuultimate Integration ──
41+
VINZY_ZUULTIMATE_BASE_URL=http://zuultimate:8000
42+
VINZY_ZUULTIMATE_SERVICE_TOKEN=change-me-to-a-random-service-token
43+
44+
# ── Product Callbacks (notify products after provisioning completes) ──
45+
# JSON map: product code → webhook URL
46+
# VINZY_PRODUCT_CALLBACKS={"ARC": "http://arclane:8012/api/billing/provision-complete"}
47+
VINZY_PRODUCT_CALLBACKS=
48+
VINZY_PRODUCT_CALLBACK_TOKEN=
49+
50+
# ── Stripe ──
51+
# VINZY_STRIPE_SECRET_KEY=sk_live_...
52+
# VINZY_STRIPE_WEBHOOK_SECRET=whsec_...
53+
# VINZY_STRIPE_PRICE_MAP={"arclane_pro_monthly": "price_...", "arclane_enterprise_monthly": "price_..."}
54+
55+
# ── Email (for license delivery) ──
56+
# VINZY_EMAIL_PROVIDER=resend
57+
# VINZY_EMAIL_API_KEY=re_...

.github/workflows/ci.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
matrix:
14+
python-version: ["3.11", "3.12"]
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- name: Set up Python ${{ matrix.python-version }}
20+
uses: actions/setup-python@v5
21+
with:
22+
python-version: ${{ matrix.python-version }}
23+
24+
- name: Install dependencies
25+
run: |
26+
python -m pip install --upgrade pip
27+
pip install -e ".[dev]"
28+
29+
- name: Run tests
30+
run: pytest tests/ -v --tb=short --cov --cov-report=term-missing
31+
32+
- name: Verify migrations
33+
run: |
34+
PYTHONPATH=src alembic -x sqlalchemy.url=sqlite:///tmp_ci.db upgrade head

.github/workflows/security.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: Security
2+
3+
on:
4+
push:
5+
branches: [master, main]
6+
pull_request:
7+
branches: [master, main]
8+
schedule:
9+
- cron: '0 9 * * 1' # Weekly Monday 9am UTC
10+
11+
jobs:
12+
dependency-scan:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- uses: actions/checkout@v4
16+
- uses: actions/setup-python@v5
17+
with:
18+
python-version: "3.13"
19+
- name: Install dependencies
20+
run: |
21+
pip install pip-audit safety
22+
pip install -e ".[dev]" 2>/dev/null || pip install -e "." 2>/dev/null || true
23+
- name: Pip audit
24+
run: pip-audit --strict --desc || true
25+
continue-on-error: true
26+
- name: Safety check
27+
run: safety check || true
28+
continue-on-error: true
29+
30+
code-scan:
31+
runs-on: ubuntu-latest
32+
steps:
33+
- uses: actions/checkout@v4
34+
- uses: actions/setup-python@v5
35+
with:
36+
python-version: "3.13"
37+
- name: Install bandit
38+
run: pip install bandit
39+
- name: Run bandit
40+
run: bandit -r src/ -ll -ii || bandit -r . -ll -ii --exclude ./tests,./venv,./.venv || true

.gitignore

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*.class
5+
*.so
6+
*.egg-info/
7+
*.egg
8+
dist/
9+
build/
10+
.eggs/
11+
12+
# Virtual environments
13+
.venv/
14+
venv/
15+
env/
16+
ENV/
17+
18+
# IDE / Editors
19+
.idea/
20+
.vscode/
21+
*.swp
22+
*.swo
23+
*~
24+
.project
25+
.settings/
26+
27+
# Testing / Coverage
28+
.pytest_cache/
29+
.coverage
30+
htmlcov/
31+
coverage.xml
32+
*.cover
33+
.hypothesis/
34+
.mypy_cache/
35+
.ruff_cache/
36+
37+
# Environment / Secrets
38+
.env
39+
.env.*
40+
!.env.example
41+
42+
# Runtime data
43+
data/
44+
logs/
45+
*.log
46+
*.db
47+
*.sqlite
48+
*.sqlite3
49+
50+
# OS files
51+
.DS_Store
52+
Thumbs.db
53+
Desktop.ini
54+
55+
# Distribution
56+
*.tar.gz
57+
*.whl
58+
59+
# Temporary files
60+
tmp/
61+
temp/
62+
*.tmp

.mailmap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Chris Arsenault <info@gozerai.com>

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [0.1.0] - 2026-02-22
9+
10+
### Added
11+
12+
- Initial public release
13+
- HMAC-signed cryptographic key generation and validation
14+
- License lifecycle management (create, activate, deactivate, expire)
15+
- Agent entitlement system with per-agent feature resolution
16+
- Cross-product license composition (sum/max/union strategies)
17+
- Delegation-aware usage metering
18+
- Behavioral anomaly detection (z-score analysis)
19+
- Cryptographic audit trail with hash chain verification
20+
- Signed leases for offline validation
21+
- Multi-tenant support with scoped queries
22+
- Admin dashboard and CLI tools
23+
- RESTful API with FastAPI

COMMERCIAL-LICENSE.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Commercial License
2+
3+
## Dual Licensing
4+
5+
This project is available under two licenses:
6+
7+
1. **GNU Affero General Public License v3.0 (AGPL-3.0)** — for open-source use
8+
2. **Commercial License** — for proprietary/commercial use
9+
10+
## When You Need a Commercial License
11+
12+
The AGPL-3.0 requires that if you run a modified version of this software as a network service, you must make your complete source code available to users of that service. A commercial license removes this obligation.
13+
14+
**You need a commercial license if you:**
15+
16+
- Use this software in a proprietary SaaS product or internal service
17+
- Want to modify the software without sharing your changes
18+
- Cannot comply with AGPL-3.0 obligations in your organization
19+
- Need commercial support, SLA guarantees, or custom features
20+
21+
**You do NOT need a commercial license if you:**
22+
23+
- Use the software for personal or educational purposes
24+
- Contribute back all modifications under AGPL-3.0
25+
- Run the software internally and comply with AGPL-3.0 terms
26+
27+
## Obtaining a Commercial License
28+
29+
For commercial licensing inquiries, contact:
30+
31+
- Email: licensing@gozerai.com
32+
- GitHub: [@chrisarseno](https://github.com/GozerAI)
33+
34+
## What the Commercial License Includes
35+
36+
- Perpetual license for the purchased version
37+
- Permission to use in proprietary products without source disclosure
38+
- Priority support and bug fixes
39+
- Access to private channels for integration assistance
40+
41+
## Copyright
42+
43+
Copyright (c) 2025-2026 Chris Arsenault / GozerAI. All rights reserved.

CONTRIBUTING.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Contributing to Vinzy-Engine
2+
3+
Thank you for your interest in contributing! This guide will help you get started.
4+
5+
## Getting Started
6+
7+
### Prerequisites
8+
9+
- Python >=3.11
10+
- Git
11+
12+
### Setup
13+
14+
1. **Fork** the repository on GitHub
15+
2. **Clone** your fork:
16+
```bash
17+
git clone https://github.com/YOUR-USERNAME/vinzy-engine.git
18+
cd vinzy-engine
19+
```
20+
3. **Create a virtual environment**:
21+
```bash
22+
python -m venv .venv
23+
source .venv/bin/activate # Linux/macOS
24+
.venv\Scripts\activate # Windows
25+
```
26+
4. **Install dependencies**:
27+
```bash
28+
pip install -e ".[dev]"
29+
```
30+
31+
## Development Workflow
32+
33+
1. Create a feature branch:
34+
```bash
35+
git checkout -b feature/your-feature-name
36+
```
37+
2. Make your changes
38+
3. Run the test suite:
39+
```bash
40+
pytest tests/ -q
41+
```
42+
4. Commit your changes using [Conventional Commits](https://www.conventionalcommits.org/):
43+
```bash
44+
git commit -m "feat: add new feature"
45+
```
46+
5. Push to your fork and open a Pull Request
47+
48+
### Commit Message Format
49+
50+
- `feat:` — New feature
51+
- `fix:` — Bug fix
52+
- `docs:` — Documentation only
53+
- `test:` — Adding or updating tests
54+
- `refactor:` — Code change that neither fixes a bug nor adds a feature
55+
- `chore:` — Maintenance tasks
56+
57+
## Code Style
58+
59+
- Format with [black](https://github.com/psf/black) (line length 100)
60+
- Lint with [ruff](https://github.com/astral-sh/ruff)
61+
62+
## Security
63+
64+
If you discover a security vulnerability, please see [SECURITY.md](SECURITY.md) for responsible disclosure instructions.
65+
66+
## Pull Request Process
67+
68+
1. Ensure all tests pass
69+
2. Update documentation if needed
70+
3. Keep PRs focused — one feature or fix per PR
71+
4. Write a clear description of what changed and why
72+
73+
## Reporting Issues
74+
75+
- Use GitHub Issues to report bugs or request features
76+
- Include steps to reproduce for bug reports
77+
- Check existing issues before opening a new one
78+
79+
## License
80+
81+
By contributing, you agree that your contributions will be licensed under the [AGPL-3.0 License](LICENSE).

0 commit comments

Comments
 (0)