diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
index 069bf330d..44b8335c8 100644
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -48,6 +48,7 @@ jobs:
pkg-config
npm install -g markdownlint-cli
pip install --user yamllint codespell
+ go install github.com/apache/skywalking-eyes/cmd/license-eye@latest
- name: Cache Rust dependencies
uses: actions/cache@v4
@@ -94,6 +95,9 @@ jobs:
- name: Run Code Spell Check
run: make codespell
+ - name: Run License Header Check
+ run: make license-check
+
- name: Run pre-commit check
run: make precommit-check
diff --git a/.licenserc.yaml b/.licenserc.yaml
new file mode 100644
index 000000000..d06053de6
--- /dev/null
+++ b/.licenserc.yaml
@@ -0,0 +1,62 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+header:
+ license:
+ spdx-id: Apache-2.0
+ copyright-owner: vLLM Semantic Router Authors
+ content: |
+ Copyright 2025 The vLLM Semantic Router Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ paths-ignore:
+ - website
+ - bin
+ - models
+ - '.github'
+ - '.bin'
+ - '**/go.mod'
+ - '**/go.sum'
+ - '**/*.md'
+ - '**/*.json'
+ - '**/*.txt'
+ - '**/*.hcl'
+ - '**/.gitignore'
+ - '**/.helmignore'
+ - .trivyignore
+ - '.codespell.*'
+ - .editorconfig
+ - .golangci.yml
+ - .testcoverage.yml
+ - '.yamllint*'
+ - LICENSE
+ - CODEOWNERS
+ - OWNER
+ - Dockerfile
+ - Dockerfile.extproc
+ - Dockerfile.precommit
+ - bench/MANIFEST.in
+ - tools/linter/codespell/.codespell.ignorewords
+ - tools/linter/codespell/.codespell.skip
+ - tools/linter/yaml/.yamllint
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 9438abb63..fba51c4ff 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
@@ -94,3 +108,14 @@ repos:
# args: ['--max-line-length=88', '--extend-ignore=E203,W503']
# files: \.py$
# exclude: ^(\.venv/|venv/|env/|__pycache__/|\.git/|site/)
+
+# License header checking
+- repo: local
+ hooks:
+ - id: license-check
+ name: license header check
+ entry: bash -c "make license-check"
+ language: system
+ files: \.(go|rs|py|js|yaml|yml)$
+ exclude: ^(\.venv/|venv/|env/|__pycache__/|\.git/|site/|node_modules/|website/node_modules/|target/|candle-binding/target/)
+ pass_filenames: false
diff --git a/.prowlabels.yaml b/.prowlabels.yaml
index 91a6ec847..24d64b2b3 100644
--- a/.prowlabels.yaml
+++ b/.prowlabels.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
area:
- core
- research
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8280fc6d2..e7b53b9d0 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -311,3 +311,21 @@ pre-commit run --all-files
## License
By contributing to this project, you agree that your contributions will be licensed under the same license as the project (Apache 2.0).
+
+### License Headers
+
+All source code files must include the Apache 2.0 license header. The project uses [license-eye](https://github.com/apache/skywalking-eyes) to automatically manage license headers.
+
+**Check license headers:**
+
+```bash
+make license-check
+```
+
+**Automatically add missing license headers:**
+
+```bash
+make license-fix
+```
+
+The license header check is automatically run as part of the pre-commit hooks and CI pipeline. If you encounter license header issues, simply run `make license-fix` to automatically add the required headers to all applicable files.
diff --git a/Makefile b/Makefile
index 257156d10..5a6640acb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# Semantic Router Root Makefile Define.
# It is refer tools/make/*.mk as the sub-makefiles.
diff --git a/bench/benchmark_comparison.sh b/bench/benchmark_comparison.sh
index 94e2e8626..3077200da 100755
--- a/bench/benchmark_comparison.sh
+++ b/bench/benchmark_comparison.sh
@@ -1,4 +1,18 @@
#!/bin/bash
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# Multi-Dataset Reasoning Benchmark Comparison
#
diff --git a/bench/build_and_test.sh b/bench/build_and_test.sh
index fc27a3aa3..d9f28a18f 100755
--- a/bench/build_and_test.sh
+++ b/bench/build_and_test.sh
@@ -1,4 +1,18 @@
#!/bin/bash
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# Build and test script for vLLM Semantic Router Bench PyPI package
diff --git a/bench/comprehensive_bench.sh b/bench/comprehensive_bench.sh
index 5054d5379..b344878ec 100755
--- a/bench/comprehensive_bench.sh
+++ b/bench/comprehensive_bench.sh
@@ -1,4 +1,18 @@
#!/bin/bash
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# Comprehensive Multi-Dataset Benchmark Script for Research Report
# This script benchmarks all available datasets with reasonable sample sizes
diff --git a/bench/pyproject.toml b/bench/pyproject.toml
index ce79128fd..532029970 100644
--- a/bench/pyproject.toml
+++ b/bench/pyproject.toml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
[build-system]
requires = ["setuptools>=45", "wheel", "setuptools_scm[toml]>=6.2"]
build-backend = "setuptools.build_meta"
diff --git a/bench/router_reason_bench.py b/bench/router_reason_bench.py
index f3567f981..a361effe9 100644
--- a/bench/router_reason_bench.py
+++ b/bench/router_reason_bench.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import argparse
import json
import os
diff --git a/bench/setup.py b/bench/setup.py
index c27e05206..cb2183e36 100644
--- a/bench/setup.py
+++ b/bench/setup.py
@@ -1,4 +1,18 @@
#!/usr/bin/env python3
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""Setup script for vllm-semantic-router-bench package."""
import os
diff --git a/bench/vllm_semantic_router_bench/__init__.py b/bench/vllm_semantic_router_bench/__init__.py
index f982787f7..9bad2f12f 100644
--- a/bench/vllm_semantic_router_bench/__init__.py
+++ b/bench/vllm_semantic_router_bench/__init__.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
vLLM Semantic Router Benchmark Suite
diff --git a/bench/vllm_semantic_router_bench/bench_plot.py b/bench/vllm_semantic_router_bench/bench_plot.py
index fe72d8186..c2e8fc8f4 100644
--- a/bench/vllm_semantic_router_bench/bench_plot.py
+++ b/bench/vllm_semantic_router_bench/bench_plot.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import argparse
import json
from pathlib import Path
diff --git a/bench/vllm_semantic_router_bench/cli.py b/bench/vllm_semantic_router_bench/cli.py
index b8fdab63a..512aa4a3d 100644
--- a/bench/vllm_semantic_router_bench/cli.py
+++ b/bench/vllm_semantic_router_bench/cli.py
@@ -1,4 +1,18 @@
#!/usr/bin/env python3
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
Command Line Interface for Semantic Router Benchmark Suite
"""
diff --git a/bench/vllm_semantic_router_bench/dataset_factory.py b/bench/vllm_semantic_router_bench/dataset_factory.py
index 429faf9e4..e04296199 100644
--- a/bench/vllm_semantic_router_bench/dataset_factory.py
+++ b/bench/vllm_semantic_router_bench/dataset_factory.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
Dataset factory for loading different evaluation datasets.
diff --git a/bench/vllm_semantic_router_bench/dataset_implementations/__init__.py b/bench/vllm_semantic_router_bench/dataset_implementations/__init__.py
index 00804dc7b..f8f614cb4 100644
--- a/bench/vllm_semantic_router_bench/dataset_implementations/__init__.py
+++ b/bench/vllm_semantic_router_bench/dataset_implementations/__init__.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""Dataset implementations for the benchmark."""
from .arc_dataset import ARCChallengeDataset, ARCDataset, ARCEasyDataset
diff --git a/bench/vllm_semantic_router_bench/dataset_implementations/arc_dataset.py b/bench/vllm_semantic_router_bench/dataset_implementations/arc_dataset.py
index b0e9a8c8e..e2cfae2c5 100644
--- a/bench/vllm_semantic_router_bench/dataset_implementations/arc_dataset.py
+++ b/bench/vllm_semantic_router_bench/dataset_implementations/arc_dataset.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
ARC Dataset Implementation
diff --git a/bench/vllm_semantic_router_bench/dataset_implementations/commonsenseqa_dataset.py b/bench/vllm_semantic_router_bench/dataset_implementations/commonsenseqa_dataset.py
index 1735c4ef3..bf459db8d 100644
--- a/bench/vllm_semantic_router_bench/dataset_implementations/commonsenseqa_dataset.py
+++ b/bench/vllm_semantic_router_bench/dataset_implementations/commonsenseqa_dataset.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
CommonsenseQA dataset implementation.
diff --git a/bench/vllm_semantic_router_bench/dataset_implementations/gpqa_dataset.py b/bench/vllm_semantic_router_bench/dataset_implementations/gpqa_dataset.py
index 04abcccad..d06e8dcfb 100644
--- a/bench/vllm_semantic_router_bench/dataset_implementations/gpqa_dataset.py
+++ b/bench/vllm_semantic_router_bench/dataset_implementations/gpqa_dataset.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
GPQA Dataset Implementation
diff --git a/bench/vllm_semantic_router_bench/dataset_implementations/hellaswag_dataset.py b/bench/vllm_semantic_router_bench/dataset_implementations/hellaswag_dataset.py
index 3665dcf2d..938957f0f 100644
--- a/bench/vllm_semantic_router_bench/dataset_implementations/hellaswag_dataset.py
+++ b/bench/vllm_semantic_router_bench/dataset_implementations/hellaswag_dataset.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
HellaSwag dataset implementation.
diff --git a/bench/vllm_semantic_router_bench/dataset_implementations/mmlu_dataset.py b/bench/vllm_semantic_router_bench/dataset_implementations/mmlu_dataset.py
index bf4f64b3b..572cff388 100644
--- a/bench/vllm_semantic_router_bench/dataset_implementations/mmlu_dataset.py
+++ b/bench/vllm_semantic_router_bench/dataset_implementations/mmlu_dataset.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
MMLU-Pro Dataset Implementation
diff --git a/bench/vllm_semantic_router_bench/dataset_implementations/truthfulqa_dataset.py b/bench/vllm_semantic_router_bench/dataset_implementations/truthfulqa_dataset.py
index dfa6e989a..fed472e6a 100644
--- a/bench/vllm_semantic_router_bench/dataset_implementations/truthfulqa_dataset.py
+++ b/bench/vllm_semantic_router_bench/dataset_implementations/truthfulqa_dataset.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
TruthfulQA dataset implementation.
diff --git a/bench/vllm_semantic_router_bench/dataset_interface.py b/bench/vllm_semantic_router_bench/dataset_interface.py
index d4c3c1fea..dda60aa8f 100644
--- a/bench/vllm_semantic_router_bench/dataset_interface.py
+++ b/bench/vllm_semantic_router_bench/dataset_interface.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
Multi-Dataset Evaluation Interface
diff --git a/bench/vllm_semantic_router_bench/router_reason_bench_multi_dataset.py b/bench/vllm_semantic_router_bench/router_reason_bench_multi_dataset.py
index 5a963ff01..8db500a7f 100644
--- a/bench/vllm_semantic_router_bench/router_reason_bench_multi_dataset.py
+++ b/bench/vllm_semantic_router_bench/router_reason_bench_multi_dataset.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
Multi-Dataset Reasoning Benchmark
diff --git a/candle-binding/Cargo.toml b/candle-binding/Cargo.toml
index 9b9364f40..50a5d0567 100644
--- a/candle-binding/Cargo.toml
+++ b/candle-binding/Cargo.toml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
[package]
name = "candle-semantic-router"
version = "0.4.0"
diff --git a/candle-binding/semantic-router.go b/candle-binding/semantic-router.go
index 85c0e1918..d4612cb62 100644
--- a/candle-binding/semantic-router.go
+++ b/candle-binding/semantic-router.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
//go:build !windows && cgo
// +build !windows,cgo
diff --git a/candle-binding/semantic-router_test.go b/candle-binding/semantic-router_test.go
index f911769a2..0c19590f4 100644
--- a/candle-binding/semantic-router_test.go
+++ b/candle-binding/semantic-router_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package candle_binding
import (
diff --git a/candle-binding/src/bert_official.rs b/candle-binding/src/bert_official.rs
index 8cd48d38f..7ea098fc0 100644
--- a/candle-binding/src/bert_official.rs
+++ b/candle-binding/src/bert_official.rs
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
// Official Candle BERT implementation based on Candle examples
// Reference: https://github.com/huggingface/candle/blob/main/candle-examples/examples/bert/main.rs
diff --git a/candle-binding/src/lib.rs b/candle-binding/src/lib.rs
index d778c3fb4..dbcc59d5f 100644
--- a/candle-binding/src/lib.rs
+++ b/candle-binding/src/lib.rs
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
// This file is a binding for the candle-core and candle-transformers libraries.
// It is based on https://github.com/huggingface/candle/tree/main/candle-examples/examples/bert
use std::collections::HashMap;
diff --git a/candle-binding/src/modernbert.rs b/candle-binding/src/modernbert.rs
index 161207179..ad17fdf85 100644
--- a/candle-binding/src/modernbert.rs
+++ b/candle-binding/src/modernbert.rs
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
// ModernBERT binding for classification tasks
// Based on ModernBERT implementation in candle-transformers
diff --git a/candle-binding/src/unified_classifier.rs b/candle-binding/src/unified_classifier.rs
index e2667f262..e23716b2c 100644
--- a/candle-binding/src/unified_classifier.rs
+++ b/candle-binding/src/unified_classifier.rs
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
// Unified Classifier for Batch Inference Support
// This module implements a unified classification system that:
// 1. Uses a single shared ModernBERT encoder for all tasks
diff --git a/config/cache/milvus.yaml b/config/cache/milvus.yaml
index 0838c4e74..e04bca9c0 100644
--- a/config/cache/milvus.yaml
+++ b/config/cache/milvus.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# Milvus Vector Database Configuration for Semantic Cache
# This configuration file contains settings for using Milvus as the semantic cache backend.
# To use this configuration:
diff --git a/config/config.e2e.yaml b/config/config.e2e.yaml
index 6a349122a..8d9954715 100644
--- a/config/config.e2e.yaml
+++ b/config/config.e2e.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
bert_model:
model_id: sentence-transformers/all-MiniLM-L12-v2
threshold: 0.6
diff --git a/config/config.testing.yaml b/config/config.testing.yaml
index 461010eb2..1e9a2779a 100644
--- a/config/config.testing.yaml
+++ b/config/config.testing.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
bert_model:
model_id: sentence-transformers/all-MiniLM-L12-v2
threshold: 0.6
diff --git a/config/config.yaml b/config/config.yaml
index cdb4eb0a1..56d6e9676 100644
--- a/config/config.yaml
+++ b/config/config.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
bert_model:
model_id: sentence-transformers/all-MiniLM-L12-v2
threshold: 0.6
diff --git a/config/envoy-docker.yaml b/config/envoy-docker.yaml
index 2700b49c8..1d97bb380 100644
--- a/config/envoy-docker.yaml
+++ b/config/envoy-docker.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
static_resources:
listeners:
- name: listener_0
diff --git a/config/envoy.yaml b/config/envoy.yaml
index 364190be6..f27d7f028 100644
--- a/config/envoy.yaml
+++ b/config/envoy.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
static_resources:
listeners:
- name: listener_0
diff --git a/config/examples/generic_categories.yaml b/config/examples/generic_categories.yaml
index 04468a4a8..36da16901 100644
--- a/config/examples/generic_categories.yaml
+++ b/config/examples/generic_categories.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# Example: Using generic categories with MMLU-Pro mapping
# This file demonstrates how to declare free-style categories and map them to
# MMLU-Pro categories expected by the classifier model.
diff --git a/config/grafana/dashboards.yaml b/config/grafana/dashboards.yaml
index f34ddeefe..1d9d74ac1 100644
--- a/config/grafana/dashboards.yaml
+++ b/config/grafana/dashboards.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: 1
providers:
- name: LLM Router Dashboards
diff --git a/config/grafana/datasource.yaml b/config/grafana/datasource.yaml
index 8d9f9d8fe..10830dd58 100644
--- a/config/grafana/datasource.yaml
+++ b/config/grafana/datasource.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: 1
datasources:
- name: Prometheus
diff --git a/config/prometheus.yaml b/config/prometheus.yaml
index f9a7ac379..04c77e700 100644
--- a/config/prometheus.yaml
+++ b/config/prometheus.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
global:
scrape_interval: 10s
evaluation_interval: 10s
diff --git a/deploy/kubernetes/config.yaml b/deploy/kubernetes/config.yaml
index 76cc759fa..432d7dfe4 100644
--- a/deploy/kubernetes/config.yaml
+++ b/deploy/kubernetes/config.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
bert_model:
model_id: sentence-transformers/all-MiniLM-L12-v2
threshold: 0.6
diff --git a/deploy/kubernetes/crds/vllm.ai_semanticroutes.yaml b/deploy/kubernetes/crds/vllm.ai_semanticroutes.yaml
index c943e699b..c1a3fd20a 100644
--- a/deploy/kubernetes/crds/vllm.ai_semanticroutes.yaml
+++ b/deploy/kubernetes/crds/vllm.ai_semanticroutes.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
diff --git a/deploy/kubernetes/deployment.yaml b/deploy/kubernetes/deployment.yaml
index 5f92b82db..16368aae6 100644
--- a/deploy/kubernetes/deployment.yaml
+++ b/deploy/kubernetes/deployment.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: apps/v1
kind: Deployment
metadata:
diff --git a/deploy/kubernetes/kustomization.yaml b/deploy/kubernetes/kustomization.yaml
index 8160564b9..fbee4f4d9 100644
--- a/deploy/kubernetes/kustomization.yaml
+++ b/deploy/kubernetes/kustomization.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
diff --git a/deploy/kubernetes/namespace.yaml b/deploy/kubernetes/namespace.yaml
index e77d3fd83..f2e4d0740 100644
--- a/deploy/kubernetes/namespace.yaml
+++ b/deploy/kubernetes/namespace.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: v1
kind: Namespace
metadata:
diff --git a/deploy/kubernetes/pvc.yaml b/deploy/kubernetes/pvc.yaml
index 8dfb17d19..603bdfec2 100644
--- a/deploy/kubernetes/pvc.yaml
+++ b/deploy/kubernetes/pvc.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
diff --git a/deploy/kubernetes/service.yaml b/deploy/kubernetes/service.yaml
index 0ea5ed62e..07ac817aa 100644
--- a/deploy/kubernetes/service.yaml
+++ b/deploy/kubernetes/service.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: v1
kind: Service
metadata:
diff --git a/docker-compose.yml b/docker-compose.yml
index 2f9931e4d..e67b3367a 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
services:
# Semantic Router External Processor Service
diff --git a/e2e-tests/00-client-request-test.py b/e2e-tests/00-client-request-test.py
index 3588df78e..44756b766 100644
--- a/e2e-tests/00-client-request-test.py
+++ b/e2e-tests/00-client-request-test.py
@@ -1,4 +1,18 @@
#!/usr/bin/env python3
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
00-client-request-test.py - Basic client request tests
diff --git a/e2e-tests/01-envoy-extproc-test.py b/e2e-tests/01-envoy-extproc-test.py
index 34e6f4722..d2f688343 100644
--- a/e2e-tests/01-envoy-extproc-test.py
+++ b/e2e-tests/01-envoy-extproc-test.py
@@ -1,4 +1,18 @@
#!/usr/bin/env python3
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
01-envoy-extproc-test.py - Envoy ExtProc interaction tests
diff --git a/e2e-tests/02-router-classification-test.py b/e2e-tests/02-router-classification-test.py
index 040a522c1..f6b8f7c4d 100644
--- a/e2e-tests/02-router-classification-test.py
+++ b/e2e-tests/02-router-classification-test.py
@@ -1,4 +1,18 @@
#!/usr/bin/env python3
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
02-router-classification-test.py - Router classification tests
diff --git a/e2e-tests/04-cache-test.py b/e2e-tests/04-cache-test.py
index ce76e3770..1b9209069 100644
--- a/e2e-tests/04-cache-test.py
+++ b/e2e-tests/04-cache-test.py
@@ -1,4 +1,18 @@
#!/usr/bin/env python3
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
04-cache-test.py - Semantic cache tests
diff --git a/e2e-tests/llm-katan/demo-embed.html b/e2e-tests/llm-katan/demo-embed.html
index b3633fb5f..3edee7d55 100644
--- a/e2e-tests/llm-katan/demo-embed.html
+++ b/e2e-tests/llm-katan/demo-embed.html
@@ -1,3 +1,19 @@
+
+
=61.0", "wheel"]
build-backend = "setuptools.build_meta"
diff --git a/e2e-tests/llm-katan/terminal-demo.html b/e2e-tests/llm-katan/terminal-demo.html
index 562bf51ab..d6edd850a 100644
--- a/e2e-tests/llm-katan/terminal-demo.html
+++ b/e2e-tests/llm-katan/terminal-demo.html
@@ -1,3 +1,19 @@
+
+
diff --git a/e2e-tests/run_all_tests.py b/e2e-tests/run_all_tests.py
index 16fdf686a..62ca78b64 100644
--- a/e2e-tests/run_all_tests.py
+++ b/e2e-tests/run_all_tests.py
@@ -1,4 +1,18 @@
#!/usr/bin/env python3
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
Run all tests in sequence.
diff --git a/e2e-tests/start-llm-katan.sh b/e2e-tests/start-llm-katan.sh
index d69feba48..32f540167 100755
--- a/e2e-tests/start-llm-katan.sh
+++ b/e2e-tests/start-llm-katan.sh
@@ -1,4 +1,18 @@
#!/bin/bash
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# start-llm-katan.sh - Start LLM Katan servers for testing
#
# This script starts LLM Katan servers using real tiny models
diff --git a/e2e-tests/test_base.py b/e2e-tests/test_base.py
index 866239d74..5c184b4d7 100644
--- a/e2e-tests/test_base.py
+++ b/e2e-tests/test_base.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import json
import unittest
from typing import Any, Dict, Optional
diff --git a/examples/semanticroute/complex-filter-chain.yaml b/examples/semanticroute/complex-filter-chain.yaml
index 6eabacfce..56e92f8e4 100644
--- a/examples/semanticroute/complex-filter-chain.yaml
+++ b/examples/semanticroute/complex-filter-chain.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: vllm.ai/v1alpha1
kind: SemanticRoute
metadata:
diff --git a/examples/semanticroute/comprehensive-example.yaml b/examples/semanticroute/comprehensive-example.yaml
index fd5db4d94..792452168 100644
--- a/examples/semanticroute/comprehensive-example.yaml
+++ b/examples/semanticroute/comprehensive-example.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: vllm.ai/v1alpha1
kind: SemanticRoute
metadata:
diff --git a/examples/semanticroute/multiple-routes.yaml b/examples/semanticroute/multiple-routes.yaml
index 011c89013..8ef3e5ccd 100644
--- a/examples/semanticroute/multiple-routes.yaml
+++ b/examples/semanticroute/multiple-routes.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: vllm.ai/v1alpha1
kind: SemanticRoute
metadata:
diff --git a/examples/semanticroute/simple-intent-routing.yaml b/examples/semanticroute/simple-intent-routing.yaml
index 99abd5b06..a21770328 100644
--- a/examples/semanticroute/simple-intent-routing.yaml
+++ b/examples/semanticroute/simple-intent-routing.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: vllm.ai/v1alpha1
kind: SemanticRoute
metadata:
diff --git a/examples/semanticroute/tool-selection-example.yaml b/examples/semanticroute/tool-selection-example.yaml
index 7cd4c2195..eb61b6e57 100644
--- a/examples/semanticroute/tool-selection-example.yaml
+++ b/examples/semanticroute/tool-selection-example.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: vllm.ai/v1alpha1
kind: SemanticRoute
metadata:
diff --git a/examples/semanticroute/weighted-routing.yaml b/examples/semanticroute/weighted-routing.yaml
index 19f381cba..1a16d7edf 100644
--- a/examples/semanticroute/weighted-routing.yaml
+++ b/examples/semanticroute/weighted-routing.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
apiVersion: vllm.ai/v1alpha1
kind: SemanticRoute
metadata:
diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh
index c0b4093a9..06fc014b1 100644
--- a/scripts/entrypoint.sh
+++ b/scripts/entrypoint.sh
@@ -1,4 +1,18 @@
#!/usr/bin/env bash
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
set -euo pipefail
CONFIG_FILE_PATH=${CONFIG_FILE:-/app/config/config.yaml}
diff --git a/src/semantic-router/cmd/main.go b/src/semantic-router/cmd/main.go
index 25dee37b0..397febee8 100644
--- a/src/semantic-router/cmd/main.go
+++ b/src/semantic-router/cmd/main.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package main
import (
diff --git a/src/semantic-router/pkg/api/server.go b/src/semantic-router/pkg/api/server.go
index 6fe8dfd33..2722cf158 100644
--- a/src/semantic-router/pkg/api/server.go
+++ b/src/semantic-router/pkg/api/server.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package api
import (
diff --git a/src/semantic-router/pkg/api/server_test.go b/src/semantic-router/pkg/api/server_test.go
index 4e5c18f1d..33fe27f88 100644
--- a/src/semantic-router/pkg/api/server_test.go
+++ b/src/semantic-router/pkg/api/server_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package api
import (
diff --git a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/doc.go b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/doc.go
index fa6e3ba66..cecdb8e6d 100644
--- a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/doc.go
+++ b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/doc.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
// Package v1alpha1 contains API Schema definitions for the v1alpha1 API group
// +kubebuilder:object:generate=true
// +groupName=vllm.ai
diff --git a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/filter_helpers.go b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/filter_helpers.go
index fef12657d..4e9a5d9e6 100644
--- a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/filter_helpers.go
+++ b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/filter_helpers.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
/*
Copyright 2025 vLLM Semantic Router.
diff --git a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/filter_types.go b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/filter_types.go
index 7394954a6..8ba5af117 100644
--- a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/filter_types.go
+++ b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/filter_types.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
/*
Copyright 2025 vLLM Semantic Router.
diff --git a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/register.go b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/register.go
index 368bfb9a6..893dba4fc 100644
--- a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/register.go
+++ b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/register.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
/*
Copyright 2025 vLLM Semantic Router.
diff --git a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/types.go b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/types.go
index ba4ba0b5d..01da71c88 100644
--- a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/types.go
+++ b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/types.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
/*
Copyright 2025 vLLM Semantic Router.
diff --git a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/zz_generated.deepcopy.go b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/zz_generated.deepcopy.go
index d4aab7df4..09c28b54e 100644
--- a/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/zz_generated.deepcopy.go
+++ b/src/semantic-router/pkg/apis/vllm.ai/v1alpha1/zz_generated.deepcopy.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
//go:build !ignore_autogenerated
/*
diff --git a/src/semantic-router/pkg/cache/cache.go b/src/semantic-router/pkg/cache/cache.go
index f2f3e814d..4f6dfa3b8 100644
--- a/src/semantic-router/pkg/cache/cache.go
+++ b/src/semantic-router/pkg/cache/cache.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package cache
import (
diff --git a/src/semantic-router/pkg/cache/cache_factory.go b/src/semantic-router/pkg/cache/cache_factory.go
index f3343c5ae..1f5fa228d 100644
--- a/src/semantic-router/pkg/cache/cache_factory.go
+++ b/src/semantic-router/pkg/cache/cache_factory.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package cache
import (
diff --git a/src/semantic-router/pkg/cache/cache_interface.go b/src/semantic-router/pkg/cache/cache_interface.go
index f35e165cf..ee107f464 100644
--- a/src/semantic-router/pkg/cache/cache_interface.go
+++ b/src/semantic-router/pkg/cache/cache_interface.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package cache
import "time"
diff --git a/src/semantic-router/pkg/cache/cache_test.go b/src/semantic-router/pkg/cache/cache_test.go
index 8e6104eec..c8cbd664b 100644
--- a/src/semantic-router/pkg/cache/cache_test.go
+++ b/src/semantic-router/pkg/cache/cache_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package cache_test
import (
diff --git a/src/semantic-router/pkg/cache/eviction_policy.go b/src/semantic-router/pkg/cache/eviction_policy.go
index 921f17f62..667c48d13 100644
--- a/src/semantic-router/pkg/cache/eviction_policy.go
+++ b/src/semantic-router/pkg/cache/eviction_policy.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package cache
type EvictionPolicy interface {
diff --git a/src/semantic-router/pkg/cache/eviction_policy_test.go b/src/semantic-router/pkg/cache/eviction_policy_test.go
index 91d5504ab..67d9b01e6 100644
--- a/src/semantic-router/pkg/cache/eviction_policy_test.go
+++ b/src/semantic-router/pkg/cache/eviction_policy_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package cache
import (
diff --git a/src/semantic-router/pkg/cache/inmemory_cache.go b/src/semantic-router/pkg/cache/inmemory_cache.go
index 07595a52f..d17711716 100644
--- a/src/semantic-router/pkg/cache/inmemory_cache.go
+++ b/src/semantic-router/pkg/cache/inmemory_cache.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
//go:build !windows && cgo
// +build !windows,cgo
diff --git a/src/semantic-router/pkg/cache/inmemory_cache_integration_test.go b/src/semantic-router/pkg/cache/inmemory_cache_integration_test.go
index caffe6b92..4fa0f75db 100644
--- a/src/semantic-router/pkg/cache/inmemory_cache_integration_test.go
+++ b/src/semantic-router/pkg/cache/inmemory_cache_integration_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package cache
import (
diff --git a/src/semantic-router/pkg/cache/milvus_cache.go b/src/semantic-router/pkg/cache/milvus_cache.go
index 725f711b9..5e732c81e 100644
--- a/src/semantic-router/pkg/cache/milvus_cache.go
+++ b/src/semantic-router/pkg/cache/milvus_cache.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package cache
import (
diff --git a/src/semantic-router/pkg/config/config.go b/src/semantic-router/pkg/config/config.go
index 188285706..8d4a21e8f 100644
--- a/src/semantic-router/pkg/config/config.go
+++ b/src/semantic-router/pkg/config/config.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package config
import (
diff --git a/src/semantic-router/pkg/config/config_reset_test.go b/src/semantic-router/pkg/config/config_reset_test.go
index 54d1dc49e..68c652c3f 100644
--- a/src/semantic-router/pkg/config/config_reset_test.go
+++ b/src/semantic-router/pkg/config/config_reset_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package config
import "sync"
diff --git a/src/semantic-router/pkg/config/config_test.go b/src/semantic-router/pkg/config/config_test.go
index b40284762..0f6da15c6 100644
--- a/src/semantic-router/pkg/config/config_test.go
+++ b/src/semantic-router/pkg/config/config_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package config_test
import (
diff --git a/src/semantic-router/pkg/config/mmlu_categories_test.go b/src/semantic-router/pkg/config/mmlu_categories_test.go
index fa2685f20..e7663f8d7 100644
--- a/src/semantic-router/pkg/config/mmlu_categories_test.go
+++ b/src/semantic-router/pkg/config/mmlu_categories_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package config_test
import (
diff --git a/src/semantic-router/pkg/config/parse_configfile_test.go b/src/semantic-router/pkg/config/parse_configfile_test.go
index b0b3d6923..36c56d3e1 100644
--- a/src/semantic-router/pkg/config/parse_configfile_test.go
+++ b/src/semantic-router/pkg/config/parse_configfile_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package config_test
import (
diff --git a/src/semantic-router/pkg/config/validation.go b/src/semantic-router/pkg/config/validation.go
index 3a20c4ca9..b3c774cdd 100644
--- a/src/semantic-router/pkg/config/validation.go
+++ b/src/semantic-router/pkg/config/validation.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package config
import (
diff --git a/src/semantic-router/pkg/config/validation_test.go b/src/semantic-router/pkg/config/validation_test.go
index 8fa758e34..44605335a 100644
--- a/src/semantic-router/pkg/config/validation_test.go
+++ b/src/semantic-router/pkg/config/validation_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package config
import (
diff --git a/src/semantic-router/pkg/consts/consts.go b/src/semantic-router/pkg/consts/consts.go
index cf1486bf9..c7a65e727 100644
--- a/src/semantic-router/pkg/consts/consts.go
+++ b/src/semantic-router/pkg/consts/consts.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package consts
// UnknownLabel is a canonical fallback label value used across the codebase
diff --git a/src/semantic-router/pkg/extproc/caching_test.go b/src/semantic-router/pkg/extproc/caching_test.go
index b67831af7..29ee2d7e9 100644
--- a/src/semantic-router/pkg/extproc/caching_test.go
+++ b/src/semantic-router/pkg/extproc/caching_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc_test
import (
diff --git a/src/semantic-router/pkg/extproc/edge_cases_test.go b/src/semantic-router/pkg/extproc/edge_cases_test.go
index f402edacd..5c0977883 100644
--- a/src/semantic-router/pkg/extproc/edge_cases_test.go
+++ b/src/semantic-router/pkg/extproc/edge_cases_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc_test
import (
diff --git a/src/semantic-router/pkg/extproc/endpoint_selection_test.go b/src/semantic-router/pkg/extproc/endpoint_selection_test.go
index f3e74cb8f..dc287169a 100644
--- a/src/semantic-router/pkg/extproc/endpoint_selection_test.go
+++ b/src/semantic-router/pkg/extproc/endpoint_selection_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc_test
import (
diff --git a/src/semantic-router/pkg/extproc/error_metrics_test.go b/src/semantic-router/pkg/extproc/error_metrics_test.go
index b7544804f..6aac5f030 100644
--- a/src/semantic-router/pkg/extproc/error_metrics_test.go
+++ b/src/semantic-router/pkg/extproc/error_metrics_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/extproc_test.go b/src/semantic-router/pkg/extproc/extproc_test.go
index cc4a8d90d..09c0644e9 100644
--- a/src/semantic-router/pkg/extproc/extproc_test.go
+++ b/src/semantic-router/pkg/extproc/extproc_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc_test
import (
diff --git a/src/semantic-router/pkg/extproc/metrics_integration_test.go b/src/semantic-router/pkg/extproc/metrics_integration_test.go
index 964e714b1..1d7767af4 100644
--- a/src/semantic-router/pkg/extproc/metrics_integration_test.go
+++ b/src/semantic-router/pkg/extproc/metrics_integration_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/model_selector.go b/src/semantic-router/pkg/extproc/model_selector.go
index 2f16bbf30..64019f405 100644
--- a/src/semantic-router/pkg/extproc/model_selector.go
+++ b/src/semantic-router/pkg/extproc/model_selector.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/processor.go b/src/semantic-router/pkg/extproc/processor.go
index 9b299ba2b..98275237f 100644
--- a/src/semantic-router/pkg/extproc/processor.go
+++ b/src/semantic-router/pkg/extproc/processor.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/reason_mode_config_test.go b/src/semantic-router/pkg/extproc/reason_mode_config_test.go
index 99b5639c4..5fe0c242e 100644
--- a/src/semantic-router/pkg/extproc/reason_mode_config_test.go
+++ b/src/semantic-router/pkg/extproc/reason_mode_config_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/reason_mode_selector.go b/src/semantic-router/pkg/extproc/reason_mode_selector.go
index f91cfad2a..000b97065 100644
--- a/src/semantic-router/pkg/extproc/reason_mode_selector.go
+++ b/src/semantic-router/pkg/extproc/reason_mode_selector.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/reason_mode_selector_test.go b/src/semantic-router/pkg/extproc/reason_mode_selector_test.go
index 0a8a1f0a9..d7be9c1ba 100644
--- a/src/semantic-router/pkg/extproc/reason_mode_selector_test.go
+++ b/src/semantic-router/pkg/extproc/reason_mode_selector_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/reasoning_integration_test.go b/src/semantic-router/pkg/extproc/reasoning_integration_test.go
index a45bec077..69e9f8aa2 100644
--- a/src/semantic-router/pkg/extproc/reasoning_integration_test.go
+++ b/src/semantic-router/pkg/extproc/reasoning_integration_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/request_handler.go b/src/semantic-router/pkg/extproc/request_handler.go
index 867333deb..0d05f35c8 100644
--- a/src/semantic-router/pkg/extproc/request_handler.go
+++ b/src/semantic-router/pkg/extproc/request_handler.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/request_processing_test.go b/src/semantic-router/pkg/extproc/request_processing_test.go
index a0cea76f1..079649aef 100644
--- a/src/semantic-router/pkg/extproc/request_processing_test.go
+++ b/src/semantic-router/pkg/extproc/request_processing_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc_test
import (
diff --git a/src/semantic-router/pkg/extproc/response_handler.go b/src/semantic-router/pkg/extproc/response_handler.go
index 5fbe97112..39160b56f 100644
--- a/src/semantic-router/pkg/extproc/response_handler.go
+++ b/src/semantic-router/pkg/extproc/response_handler.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/router.go b/src/semantic-router/pkg/extproc/router.go
index 90eed7c57..11afb5747 100644
--- a/src/semantic-router/pkg/extproc/router.go
+++ b/src/semantic-router/pkg/extproc/router.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/security_test.go b/src/semantic-router/pkg/extproc/security_test.go
index 58edc2091..d5cfaddb6 100644
--- a/src/semantic-router/pkg/extproc/security_test.go
+++ b/src/semantic-router/pkg/extproc/security_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc_test
import (
diff --git a/src/semantic-router/pkg/extproc/server.go b/src/semantic-router/pkg/extproc/server.go
index 12693e3e4..3aa1c0bbd 100644
--- a/src/semantic-router/pkg/extproc/server.go
+++ b/src/semantic-router/pkg/extproc/server.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/stream_handling_test.go b/src/semantic-router/pkg/extproc/stream_handling_test.go
index b9c2e0c3c..b13f4bc0a 100644
--- a/src/semantic-router/pkg/extproc/stream_handling_test.go
+++ b/src/semantic-router/pkg/extproc/stream_handling_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc_test
import (
diff --git a/src/semantic-router/pkg/extproc/test_utils_test.go b/src/semantic-router/pkg/extproc/test_utils_test.go
index 2f53a762c..32ba856c3 100644
--- a/src/semantic-router/pkg/extproc/test_utils_test.go
+++ b/src/semantic-router/pkg/extproc/test_utils_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc_test
import (
diff --git a/src/semantic-router/pkg/extproc/testing_helpers_test.go b/src/semantic-router/pkg/extproc/testing_helpers_test.go
index 492ca0992..a31bf312c 100644
--- a/src/semantic-router/pkg/extproc/testing_helpers_test.go
+++ b/src/semantic-router/pkg/extproc/testing_helpers_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/extproc/utils.go b/src/semantic-router/pkg/extproc/utils.go
index fd183288a..e48d0d495 100644
--- a/src/semantic-router/pkg/extproc/utils.go
+++ b/src/semantic-router/pkg/extproc/utils.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package extproc
import (
diff --git a/src/semantic-router/pkg/metrics/metrics.go b/src/semantic-router/pkg/metrics/metrics.go
index 50fdd6376..ccc41be25 100644
--- a/src/semantic-router/pkg/metrics/metrics.go
+++ b/src/semantic-router/pkg/metrics/metrics.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package metrics
import (
diff --git a/src/semantic-router/pkg/metrics/metrics_test.go b/src/semantic-router/pkg/metrics/metrics_test.go
index 371ad51d8..4574cfb82 100644
--- a/src/semantic-router/pkg/metrics/metrics_test.go
+++ b/src/semantic-router/pkg/metrics/metrics_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package metrics
import (
diff --git a/src/semantic-router/pkg/observability/logging.go b/src/semantic-router/pkg/observability/logging.go
index 9f3581920..3b46cfaa3 100644
--- a/src/semantic-router/pkg/observability/logging.go
+++ b/src/semantic-router/pkg/observability/logging.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package observability
import (
diff --git a/src/semantic-router/pkg/services/classification.go b/src/semantic-router/pkg/services/classification.go
index 1240e1e53..a13d8c476 100644
--- a/src/semantic-router/pkg/services/classification.go
+++ b/src/semantic-router/pkg/services/classification.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package services
import (
diff --git a/src/semantic-router/pkg/services/classification_test.go b/src/semantic-router/pkg/services/classification_test.go
index 281418d03..de9ee95eb 100644
--- a/src/semantic-router/pkg/services/classification_test.go
+++ b/src/semantic-router/pkg/services/classification_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package services
import (
diff --git a/src/semantic-router/pkg/tools/tools.go b/src/semantic-router/pkg/tools/tools.go
index e3279f9e8..f3d180ad2 100644
--- a/src/semantic-router/pkg/tools/tools.go
+++ b/src/semantic-router/pkg/tools/tools.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package tools
import (
diff --git a/src/semantic-router/pkg/utils/classification/classifier.go b/src/semantic-router/pkg/utils/classification/classifier.go
index 681d4d76f..7add0f000 100644
--- a/src/semantic-router/pkg/utils/classification/classifier.go
+++ b/src/semantic-router/pkg/utils/classification/classifier.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package classification
import (
diff --git a/src/semantic-router/pkg/utils/classification/classifier_test.go b/src/semantic-router/pkg/utils/classification/classifier_test.go
index 5606b3a14..f57c44534 100644
--- a/src/semantic-router/pkg/utils/classification/classifier_test.go
+++ b/src/semantic-router/pkg/utils/classification/classifier_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package classification
import (
diff --git a/src/semantic-router/pkg/utils/classification/generic_category_mapping_test.go b/src/semantic-router/pkg/utils/classification/generic_category_mapping_test.go
index d58ac518a..0a595029d 100644
--- a/src/semantic-router/pkg/utils/classification/generic_category_mapping_test.go
+++ b/src/semantic-router/pkg/utils/classification/generic_category_mapping_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package classification
import (
diff --git a/src/semantic-router/pkg/utils/classification/mapping.go b/src/semantic-router/pkg/utils/classification/mapping.go
index 0c45e0ec7..071a7f198 100644
--- a/src/semantic-router/pkg/utils/classification/mapping.go
+++ b/src/semantic-router/pkg/utils/classification/mapping.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package classification
import (
diff --git a/src/semantic-router/pkg/utils/classification/model_discovery.go b/src/semantic-router/pkg/utils/classification/model_discovery.go
index a27b1611f..1cd18380b 100644
--- a/src/semantic-router/pkg/utils/classification/model_discovery.go
+++ b/src/semantic-router/pkg/utils/classification/model_discovery.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package classification
import (
diff --git a/src/semantic-router/pkg/utils/classification/model_discovery_test.go b/src/semantic-router/pkg/utils/classification/model_discovery_test.go
index 8cd2f9813..804414a19 100644
--- a/src/semantic-router/pkg/utils/classification/model_discovery_test.go
+++ b/src/semantic-router/pkg/utils/classification/model_discovery_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package classification
import (
diff --git a/src/semantic-router/pkg/utils/classification/unified_classifier.go b/src/semantic-router/pkg/utils/classification/unified_classifier.go
index 68d76d783..93c39299e 100644
--- a/src/semantic-router/pkg/utils/classification/unified_classifier.go
+++ b/src/semantic-router/pkg/utils/classification/unified_classifier.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package classification
/*
diff --git a/src/semantic-router/pkg/utils/classification/unified_classifier_test.go b/src/semantic-router/pkg/utils/classification/unified_classifier_test.go
index 0baa039e7..081ddb007 100644
--- a/src/semantic-router/pkg/utils/classification/unified_classifier_test.go
+++ b/src/semantic-router/pkg/utils/classification/unified_classifier_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package classification
import (
diff --git a/src/semantic-router/pkg/utils/entropy/entropy.go b/src/semantic-router/pkg/utils/entropy/entropy.go
index ee1602cb4..beb7d13d0 100644
--- a/src/semantic-router/pkg/utils/entropy/entropy.go
+++ b/src/semantic-router/pkg/utils/entropy/entropy.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package entropy
import (
diff --git a/src/semantic-router/pkg/utils/entropy/entropy_test.go b/src/semantic-router/pkg/utils/entropy/entropy_test.go
index 5c192c781..9bb13c7ca 100644
--- a/src/semantic-router/pkg/utils/entropy/entropy_test.go
+++ b/src/semantic-router/pkg/utils/entropy/entropy_test.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package entropy
import (
diff --git a/src/semantic-router/pkg/utils/http/response.go b/src/semantic-router/pkg/utils/http/response.go
index 58ef11036..3a2794574 100644
--- a/src/semantic-router/pkg/utils/http/response.go
+++ b/src/semantic-router/pkg/utils/http/response.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package http
import (
diff --git a/src/semantic-router/pkg/utils/pii/policy.go b/src/semantic-router/pkg/utils/pii/policy.go
index 9104f8aef..df5c7fb35 100644
--- a/src/semantic-router/pkg/utils/pii/policy.go
+++ b/src/semantic-router/pkg/utils/pii/policy.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package pii
import (
diff --git a/src/training/classifier_model_fine_tuning/ft.py b/src/training/classifier_model_fine_tuning/ft.py
index 780a58268..c1cab72e7 100644
--- a/src/training/classifier_model_fine_tuning/ft.py
+++ b/src/training/classifier_model_fine_tuning/ft.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import json
import os
diff --git a/src/training/classifier_model_fine_tuning/ft_linear.py b/src/training/classifier_model_fine_tuning/ft_linear.py
index 3c736202c..2b5d062f6 100644
--- a/src/training/classifier_model_fine_tuning/ft_linear.py
+++ b/src/training/classifier_model_fine_tuning/ft_linear.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
MMLU-Pro Category Classification Fine-tuning with Multiple BERT Models
Uses the Hugging Face Transformers approach with AutoModelForSequenceClassification.
diff --git a/src/training/classifier_model_fine_tuning/test_classifier_python.py b/src/training/classifier_model_fine_tuning/test_classifier_python.py
index 6ad3af35b..f16e5418f 100644
--- a/src/training/classifier_model_fine_tuning/test_classifier_python.py
+++ b/src/training/classifier_model_fine_tuning/test_classifier_python.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import json
import os
import traceback
diff --git a/src/training/classifier_model_fine_tuning/test_linear_classifier.go b/src/training/classifier_model_fine_tuning/test_linear_classifier.go
index 7384a43c4..5965796a6 100644
--- a/src/training/classifier_model_fine_tuning/test_linear_classifier.go
+++ b/src/training/classifier_model_fine_tuning/test_linear_classifier.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package main
import (
diff --git a/src/training/dual_classifier/data_generator.py b/src/training/dual_classifier/data_generator.py
index 8cde359ca..f06765e00 100644
--- a/src/training/dual_classifier/data_generator.py
+++ b/src/training/dual_classifier/data_generator.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import random
import re
from typing import Dict, List, Tuple
diff --git a/src/training/dual_classifier/dual_classifier.py b/src/training/dual_classifier/dual_classifier.py
index 6cdb30efa..00884ebd8 100644
--- a/src/training/dual_classifier/dual_classifier.py
+++ b/src/training/dual_classifier/dual_classifier.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
from typing import Dict, List, Optional, Tuple, Union
import numpy as np
diff --git a/src/training/dual_classifier/example.py b/src/training/dual_classifier/example.py
index ccec6d1ea..27cf062ef 100644
--- a/src/training/dual_classifier/example.py
+++ b/src/training/dual_classifier/example.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import torch
from dual_classifier import DualClassifier
diff --git a/src/training/dual_classifier/test_dual_classifier.py b/src/training/dual_classifier/test_dual_classifier.py
index 5f846f9ee..a81698aaa 100644
--- a/src/training/dual_classifier/test_dual_classifier.py
+++ b/src/training/dual_classifier/test_dual_classifier.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import pytest
import torch
from dual_classifier import DualClassifier
diff --git a/src/training/dual_classifier/test_dual_classifier_system.py b/src/training/dual_classifier/test_dual_classifier_system.py
index 118238c45..5dd24dcdb 100644
--- a/src/training/dual_classifier/test_dual_classifier_system.py
+++ b/src/training/dual_classifier/test_dual_classifier_system.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import json
import os
import tempfile
diff --git a/src/training/dual_classifier/test_existing_model.py b/src/training/dual_classifier/test_existing_model.py
index 8a9100906..460ba90f4 100644
--- a/src/training/dual_classifier/test_existing_model.py
+++ b/src/training/dual_classifier/test_existing_model.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import torch
from dual_classifier import DualClassifier
diff --git a/src/training/dual_classifier/train_example.py b/src/training/dual_classifier/train_example.py
index 7e8decf46..faeffdf3d 100644
--- a/src/training/dual_classifier/train_example.py
+++ b/src/training/dual_classifier/train_example.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import os
import time
diff --git a/src/training/dual_classifier/trainer.py b/src/training/dual_classifier/trainer.py
index 773a6bab6..696df4c66 100644
--- a/src/training/dual_classifier/trainer.py
+++ b/src/training/dual_classifier/trainer.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import json
import os
from typing import Dict, List, Optional, Tuple, Union
diff --git a/src/training/model_eval/arc_challenge_vllm_eval.py b/src/training/model_eval/arc_challenge_vllm_eval.py
index a3d035021..e9f75de77 100644
--- a/src/training/model_eval/arc_challenge_vllm_eval.py
+++ b/src/training/model_eval/arc_challenge_vllm_eval.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# ARC Challenge evaluation script for vLLM OpenAI API endpoint
# Based on mmlu_pro_vllm_eval.py and ARC dataset format
# Usage example:
diff --git a/src/training/model_eval/mmlu_pro_vllm_eval.py b/src/training/model_eval/mmlu_pro_vllm_eval.py
index 395f45a57..5ef1bd70a 100755
--- a/src/training/model_eval/mmlu_pro_vllm_eval.py
+++ b/src/training/model_eval/mmlu_pro_vllm_eval.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# MMLU-Pro evaluation script for vLLM OpenAI API endpoint
# Based on https://github.com/TIGER-AI-Lab/MMLU-Pro/blob/main/evaluate_from_api.py
# Sample usage:
diff --git a/src/training/model_eval/plot_category_accuracies.py b/src/training/model_eval/plot_category_accuracies.py
index 979e73708..4717d43ff 100644
--- a/src/training/model_eval/plot_category_accuracies.py
+++ b/src/training/model_eval/plot_category_accuracies.py
@@ -1,4 +1,18 @@
#!/usr/bin/env python3
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# plot_category_accuracies.py - Visualize MMLU-Pro results by category
import argparse
diff --git a/src/training/model_eval/result_to_config.py b/src/training/model_eval/result_to_config.py
index e5c5c2c30..66483f998 100644
--- a/src/training/model_eval/result_to_config.py
+++ b/src/training/model_eval/result_to_config.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# analyze_mmlu_results.py - Analyzes MMLU-Pro results and generates optimized config.yaml
import argparse
diff --git a/src/training/multitask_bert_fine_tuning/multitask_bert_training.py b/src/training/multitask_bert_fine_tuning/multitask_bert_training.py
index c58c66b9f..f13810388 100644
--- a/src/training/multitask_bert_fine_tuning/multitask_bert_training.py
+++ b/src/training/multitask_bert_fine_tuning/multitask_bert_training.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# Fine tune BERT for multitask learning
# Motivated by research papers that explain the benefits of multitask learning in resource efficiency
diff --git a/src/training/pii_model_fine_tuning/pii_bert_finetuning.py b/src/training/pii_model_fine_tuning/pii_bert_finetuning.py
index c24d32c2e..9844cc19b 100755
--- a/src/training/pii_model_fine_tuning/pii_bert_finetuning.py
+++ b/src/training/pii_model_fine_tuning/pii_bert_finetuning.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
PII Token Classification Fine-tuning with Multiple BERT Models
Supports token classification (NER-style) for precise PII entity detection and location.
diff --git a/src/training/pii_model_fine_tuning/pii_classifier_verifier.go b/src/training/pii_model_fine_tuning/pii_classifier_verifier.go
index caceb0a9f..1b7d49088 100644
--- a/src/training/pii_model_fine_tuning/pii_classifier_verifier.go
+++ b/src/training/pii_model_fine_tuning/pii_classifier_verifier.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package main
import (
diff --git a/src/training/prompt_guard_fine_tuning/jailbreak_bert_finetuning.py b/src/training/prompt_guard_fine_tuning/jailbreak_bert_finetuning.py
index a795f12af..b8b39a341 100644
--- a/src/training/prompt_guard_fine_tuning/jailbreak_bert_finetuning.py
+++ b/src/training/prompt_guard_fine_tuning/jailbreak_bert_finetuning.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
Jailbreak Classification Fine-tuning with Multiple BERT Models
Uses the simplified Hugging Face Transformers approach with AutoModelForSequenceClassification.
diff --git a/src/training/prompt_guard_fine_tuning/jailbreak_classifier_verifier.go b/src/training/prompt_guard_fine_tuning/jailbreak_classifier_verifier.go
index e592e2420..ba2ee0b7a 100644
--- a/src/training/prompt_guard_fine_tuning/jailbreak_classifier_verifier.go
+++ b/src/training/prompt_guard_fine_tuning/jailbreak_classifier_verifier.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package main
import (
diff --git a/src/training/training_lora/classifier_model_fine_tuning_lora/ft_linear_lora.py b/src/training/training_lora/classifier_model_fine_tuning_lora/ft_linear_lora.py
index 3a955a461..7f4841d96 100644
--- a/src/training/training_lora/classifier_model_fine_tuning_lora/ft_linear_lora.py
+++ b/src/training/training_lora/classifier_model_fine_tuning_lora/ft_linear_lora.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
MMLU-Pro Category Classification Fine-tuning with Enhanced LoRA Training
Uses PEFT (Parameter-Efficient Fine-Tuning) with LoRA adapters for efficient intent classification.
diff --git a/src/training/training_lora/classifier_model_fine_tuning_lora/ft_linear_lora_verifier.go b/src/training/training_lora/classifier_model_fine_tuning_lora/ft_linear_lora_verifier.go
index 46c619e15..a2120c744 100644
--- a/src/training/training_lora/classifier_model_fine_tuning_lora/ft_linear_lora_verifier.go
+++ b/src/training/training_lora/classifier_model_fine_tuning_lora/ft_linear_lora_verifier.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package main
import (
diff --git a/src/training/training_lora/classifier_model_fine_tuning_lora/train_cpu_optimized.sh b/src/training/training_lora/classifier_model_fine_tuning_lora/train_cpu_optimized.sh
index 4e1d4402c..5328eb570 100755
--- a/src/training/training_lora/classifier_model_fine_tuning_lora/train_cpu_optimized.sh
+++ b/src/training/training_lora/classifier_model_fine_tuning_lora/train_cpu_optimized.sh
@@ -1,4 +1,18 @@
#!/bin/bash
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# CPU-Optimized Training Script for Intent Classification LoRA
# =============================================================
diff --git a/src/training/training_lora/common_lora_utils.py b/src/training/training_lora/common_lora_utils.py
index 9a2875541..3d9d07355 100644
--- a/src/training/training_lora/common_lora_utils.py
+++ b/src/training/training_lora/common_lora_utils.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
Common LoRA Training Utilities
=============================
diff --git a/src/training/training_lora/pii_model_fine_tuning_lora/pii_bert_finetuning_lora.py b/src/training/training_lora/pii_model_fine_tuning_lora/pii_bert_finetuning_lora.py
index f182499b6..d6dd0b57c 100644
--- a/src/training/training_lora/pii_model_fine_tuning_lora/pii_bert_finetuning_lora.py
+++ b/src/training/training_lora/pii_model_fine_tuning_lora/pii_bert_finetuning_lora.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
PII Token Classification Fine-tuning with Enhanced LoRA Training
Uses PEFT (Parameter-Efficient Fine-Tuning) with LoRA adapters for efficient token classification.
diff --git a/src/training/training_lora/pii_model_fine_tuning_lora/pii_bert_finetuning_lora_verifier.go b/src/training/training_lora/pii_model_fine_tuning_lora/pii_bert_finetuning_lora_verifier.go
index 93ed287ce..834e02725 100644
--- a/src/training/training_lora/pii_model_fine_tuning_lora/pii_bert_finetuning_lora_verifier.go
+++ b/src/training/training_lora/pii_model_fine_tuning_lora/pii_bert_finetuning_lora_verifier.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package main
import (
diff --git a/src/training/training_lora/pii_model_fine_tuning_lora/train_cpu_optimized.sh b/src/training/training_lora/pii_model_fine_tuning_lora/train_cpu_optimized.sh
index 49e46ee25..df65658bf 100755
--- a/src/training/training_lora/pii_model_fine_tuning_lora/train_cpu_optimized.sh
+++ b/src/training/training_lora/pii_model_fine_tuning_lora/train_cpu_optimized.sh
@@ -1,4 +1,18 @@
#!/bin/bash
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# CPU-Optimized Training Script for PII Detection LoRA
# ====================================================
diff --git a/src/training/training_lora/prompt_guard_fine_tuning_lora/jailbreak_bert_finetuning_lora.py b/src/training/training_lora/prompt_guard_fine_tuning_lora/jailbreak_bert_finetuning_lora.py
index 76b6df028..4ad553f47 100644
--- a/src/training/training_lora/prompt_guard_fine_tuning_lora/jailbreak_bert_finetuning_lora.py
+++ b/src/training/training_lora/prompt_guard_fine_tuning_lora/jailbreak_bert_finetuning_lora.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
"""
Jailbreak Classification Fine-tuning with Enhanced LoRA Training
Uses PEFT (Parameter-Efficient Fine-Tuning) with LoRA adapters for efficient security detection.
diff --git a/src/training/training_lora/prompt_guard_fine_tuning_lora/jailbreak_bert_finetuning_lora_verifier.go b/src/training/training_lora/prompt_guard_fine_tuning_lora/jailbreak_bert_finetuning_lora_verifier.go
index f70de786e..1f1f56f16 100644
--- a/src/training/training_lora/prompt_guard_fine_tuning_lora/jailbreak_bert_finetuning_lora_verifier.go
+++ b/src/training/training_lora/prompt_guard_fine_tuning_lora/jailbreak_bert_finetuning_lora_verifier.go
@@ -1,3 +1,17 @@
+// Copyright 2025 The vLLM Semantic Router Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
package main
import (
diff --git a/src/training/training_lora/prompt_guard_fine_tuning_lora/train_cpu_optimized.sh b/src/training/training_lora/prompt_guard_fine_tuning_lora/train_cpu_optimized.sh
index 7b717205b..2f2a6be23 100755
--- a/src/training/training_lora/prompt_guard_fine_tuning_lora/train_cpu_optimized.sh
+++ b/src/training/training_lora/prompt_guard_fine_tuning_lora/train_cpu_optimized.sh
@@ -1,4 +1,18 @@
#!/bin/bash
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# CPU-Optimized Training Script for Security Detection LoRA
# ==========================================================
diff --git a/tools/linter/codespell/.codespell.skip b/tools/linter/codespell/.codespell.skip
index c1002a156..b84050070 100644
--- a/tools/linter/codespell/.codespell.skip
+++ b/tools/linter/codespell/.codespell.skip
@@ -14,3 +14,4 @@
./website/node_modules/*
./website/package-lock.json
./candle-binding/target
+./models/*
diff --git a/tools/linter/markdown/markdownlint.yaml b/tools/linter/markdown/markdownlint.yaml
index 0e00f8e26..e0bc12dee 100644
--- a/tools/linter/markdown/markdownlint.yaml
+++ b/tools/linter/markdown/markdownlint.yaml
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# MD003 heading-style/header-style Heading style
MD003: false
diff --git a/tools/make/build-run-test.mk b/tools/make/build-run-test.mk
index 67ccb4fae..d1065a79b 100644
--- a/tools/make/build-run-test.mk
+++ b/tools/make/build-run-test.mk
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# ============== build-run-test.mk ==============
# = Project build, run and test related =
# =============== build-run-test.mk =============
diff --git a/tools/make/common.mk b/tools/make/common.mk
index d34f2dbc3..81970635b 100644
--- a/tools/make/common.mk
+++ b/tools/make/common.mk
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# ====================== common.mk ======================
# = Common function or variables for other makefiles =
# ====================== common.mk ======================
diff --git a/tools/make/docs.mk b/tools/make/docs.mk
index 5d794172f..4954ffe0a 100644
--- a/tools/make/docs.mk
+++ b/tools/make/docs.mk
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# ========================== docs.mk ==========================
# = Everything For Docs,include API Docs and Docs Website =
# ========================== docs.mk ==========================
diff --git a/tools/make/envoy.mk b/tools/make/envoy.mk
index c790fc732..fd7b96430 100644
--- a/tools/make/envoy.mk
+++ b/tools/make/envoy.mk
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# ======== envoy.mk ========
# = Everything For envoy =
# ======== envoy.mk ========
diff --git a/tools/make/envs.mk b/tools/make/envs.mk
index f4c9e81fa..b85c93de9 100644
--- a/tools/make/envs.mk
+++ b/tools/make/envs.mk
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# ====================== envs.mk ======================
# = Environment Makefile, refer for other makefile =
# ====================== envs.mk ======================
diff --git a/tools/make/golang.mk b/tools/make/golang.mk
index 06441e201..b208b02bf 100644
--- a/tools/make/golang.mk
+++ b/tools/make/golang.mk
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# ======== golang.mk ========
# = Everything For Golang =
# ======== golang.mk ========
diff --git a/tools/make/linter.mk b/tools/make/linter.mk
index 940b8b35d..d2dc41f34 100644
--- a/tools/make/linter.mk
+++ b/tools/make/linter.mk
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# =============================== linter.mk ==========================
# = Everything For Project Linter, markdown, yaml, code spell etc. =
# =============================== linter.mk ==========================
@@ -26,3 +40,22 @@ codespell: CODESPELL_SKIP := $(shell cat tools/linter/codespell/.codespell.skip
codespell:
@$(LOG_TARGET)
codespell --skip $(CODESPELL_SKIP) --ignore-words tools/linter/codespell/.codespell.ignorewords --check-filenames
+
+# License header checking and fixing
+license-check:
+ @$(LOG_TARGET)
+ @echo "Checking license headers..."
+ @if ! command -v license-eye >/dev/null 2>&1; then \
+ echo "Installing license-eye..."; \
+ go install github.com/apache/skywalking-eyes/cmd/license-eye@latest; \
+ fi
+ license-eye header check
+
+license-fix:
+ @$(LOG_TARGET)
+ @echo "Fixing license headers..."
+ @if ! command -v license-eye >/dev/null 2>&1; then \
+ echo "Installing license-eye..."; \
+ go install github.com/apache/skywalking-eyes/cmd/license-eye@latest; \
+ fi
+ license-eye header fix
diff --git a/tools/make/milvus.mk b/tools/make/milvus.mk
index d435dd22d..d8e410969 100644
--- a/tools/make/milvus.mk
+++ b/tools/make/milvus.mk
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# ======== milvus.mk ========
# = Everything For milvus =
# ======== milvus.mk ========
diff --git a/tools/make/models.mk b/tools/make/models.mk
index 083420242..d4f3ef4f7 100644
--- a/tools/make/models.mk
+++ b/tools/make/models.mk
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# ======== models.mk ========
# = Everything For models =
# ======== models.mk ========
diff --git a/tools/make/pre-commit.mk b/tools/make/pre-commit.mk
index 53d6a54f4..aba1b105a 100644
--- a/tools/make/pre-commit.mk
+++ b/tools/make/pre-commit.mk
@@ -1,25 +1,25 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
PRECOMMIT_CONTAINER := ghcr.io/vllm-project/semantic-router/precommit:latest
precommit-install:
pip install pre-commit
precommit-check:
- @FILES=$$(find . -type f \( -name "*.go" -o -name "*.rs" -o -name "*.py" -o -name "*.js" -o -name "*.md" -o -name "*.yaml" -o -name "*.yml" \) \
- ! -path "./target/*" \
- ! -path "./candle-binding/target/*" \
- ! -path "./.git/*" \
- ! -path "./node_modules/*" \
- ! -path "./vendor/*" \
- ! -path "./__pycache__/*" \
- ! -path "./site/*" \
- ! -name "*.pb.go" \
- | tr '\n' ' '); \
- if [ -n "$$FILES" ]; then \
- echo "Running pre-commit on files: $$FILES"; \
- pre-commit run --files $$FILES; \
- else \
- echo "No Go, Rust, JavaScript, Markdown, Yaml, or Python files found to check"; \
- fi
+ @echo "Running pre-commit on all files..."
+ pre-commit run --all-files
# Run pre-commit hooks in a Docker container,
# and you can exec container to run bash for debug.
diff --git a/tools/make/rust.mk b/tools/make/rust.mk
index 7b94516f3..95f7daa4a 100644
--- a/tools/make/rust.mk
+++ b/tools/make/rust.mk
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
# ======== rust.mk ========
# = Everything For rust =
# ======== rust.mk ========
diff --git a/tools/mock-vllm/Dockerfile b/tools/mock-vllm/Dockerfile
index c11141d12..7afb1b1fb 100644
--- a/tools/mock-vllm/Dockerfile
+++ b/tools/mock-vllm/Dockerfile
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
FROM python:3.11-slim
WORKDIR /app
diff --git a/tools/mock-vllm/app.py b/tools/mock-vllm/app.py
index e4d02d152..837d63ed1 100644
--- a/tools/mock-vllm/app.py
+++ b/tools/mock-vllm/app.py
@@ -1,3 +1,17 @@
+# Copyright 2025 The vLLM Semantic Router Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
import math
import time
from typing import List, Optional