# Janus-35B convenience Makefile. # # All work is delegated to scripts/* — this file just gives common # operations short, discoverable names. # # Variables you can override on the command line: # QUANT GGUF quant suffix (default: Q4_K_M) # TAG Ollama model tag (default: janus) # GGUF_PATH path to existing GGUF (skip the download) # GGUF GGUF for live-check (default: GGUF_PATH, else the bundled file) # MODEL model tag for smoke (default: $(TAG)) # # Examples: # make build # Q4_K_M from the Heretic GGUF repo (the MTP strip no-ops on these quants) # make build QUANT=Q5_K_M # higher-quality quant # make build GGUF_PATH=~/models/Qwen3.6-35B-A3B-uncensored-heretic-Q4_K_M.gguf # make load-bundle # this repo's bundled GGUF -> local Ollama tag (smudge LFS if needed) # make smoke # make check # make clean QUANT ?= Q4_K_M TAG ?= janus MODEL ?= $(TAG) CTX ?= 4096 .DEFAULT_GOAL := help PRECISION ?= BF16 .PHONY: help build load-bundle cap-ctx smoke smoke-tools bench check hooks mmproj verify-arch clean live-check check-tag help: ## Show this help. @awk 'BEGIN {FS = ":.*##"; printf "Targets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-12s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST) @echo @echo "Current settings:" @echo " QUANT=$(QUANT) TAG=$(TAG) PRECISION=$(PRECISION)" ifdef GGUF_PATH @echo " GGUF_PATH=$(GGUF_PATH)" endif build: ## Download a Heretic GGUF, run the MTP strip (a no-op on these quants), and run 'ollama create'. GGUF_PATH=$(GGUF_PATH) TAG=$(TAG) ./scripts/build.sh $(QUANT) load-bundle: ## Load THIS repo's bundled GGUF into a local Ollama tag (smudge LFS + ollama create). TAG=$(TAG) ./scripts/load_bundle.sh cap-ctx: ## Bake a small-num_ctx local tag for OpenAI /v1 clients (CTX default 4096). CTX=$(CTX) TAG=$(TAG) ./scripts/cap_ctx.sh smoke: ## Verify the model is reachable and round-trips. MODEL=$(MODEL) ./scripts/smoke_test.sh smoke-tools: ## smoke + end-to-end tool-call round-trip (~10s extra). MODEL=$(MODEL) TOOLS_TEST=1 ./scripts/smoke_test.sh bench: ## Measure tok/s using Ollama's eval timing (3 prompts). MODEL=$(MODEL) ./scripts/bench.sh mmproj: ## Fetch the vision projector for llama.cpp (Ollama vision is broken upstream). ./scripts/fetch_vision.sh $(PRECISION) check: ## Lint, bridge-file sync, the Go-template guard, and that the Modelfile's FROM is the GGUF this repo ships. ./scripts/check.sh live-check: ## Live end-to-end checks in an isolated Ollama (GGUF=path or GGUF_PATH=path; tens of minutes on CPU). ./scripts/live_check.sh "$(or $(GGUF),$(GGUF_PATH))" check-tag: ## Check an installed Ollama tag still carries this repo's template (TAG=name). ./scripts/check_tag_sync.sh $(TAG) verify-arch: ## Cross-check README "Architecture" bullets against GGUF metadata. ./scripts/verify_arch.py hooks: ## Install scripts/check.sh as the git pre-commit hook. ./scripts/install-hooks.sh clean: ## Remove local GGUF copies and ephemeral caches in this repo. @echo "[*] removing local GGUFs and ephemeral caches in $$PWD" @rm -f ./Qwen3.6-35B-A3B-uncensored-*.gguf ./mmproj-*.gguf ./*.stripped.gguf @rm -rf ./.cache __pycache__ examples/__pycache__ @echo "[+] clean"