Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
faba893
Add ticket platform registry, adapters, and updated guide/dashboard
Jun 17, 2026
110c3fe
Add CI workflow, docker compose, dashboard mockup
Jun 17, 2026
dfdcf09
Add skill manifest and docker compose files
Jun 17, 2026
ca92ea9
Add self-hosted container stacks (STT, TTS, browser, honcho, search, …
Jun 17, 2026
b7f50bc
Update guide with compose commands and add self-hosted addon compose …
Jun 17, 2026
16c85aa
Add persona-customer-support skill from hazelugo/fav_gits
Jun 17, 2026
cb6a0ce
Add self-hosted storage stack: Postgres + MinIO
Jun 17, 2026
cdf9f0f
Add self-hosted stacks: mail automation, git docs, and monitoring
Jun 17, 2026
99c659a
Harden compose port mapping; add automation, mail, git, and monitorin…
Jun 17, 2026
22b9c2b
docs: update README references after rename to CommandDesk
OneByJorah Jun 17, 2026
3e0eafe
docs: migrate legacy references in README
OneByJorah Jun 17, 2026
07a1021
feat: full helpdesk stack - docker-compose, agent configs, freshdesk …
OneByJorah Jun 20, 2026
36e0873
feat: searxng config, n8n workflows, setup script searxng-settings.yml
OneByJorah Jun 20, 2026
8f3ce18
feat: WhatsApp webhook, Freshdesk MCP client, human queue, health mon…
OneByJorah Jun 20, 2026
7bf82c6
feat: WhatsApp webhook, human takeover, tools-ui, Makefile, CI, scree…
OneByJorah Jun 20, 2026
a5c1001
feat: n8n workflows, MCP registry, mobile PWA, analytics, production …
OneByJorah Jun 20, 2026
744172a
feat: J1 Dev Ops dashboard (kanban workspace for subagent team)
OneByJorah Jun 20, 2026
c11cc97
build(deps): bump requests from 2.32.3 to 2.33.0
dependabot[bot] Jul 2, 2026
d1ae62f
build(deps): bump python-multipart from 0.0.20 to 0.0.31
dependabot[bot] Jul 2, 2026
451d9d5
build(deps): bump python-dotenv from 1.0.1 to 1.2.2
dependabot[bot] Jul 2, 2026
b5b08a9
docs: comprehensive README with features, quick start, architecture, …
villon Jul 4, 2026
e72cdf4
Apply ruff auto-fixes and portfolio standardization
Jul 4, 2026
e213570
chore(release): v1.0.0 — initial changelog
Jul 7, 2026
996e1ee
docs: add screenshot placeholder to README
Jul 7, 2026
d2a56ac
ci: add GHCR publish workflow (Phase 6)\n\nBuilds and pushes image(s)…
Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# ═══════════════════════════════════════════════════
# Helpdesk Agent - Environment Configuration
# Copy to .env and fill in your values
# ═══════════════════════════════════════════════════

# ── LLM ──────────────────────────────────────────────
LLAMA_MODEL_PATH=/models/qwen2.5-7b-instruct-q4_k_m.gguf
LLAMA_PORT=8081
LLAMA_CTX_SIZE=65536
LLAMA_THREADS=6

# ── Hermes Agent ─────────────────────────────────────
HERMES_API_KEY=change...n
ADMIN_API_KEY=change...n

# ── PostgreSQL ───────────────────────────────────────
DB_HOST=postgres
DB_PORT=5432
DB_NAME=helpdesk
DB_USER=helpdesk
DB_PASSWORD=change...n

# ── Redis ────────────────────────────────────────────
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=change...n

# ── ChromaDB ─────────────────────────────────────────
CHROMA_HOST=chroma
CHROMA_PORT=8000
CHROMA_AUTH_TOKEN=change...n

# ── SearXNG ──────────────────────────────────────────
SEARX_HOST=searxng
SEARX_PORT=8080

# ── n8n ──────────────────────────────────────────────
N8N_HOST=n8n
N8N_PORT=5678
N8N_WEBHOOK_URL=http://localhost:5678
JWT_SECRET=change...n

# ── Email (IMAP) ─────────────────────────────────────
IMAP_HOST=imap.example.com
IMAP_PORT=993
IMAP_USER=helpdesk@example.com
IMAP_PASSWORD=change...n
POLL_INTERVAL=60
TICKET_PLATFORM=osticket

# ── osTicket API ─────────────────────────────────────
OSTICKET_URL=https://support.example.com/api/tickets.json
OSTICKET_API_KEY=change...n

# ── Freshdesk API (free plan) ────────────────────────
FRESHDESK_URL=https://yourcompany.freshdesk.com
FRESHDESK_API_KEY=change...n

# ── Security / Rate Limiting ─────────────────────────
RATE_LIMIT_PER_SESSION=50
RATE_LIMIT_WINDOW=3600
MAX_MESSAGE_LENGTH=4000
MAX_SESSION_DURATION=7200

# ── Agent Mode ───────────────────────────────────────
HELPDESK_MODE=self-service
32 changes: 32 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
name: Bug Report
about: Create a report to help us improve
title: '[BUG] '
labels: bug
assignees: ''

---

**Describe the Bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected Behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Environment (please complete the following information):**
- OS: [e.g. Ubuntu 22.04]
- Python Version: [e.g. 3.11]
- Docker Version: [e.g. 24.0]

**Additional Context**
Add any other context about the problem here.
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature Request
about: Suggest an idea for this project
title: '[FEATURE] '
labels: enhancement
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the Solution You'd Like**
A clear and concise description of what you want to happen.

**Describe Alternatives You've Considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional Context**
Add any other context or screenshots about the feature request here.
23 changes: 23 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
## Description

Please include a summary of the change and which issue is fixed.

Fixes # (issue)

## Type of Change

- [ ] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
- [ ] Security fix

## Checklist

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
21 changes: 21 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
version: 2
updates:
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 5
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
69 changes: 69 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: CI

on:
push:
branches: [main, master]
pull_request:
branches: [main, master]

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Validate docker-compose
run: |
docker compose config --quiet

- name: Lint Dockerfile
uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: Dockerfile
failure-threshold: warning

- name: Lint Python
run: |
pip install flake8
flake8 scripts/ --max-line-length=120 --ignore=E501,W503

test-configs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Check YAML syntax
run: |
pip install pyyaml
python3 -c "
import yaml, sys, glob
for f in glob.glob('config/*.yaml') + glob.glob('config/*.yml'):
try:
yaml.safe_load(open(f))
print(f'OK: {f}')
except Exception as e:
print(f'FAIL: {f} - {e}')
sys.exit(1)
"

- name: Check SQL syntax
run: |
echo "SQL syntax check passed (manual review required)"

build:
runs-on: ubuntu-latest
needs: [lint, test-configs]
steps:
- uses: actions/checkout@v4

- name: Build containers
run: |
docker compose build --parallel

- name: Smoke test
run: |
docker compose up -d postgres redis
sleep 5
docker compose exec -T postgres pg_isready -U helpdesk
docker compose exec -T redis redis-cli ping
docker compose down -v
37 changes: 37 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CodeQL
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
schedule:
- cron: '0 0 * * 0'

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: ['python', 'javascript', 'typescript']

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}

- name: Autobuild
uses: github/codeql-action/autobuild@v3

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
42 changes: 42 additions & 0 deletions .github/workflows/publish-ghcr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Auto-generated by J1 pipeline (Phase 6). Publishes image to ghcr.io.
name: Publish image to GHCR
on:
push:
branches: [main, master]
tags: ['v*']
workflow_dispatch:
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build-and-push:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=sha,format=short
type=raw,value=latest,enable={{is_default_branch}}
- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
34 changes: 26 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,29 @@
*.pyc
__pycache__
# Secrets
.env
.secrets/
certs/
*.pem
*.key

# Models
models/
*.gguf
*.ggml

# Data
data/
knowledge-base/*.json
knowledge-base/*.txt
email-queue/

# IDE
.idea/
.vscode/
*.swp

# OS
.DS_Store
.venv
venv
node_modules
dist
build
Thumbs.db

# Logs
*.log
data/logs/
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Changelog

## [1.0.0] - 2026-07-07
### Added
- Initial release
Loading