Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
cfa9488
add the workspace API
locnguyen1986 Oct 2, 2025
aadb027
remove unused API
locnguyen1986 Oct 2, 2025
e76b234
remove unused code
locnguyen1986 Oct 2, 2025
73f4e27
add workspace max length
locnguyen1986 Oct 2, 2025
ff3a15e
fix typo
locnguyen1986 Oct 2, 2025
72c3f0f
PR feedbacks
locnguyen1986 Oct 2, 2025
b563285
PR feedbacks
locnguyen1986 Oct 2, 2025
fe7fec5
allow to query all conversation without workspace
locnguyen1986 Oct 3, 2025
c7a19a2
update patch with workspace
locnguyen1986 Oct 3, 2025
910413e
adjust update method, use save with nil zero allowance
locnguyen1986 Oct 3, 2025
ced010c
Merge pull request #208 from menloresearch/feat/203/workspace-instruc…
locnguyen1986 Oct 3, 2025
f05b5fa
add domain setup
locnguyen1986 Oct 7, 2025
ca3ae60
add new chat completion
locnguyen1986 Oct 7, 2025
af1072b
remove janinference
locnguyen1986 Oct 7, 2025
c1577eb
remove inference model registry, use chat_model_client
locnguyen1986 Oct 7, 2025
faf5820
remove auth from completion, remove cron service check
locnguyen1986 Oct 7, 2025
9b44a78
remove inference provider, fix conversation route
locnguyen1986 Oct 7, 2025
7dcde17
add provider model steps
locnguyen1986 Oct 8, 2025
07e914b
update wire gen
locnguyen1986 Oct 8, 2025
165340b
add project provider
locnguyen1986 Oct 8, 2025
010952b
add patch model providers
locnguyen1986 Oct 8, 2025
a24029c
add sync models
locnguyen1986 Oct 8, 2025
48e4a6d
split context of service
locnguyen1986 Oct 8, 2025
30e818c
clean unused methods
locnguyen1986 Oct 8, 2025
ab07358
remove unused caching values
locnguyen1986 Oct 8, 2025
86a955c
Merge pull request #210 from menloresearch/feat/164/provider-model-ca…
locnguyen1986 Oct 9, 2025
ddf3a79
v0.2.0 - Complete Architectural Overhaul & Microservices Migration (#…
locnguyen1986 Nov 10, 2025
3cbcd58
V2 improvement (#225)
locnguyen1986 Nov 10, 2025
5eeba4d
V2 improvement (#226)
locnguyen1986 Nov 10, 2025
b51b8e7
V2 project update (#228)
locnguyen1986 Nov 11, 2025
4edf1f8
V2 swagger api syncs (#229)
locnguyen1986 Nov 11, 2025
890ff4e
chore: add CICD (#230)
hiento09 Nov 12, 2025
8fd9ad7
chore: fix ci trigger (#231)
hiento09 Nov 12, 2025
9888e4b
chore: add ci for vector store (#232)
hiento09 Nov 12, 2025
b879e52
V2 migration UI (#233)
locnguyen1986 Nov 12, 2025
a5ff959
V2 migration set cookie fix (#234)
locnguyen1986 Nov 12, 2025
7d84596
V2 migration set cookie fix (#235)
locnguyen1986 Nov 12, 2025
6fb5962
V2 migration set cookie fix (#236)
locnguyen1986 Nov 12, 2025
806bc7d
Feat/auth migration (#237)
locnguyen1986 Nov 13, 2025
bf3cea7
Feat/auth migration (#238)
locnguyen1986 Nov 13, 2025
ef374f0
Feat/auth migration (#239)
locnguyen1986 Nov 13, 2025
7f99adb
Feat/auth migration (#240)
locnguyen1986 Nov 13, 2025
1da8ddc
Feat/auth migration (#241)
locnguyen1986 Nov 13, 2025
a34136e
add more logging in keycloak auth (#242)
locnguyen1986 Nov 14, 2025
f0378b7
Feat/v2 monitoring (#243)
locnguyen1986 Nov 14, 2025
30bfa69
Feat/v2 config refactor (#244)
locnguyen1986 Nov 16, 2025
2d269cf
fix typo (#245)
locnguyen1986 Nov 16, 2025
020252f
Feat/v2 fix typo (#246)
locnguyen1986 Nov 17, 2025
cb66844
Feat/v2 config response (#247)
locnguyen1986 Nov 17, 2025
b18814a
Feat/error handling (#248)
locnguyen1986 Nov 17, 2025
5d12b58
chore: add prod ci (#249)
hiento09 Nov 18, 2025
e8f8879
Rework on monitoring (#250)
locnguyen1986 Nov 18, 2025
23ccce5
chore: fix ci prod trigger (#251)
hiento09 Nov 18, 2025
d11cd30
fix auth and user context (#252)
locnguyen1986 Nov 19, 2025
482d055
Remove unused tasks in Github workflows (#253)
locnguyen1986 Nov 19, 2025
a4e0f76
Merge release into main (#254)
locnguyen1986 Nov 20, 2025
957b44c
fix auth and api key access (#255)
locnguyen1986 Nov 20, 2025
248b339
Feat/memory tools (#257)
locnguyen1986 Nov 23, 2025
7e657bb
fix security alert on Githubs (#258)
locnguyen1986 Nov 24, 2025
90a958a
Feat/security fix (#259)
locnguyen1986 Nov 24, 2025
1353f88
Fix 'no rule to make target monitor-dev' error in quickstart (#261)
Copilot Nov 25, 2025
5caf3a4
Feat/memory revisit (#264)
locnguyen1986 Nov 25, 2025
e9c4d04
Feat/project instruction (#265)
locnguyen1986 Nov 25, 2025
4f877cc
Feat/automation test improvement (#266)
locnguyen1986 Nov 27, 2025
4aabba9
improve prompt orchestration (#268)
locnguyen1986 Nov 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
248 changes: 248 additions & 0 deletions .env.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,248 @@
# ============================================================================
# Jan Server Environment Configuration Template
# ============================================================================
# Copy this file to .env and customize for your environment
#
# Quick Start:
# make env-create # Creates .env from this template
# make env-switch ENV=hybrid # Switch to hybrid development mode
#
# Available Environments:
# - development (all services in Docker) - config/development.env
# - hybrid (native services + Docker) - config/hybrid.env
# - testing (integration testing) - config/testing.env
# - production (production deployment) - config/production.env.example
#
# Documentation: See config/README.md for detailed environment guide
# ============================================================================

# ============================================================================
# Docker Compose Configuration
# ============================================================================
# Profile selection for docker-compose services
# Profiles are comma-separated and control which services start:
# infra - Infrastructure (PostgreSQL, Keycloak, Kong) - always needed
# api - API services (llm-api, media-api, response-api) - always needed
# mcp - MCP Tools and Vector Store - always included
# full - Includes vLLM GPU inference (for local GPU provider)
#
# Examples:
# COMPOSE_PROFILES=infra,api,mcp,full - Local vLLM (full setup with GPU)
# COMPOSE_PROFILES=infra,api,mcp - Remote API provider (no vLLM)
COMPOSE_PROFILES=infra,api,mcp,full

# ============================================================================
# REQUIRED: Secrets & API Keys
# ============================================================================
# You MUST set these values before running the services

# HuggingFace API token (required for model downloads). The local vLLM provider needs this token.
# If you plan to use a remote provider instead, comment this out and edit
# services/llm-api/config/providers.yml to point at the provider you want.
# Get from: https://huggingface.co/settings/tokens
HF_TOKEN=your_huggingface_token_here

# Serper API key (required for MCP google_search tool)
# Get from: https://serper.dev
SERPER_API_KEY=your_serper_api_key_here

# Security secrets (CHANGE THESE in production!)
POSTGRES_PASSWORD=jan_password
KEYCLOAK_ADMIN_PASSWORD=admin
BACKEND_CLIENT_SECRET=backend-secret
MODEL_PROVIDER_SECRET=jan-model-provider-secret-2024
VLLM_INTERNAL_KEY=changeme

# ============================================================================
# PostgreSQL Database
# ============================================================================
POSTGRES_USER=jan_user
POSTGRES_DB=jan_llm_api
POSTGRES_PORT=5432
KEYCLOAK_DB_PORT=5433

# Database connection (varies by environment)
# Development: postgres://jan_user:password@api-db:5432/jan_llm_api
# Hybrid: postgres://jan_user:password@localhost:5432/jan_llm_api
DB_DSN=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@api-db:5432/${POSTGRES_DB}?sslmode=disable
DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@api-db:5432/${POSTGRES_DB}?sslmode=disable

# ============================================================================
# LLM API Service
# ============================================================================
HTTP_PORT=8080
LOG_LEVEL=info
LOG_FORMAT=json
AUTO_MIGRATE=true

# ============================================================================
# Authentication (Keycloak)
# ============================================================================
# Note: JWKS_URL uses internal Docker hostname, ISSUER uses localhost for external clients
KEYCLOAK_ADMIN=admin
KEYCLOAK_HTTP_PORT=8085
KEYCLOAK_REALM=jan

# OAuth/OIDC Configuration (varies by environment)
# Development (inside Docker): http://keycloak:8085
# External/Hybrid: set KEYCLOAK_PUBLIC_HOST to your host (e.g., localhost or LAN IP) and KEYCLOAK_PUBLIC_PORT to the exposed port.
KEYCLOAK_BASE_URL=http://keycloak:8085
KEYCLOAK_PUBLIC_HOST=localhost
KEYCLOAK_PUBLIC_PORT=${KEYCLOAK_HTTP_PORT:-8085}
KEYCLOAK_PUBLIC_URL=http://${KEYCLOAK_PUBLIC_HOST}:${KEYCLOAK_PUBLIC_PORT}
KEYCLOAK_ADMIN_URL=http://${KEYCLOAK_PUBLIC_HOST}:${KEYCLOAK_PUBLIC_PORT}
JWKS_URL=http://keycloak:8085/realms/jan/protocol/openid-connect/certs
ISSUER=${KEYCLOAK_PUBLIC_URL}/realms/${KEYCLOAK_REALM}
AUDIENCE=account
REFRESH_JWKS_INTERVAL=5m

# OAuth2 redirect URI (must match Keycloak client configuration)
# This is where Keycloak redirects after authentication
OAUTH_REDIRECT_URI=http://localhost:8000/auth/callback

# Guest provisioning
BACKEND_CLIENT_ID=backend
TARGET_CLIENT_ID=jan-client
GUEST_ROLE=guest

# ============================================================================
# API Gateway (Kong)
# ============================================================================
KONG_HTTP_PORT=8000

# ============================================================================
# Inference (vLLM)
# ============================================================================
VLLM_PORT=8101
VLLM_MODEL=Qwen/Qwen2.5-0.5B-Instruct
VLLM_SERVED_NAME=qwen2.5-0.5b-instruct
VLLM_GPU_UTIL=0.66
VLLM_TOOL_SUPPORT=false
# Model provider configuration
JAN_PROVIDER_CONFIGS=true
JAN_PROVIDER_CONFIGS_FILE=config/providers.yml
JAN_PROVIDER_CONFIG_SET=default
PROMPT_ORCHESTRATION_ENABLED=true
PROMPT_ORCHESTRATION_TEMPLATES=true
# Legacy fallback (single provider) - leave disabled unless needed
# JAN_DEFAULT_NODE_SETUP=true
# JAN_DEFAULT_NODE_URL=http://vllm-jan-gpu:8001/v1
# JAN_DEFAULT_NODE_API_KEY=${VLLM_INTERNAL_KEY}

# ============================================================================
# MCP Tools Service
# ============================================================================
MCP_TOOLS_HTTP_PORT=8091

# Search engine configuration
SEARCH_ENGINE=serper # Options: serper, searxng
SERPER_DOMAIN_FILTER= # Optional: domain filter for search results
SERPER_LOCATION_HINT= # Optional: location hint for search
SERPER_OFFLINE_MODE=false # Set true for offline testing

# MCP Provider URLs (vary by environment)
# Development: http://searxng:8080
# Hybrid: http://localhost:8086
SEARXNG_PORT=8086
SEARXNG_URL=http://searxng:8080
VECTOR_STORE_PORT=3015
VECTOR_STORE_URL=http://vector-store:3015
SANDBOXFUSION_PORT=3010
SANDBOXFUSION_URL=http://sandboxfusion:3010
SANDBOX_FUSION_REQUIRE_APPROVAL=true
MCP_ENABLE_PYTHON_EXEC=true
MCP_ENABLE_MEMORY_RETRIEVE=true

# Browser automation & code execution
CODE_SANDBOX_ENABLED=true
CODE_SANDBOX_URL=http://code-sandbox-mcp:3000/mcp
PLAYWRIGHT_ENABLED=true
PLAYWRIGHT_URL=http://playwright-mcp:3000

# MCP debugging
MCP_PROVIDER_DEBUG=false

# ============================================================================
# Observability (OpenTelemetry, Prometheus, Jaeger, Grafana)
# ============================================================================
OTEL_ENABLED=false # Enable telemetry collection
OTEL_SERVICE_NAME=llm-api
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318
OTEL_HTTP_PORT=4318
OTEL_GRPC_PORT=4317

# Monitoring stack ports
PROMETHEUS_PORT=9090
JAEGER_UI_PORT=16686
GRAFANA_PORT=3001
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=admin

# ============================================================================
# Media API Configuration
# ============================================================================
MEDIA_API_ENABLED=true
MEDIA_API_PORT=8285
MEDIA_SERVICE_KEY=changeme-media-key
MEDIA_API_KEY=changeme-media-key

# Storage backend selection: "s3" or "local"
MEDIA_STORAGE_BACKEND=local

# Local Storage Configuration (used when MEDIA_STORAGE_BACKEND=local)
MEDIA_LOCAL_STORAGE_PATH=./media-data
MEDIA_LOCAL_STORAGE_BASE_URL=http://localhost:8285/v1/files

# S3 Storage Configuration (used when MEDIA_STORAGE_BACKEND=s3)
# MEDIA_S3_ENDPOINT=https://s3.menlo.ai
# MEDIA_S3_PUBLIC_ENDPOINT=
# MEDIA_S3_REGION=us-west-2
# MEDIA_S3_BUCKET=platform-dev
# MEDIA_S3_ACCESS_KEY_ID=7N33WPTUI1KN99MFILQS
# MEDIA_S3_SECRET_ACCESS_KEY=ppxQsHpnfDSewYZD065aGjQeEQ0nTFA7c2aHNPz5
# MEDIA_S3_USE_PATH_STYLE=true
# MEDIA_S3_PRESIGN_TTL=5m

# Media service URLs
MEDIA_API_URL=http://media-api:8285
MEDIA_RESOLVE_URL=http://media-api:8285/v1/media/resolve
MEDIA_RESOLVE_TIMEOUT=5s

# Media processing settings
MEDIA_MAX_BYTES=20971520
MEDIA_PROXY_DOWNLOAD=true
MEDIA_RETENTION_DAYS=30
MEDIA_REMOTE_FETCH_TIMEOUT=15s

# ============================================================================
# Template API (copy when running the scaffold locally)
# ============================================================================
# TEMPLATE_DATABASE_URL=postgres://postgres:postgres@localhost:5432/template_api?sslmode=disable
# SERVICE_NAME=template-api
# ENVIRONMENT=development
# HTTP_PORT=8185
# LOG_LEVEL=info
# ENABLE_TRACING=false
# OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
# SHUTDOWN_TIMEOUT=10s
# DB_MAX_IDLE_CONNS=5
# DB_MAX_OPEN_CONNS=15
# DB_CONN_MAX_LIFETIME=30m
# AUTH_ENABLED=false
# AUTH_ISSUER=http://localhost:8080/realms/jan
# AUTH_AUDIENCE=account
# AUTH_JWKS_URL=http://localhost:8080/realms/jan/protocol/openid-connect/certs

# ============================================================================
# Environment-Specific Overrides
# ============================================================================
# The above values work for Docker development (all services in containers)
#
# For other environments, use:
# make env-switch ENV=hybrid # Run services natively
# make env-switch ENV=testing # Integration testing
#
# Or manually copy from config/<environment>.env to .env
#
# See config/README.md for detailed environment configuration guide
# ============================================================================
24 changes: 0 additions & 24 deletions .github/ISSUE_TEMPLATE/1-bug-report.md

This file was deleted.

12 changes: 0 additions & 12 deletions .github/ISSUE_TEMPLATE/2-feature-request.md

This file was deleted.

27 changes: 0 additions & 27 deletions .github/ISSUE_TEMPLATE/3-epic.md

This file was deleted.

24 changes: 0 additions & 24 deletions .github/ISSUE_TEMPLATE/4-goal.md

This file was deleted.

5 changes: 0 additions & 5 deletions .github/ISSUE_TEMPLATE/config.yml

This file was deleted.

42 changes: 0 additions & 42 deletions .github/pull_request_template.md

This file was deleted.

Loading
Loading