claude-transcript-viewer 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Embedding Server Manager
3
+ *
4
+ * Manages the MLX Qwen3 embedding server lifecycle on Apple Silicon.
5
+ * Automatically sets up Python venv, installs dependencies, and spawns the server.
6
+ * Falls back gracefully on non-Apple systems or setup failures.
7
+ */
8
+ export interface ServerManagerOptions {
9
+ port?: number;
10
+ modelName?: string;
11
+ verbose?: boolean;
12
+ dataDir?: string;
13
+ }
14
+ export interface ServerStatus {
15
+ running: boolean;
16
+ healthy: boolean;
17
+ port?: number;
18
+ model?: string;
19
+ dim?: number;
20
+ error?: string;
21
+ }
22
+ /**
23
+ * Check if running on Apple Silicon
24
+ */
25
+ export declare function isAppleSilicon(): boolean;
26
+ /**
27
+ * Check if running in CI environment
28
+ */
29
+ export declare function isCI(): boolean;
30
+ /**
31
+ * Manages the embedding server subprocess
32
+ */
33
+ export declare class EmbeddingServerManager {
34
+ private process;
35
+ private port;
36
+ private modelName;
37
+ private verbose;
38
+ private dataDir;
39
+ private venvPath;
40
+ private pythonPath;
41
+ private healthCheckTimer;
42
+ private _status;
43
+ constructor(options?: ServerManagerOptions);
44
+ get status(): ServerStatus;
45
+ get url(): string;
46
+ /**
47
+ * Check if the system supports MLX embeddings
48
+ */
49
+ canRun(): {
50
+ supported: boolean;
51
+ reason?: string;
52
+ };
53
+ /**
54
+ * Set up the Python virtual environment and install dependencies
55
+ */
56
+ setup(): Promise<{
57
+ success: boolean;
58
+ error?: string;
59
+ }>;
60
+ /**
61
+ * Start the embedding server
62
+ */
63
+ start(): Promise<{
64
+ success: boolean;
65
+ error?: string;
66
+ }>;
67
+ /**
68
+ * Stop the embedding server
69
+ */
70
+ stop(): void;
71
+ /**
72
+ * Check server health
73
+ */
74
+ checkHealth(): Promise<boolean>;
75
+ /**
76
+ * Wait for server to become healthy
77
+ */
78
+ private waitForHealthy;
79
+ /**
80
+ * Start periodic health checks
81
+ */
82
+ private startHealthCheck;
83
+ /**
84
+ * Stop health check monitoring
85
+ */
86
+ private stopHealthCheck;
87
+ /**
88
+ * Get path to the Python server script
89
+ */
90
+ private getServerScriptPath;
91
+ /**
92
+ * Get path to requirements.txt
93
+ */
94
+ private getRequirementsPath;
95
+ /**
96
+ * Log message if verbose mode is enabled
97
+ */
98
+ private log;
99
+ }
100
+ /**
101
+ * Create and optionally start an embedding server manager
102
+ */
103
+ export declare function createEmbeddingServer(options?: ServerManagerOptions & {
104
+ autoStart?: boolean;
105
+ }): Promise<EmbeddingServerManager | null>;
@@ -0,0 +1,364 @@
1
+ /**
2
+ * Embedding Server Manager
3
+ *
4
+ * Manages the MLX Qwen3 embedding server lifecycle on Apple Silicon.
5
+ * Automatically sets up Python venv, installs dependencies, and spawns the server.
6
+ * Falls back gracefully on non-Apple systems or setup failures.
7
+ */
8
+ import { spawn, spawnSync } from "child_process";
9
+ import { existsSync, mkdirSync } from "fs";
10
+ import { join, dirname } from "path";
11
+ import { fileURLToPath } from "url";
12
+ import { platform, arch } from "os";
13
+ const __dirname = dirname(fileURLToPath(import.meta.url));
14
+ // Server configuration
15
+ const DEFAULT_PORT = 8100; // Use different port to avoid conflicts
16
+ const HEALTH_CHECK_INTERVAL = 5000;
17
+ const STARTUP_TIMEOUT = 120000; // 2 minutes for model download on first run
18
+ const VENV_DIR = ".embedding-venv";
19
+ /**
20
+ * Check if running on Apple Silicon
21
+ */
22
+ export function isAppleSilicon() {
23
+ return platform() === "darwin" && arch() === "arm64";
24
+ }
25
+ /**
26
+ * Check if running in CI environment
27
+ */
28
+ export function isCI() {
29
+ return (process.env.CI === "true" ||
30
+ process.env.GITHUB_ACTIONS === "true" ||
31
+ process.env.GITLAB_CI === "true" ||
32
+ process.env.CIRCLECI === "true");
33
+ }
34
+ /**
35
+ * Check if Python 3 is available and return its path
36
+ */
37
+ function getPythonPath() {
38
+ const candidates = ["python3", "python"];
39
+ for (const cmd of candidates) {
40
+ const result = spawnSync(cmd, ["--version"], {
41
+ encoding: "utf-8",
42
+ timeout: 5000,
43
+ });
44
+ if (result.status === 0) {
45
+ const version = (result.stdout || result.stderr || "").trim();
46
+ if (version.includes("Python 3")) {
47
+ return cmd;
48
+ }
49
+ }
50
+ }
51
+ return null;
52
+ }
53
+ /**
54
+ * Manages the embedding server subprocess
55
+ */
56
+ export class EmbeddingServerManager {
57
+ process = null;
58
+ port;
59
+ modelName;
60
+ verbose;
61
+ dataDir;
62
+ venvPath;
63
+ pythonPath = null;
64
+ healthCheckTimer = null;
65
+ _status = { running: false, healthy: false };
66
+ constructor(options = {}) {
67
+ this.port = options.port ?? DEFAULT_PORT;
68
+ this.modelName =
69
+ options.modelName ?? "mlx-community/Qwen3-Embedding-0.6B-4bit-DWQ";
70
+ this.verbose = options.verbose ?? false;
71
+ this.dataDir =
72
+ options.dataDir ??
73
+ join(process.env.HOME ?? "~", ".claude-transcript-viewer");
74
+ this.venvPath = join(this.dataDir, VENV_DIR);
75
+ }
76
+ get status() {
77
+ return { ...this._status };
78
+ }
79
+ get url() {
80
+ return `http://127.0.0.1:${this.port}`;
81
+ }
82
+ /**
83
+ * Check if the system supports MLX embeddings
84
+ */
85
+ canRun() {
86
+ if (!isAppleSilicon()) {
87
+ return {
88
+ supported: false,
89
+ reason: "MLX embeddings require Apple Silicon (M1/M2/M3/M4)",
90
+ };
91
+ }
92
+ this.pythonPath = getPythonPath();
93
+ if (!this.pythonPath) {
94
+ return {
95
+ supported: false,
96
+ reason: "Python 3 not found. Install Python 3.9+ to enable embeddings.",
97
+ };
98
+ }
99
+ return { supported: true };
100
+ }
101
+ /**
102
+ * Set up the Python virtual environment and install dependencies
103
+ */
104
+ async setup() {
105
+ const check = this.canRun();
106
+ if (!check.supported) {
107
+ return { success: false, error: check.reason };
108
+ }
109
+ try {
110
+ // Create data directory
111
+ if (!existsSync(this.dataDir)) {
112
+ mkdirSync(this.dataDir, { recursive: true });
113
+ }
114
+ // Create venv if it doesn't exist
115
+ if (!existsSync(this.venvPath)) {
116
+ this.log("Creating Python virtual environment...");
117
+ const venvResult = spawnSync(this.pythonPath, ["-m", "venv", this.venvPath], {
118
+ encoding: "utf-8",
119
+ stdio: this.verbose ? "inherit" : "pipe",
120
+ });
121
+ if (venvResult.status !== 0) {
122
+ return {
123
+ success: false,
124
+ error: `Failed to create venv: ${venvResult.stderr}`,
125
+ };
126
+ }
127
+ }
128
+ // Get venv python path
129
+ const venvPython = join(this.venvPath, "bin", "python");
130
+ // Check if dependencies are installed
131
+ const pipListResult = spawnSync(venvPython, ["-m", "pip", "list"], {
132
+ encoding: "utf-8",
133
+ timeout: 30000,
134
+ });
135
+ const pipListOutput = pipListResult.stdout || "";
136
+ const hasMLX = pipListOutput.toLowerCase().includes("mlx-lm");
137
+ const hasFastAPI = pipListOutput.toLowerCase().includes("fastapi");
138
+ if (!hasMLX || !hasFastAPI) {
139
+ this.log("Installing MLX embedding dependencies (this may take a few minutes)...");
140
+ const requirementsPath = this.getRequirementsPath();
141
+ const installResult = spawnSync(venvPython, ["-m", "pip", "install", "-r", requirementsPath, "--quiet"], {
142
+ encoding: "utf-8",
143
+ stdio: this.verbose ? "inherit" : "pipe",
144
+ timeout: 300000, // 5 minute timeout for pip install
145
+ });
146
+ if (installResult.status !== 0) {
147
+ return {
148
+ success: false,
149
+ error: `Failed to install dependencies: ${installResult.stderr}`,
150
+ };
151
+ }
152
+ this.log("Dependencies installed successfully");
153
+ }
154
+ return { success: true };
155
+ }
156
+ catch (error) {
157
+ const message = error instanceof Error ? error.message : "Unknown setup error";
158
+ return { success: false, error: message };
159
+ }
160
+ }
161
+ /**
162
+ * Start the embedding server
163
+ */
164
+ async start() {
165
+ if (this.process) {
166
+ return { success: true }; // Already running
167
+ }
168
+ // Run setup first
169
+ const setupResult = await this.setup();
170
+ if (!setupResult.success) {
171
+ this._status = {
172
+ running: false,
173
+ healthy: false,
174
+ error: setupResult.error,
175
+ };
176
+ return setupResult;
177
+ }
178
+ try {
179
+ const venvPython = join(this.venvPath, "bin", "python");
180
+ const serverScript = this.getServerScriptPath();
181
+ this.log(`Starting embedding server on port ${this.port}...`);
182
+ this.process = spawn(venvPython, [serverScript], {
183
+ env: {
184
+ ...process.env,
185
+ PORT: String(this.port),
186
+ MODEL_NAME: this.modelName,
187
+ LOG_LEVEL: this.verbose ? "DEBUG" : "WARNING",
188
+ },
189
+ stdio: this.verbose ? "inherit" : "pipe",
190
+ detached: false,
191
+ });
192
+ this.process.on("error", (err) => {
193
+ this.log(`Server process error: ${err.message}`);
194
+ this._status = { running: false, healthy: false, error: err.message };
195
+ this.process = null;
196
+ });
197
+ this.process.on("exit", (code) => {
198
+ this.log(`Server process exited with code ${code}`);
199
+ this._status = { running: false, healthy: false };
200
+ this.process = null;
201
+ this.stopHealthCheck();
202
+ });
203
+ // Wait for server to be healthy
204
+ const healthy = await this.waitForHealthy(STARTUP_TIMEOUT);
205
+ if (!healthy) {
206
+ this.stop();
207
+ return {
208
+ success: false,
209
+ error: "Server failed to become healthy within timeout",
210
+ };
211
+ }
212
+ // Start health check monitoring
213
+ this.startHealthCheck();
214
+ return { success: true };
215
+ }
216
+ catch (error) {
217
+ const message = error instanceof Error ? error.message : "Unknown start error";
218
+ this._status = { running: false, healthy: false, error: message };
219
+ return { success: false, error: message };
220
+ }
221
+ }
222
+ /**
223
+ * Stop the embedding server
224
+ */
225
+ stop() {
226
+ this.stopHealthCheck();
227
+ if (this.process) {
228
+ this.log("Stopping embedding server...");
229
+ this.process.kill("SIGTERM");
230
+ // Force kill after 5 seconds
231
+ setTimeout(() => {
232
+ if (this.process) {
233
+ this.process.kill("SIGKILL");
234
+ }
235
+ }, 5000);
236
+ this.process = null;
237
+ }
238
+ this._status = { running: false, healthy: false };
239
+ }
240
+ /**
241
+ * Check server health
242
+ */
243
+ async checkHealth() {
244
+ try {
245
+ const controller = new AbortController();
246
+ const timeout = setTimeout(() => controller.abort(), 5000);
247
+ const response = await fetch(`${this.url}/health`, {
248
+ signal: controller.signal,
249
+ });
250
+ clearTimeout(timeout);
251
+ if (!response.ok) {
252
+ return false;
253
+ }
254
+ const data = (await response.json());
255
+ if (data.status === "ok") {
256
+ this._status = {
257
+ running: true,
258
+ healthy: true,
259
+ port: this.port,
260
+ model: data.model ?? data.model_name,
261
+ dim: data.dim ?? data.embedding_dim,
262
+ };
263
+ return true;
264
+ }
265
+ return false;
266
+ }
267
+ catch {
268
+ return false;
269
+ }
270
+ }
271
+ /**
272
+ * Wait for server to become healthy
273
+ */
274
+ async waitForHealthy(timeout) {
275
+ const start = Date.now();
276
+ const checkInterval = 1000;
277
+ while (Date.now() - start < timeout) {
278
+ if (await this.checkHealth()) {
279
+ this.log("Embedding server is ready");
280
+ return true;
281
+ }
282
+ await new Promise((r) => setTimeout(r, checkInterval));
283
+ }
284
+ return false;
285
+ }
286
+ /**
287
+ * Start periodic health checks
288
+ */
289
+ startHealthCheck() {
290
+ this.healthCheckTimer = setInterval(async () => {
291
+ const healthy = await this.checkHealth();
292
+ if (!healthy && this._status.healthy) {
293
+ this.log("Embedding server health check failed");
294
+ this._status.healthy = false;
295
+ }
296
+ }, HEALTH_CHECK_INTERVAL);
297
+ }
298
+ /**
299
+ * Stop health check monitoring
300
+ */
301
+ stopHealthCheck() {
302
+ if (this.healthCheckTimer) {
303
+ clearInterval(this.healthCheckTimer);
304
+ this.healthCheckTimer = null;
305
+ }
306
+ }
307
+ /**
308
+ * Get path to the Python server script
309
+ */
310
+ getServerScriptPath() {
311
+ // Both dev and prod: python/ is at package root
312
+ // __dirname = src/embeddings/ (dev) or dist/embeddings/ (prod)
313
+ // So ../../python/ works for both
314
+ const pythonPath = join(__dirname, "../../python/embed_server.py");
315
+ if (existsSync(pythonPath)) {
316
+ return pythonPath;
317
+ }
318
+ throw new Error(`Embedding server script not found at ${pythonPath}. ` +
319
+ "Ensure the python/ directory is included in the package.");
320
+ }
321
+ /**
322
+ * Get path to requirements.txt
323
+ */
324
+ getRequirementsPath() {
325
+ const requirementsPath = join(__dirname, "../../python/requirements.txt");
326
+ if (existsSync(requirementsPath)) {
327
+ return requirementsPath;
328
+ }
329
+ throw new Error(`Requirements file not found at ${requirementsPath}. ` +
330
+ "Ensure the python/ directory is included in the package.");
331
+ }
332
+ /**
333
+ * Log message if verbose mode is enabled
334
+ */
335
+ log(message) {
336
+ if (this.verbose) {
337
+ console.log(`[EmbeddingServer] ${message}`);
338
+ }
339
+ }
340
+ }
341
+ /**
342
+ * Create and optionally start an embedding server manager
343
+ */
344
+ export async function createEmbeddingServer(options = {}) {
345
+ const manager = new EmbeddingServerManager(options);
346
+ const check = manager.canRun();
347
+ if (!check.supported) {
348
+ if (options.verbose) {
349
+ console.log(`[EmbeddingServer] ${check.reason}`);
350
+ }
351
+ return null;
352
+ }
353
+ if (options.autoStart !== false) {
354
+ const result = await manager.start();
355
+ if (!result.success) {
356
+ if (options.verbose) {
357
+ console.log(`[EmbeddingServer] Failed to start: ${result.error}`);
358
+ }
359
+ return null;
360
+ }
361
+ }
362
+ return manager;
363
+ }
364
+ //# sourceMappingURL=server-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../../src/embeddings/server-manager.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -4,10 +4,11 @@ import { readFileSync, existsSync, readdirSync, mkdirSync } from "fs";
4
4
  import { join, resolve } from "path";
5
5
  import { spawn } from "child_process";
6
6
  import * as cheerio from "cheerio";
7
- import { createDatabase, getDatabase } from "./db/index.js";
7
+ import { createDatabase, getDatabase, closeDatabase } from "./db/index.js";
8
8
  import { searchHybrid } from "./api/search.js";
9
9
  import { generateSnippet, highlightTerms } from "./api/snippets.js";
10
10
  import { createEmbeddingClient } from "./embeddings/client.js";
11
+ import { createEmbeddingServer, isAppleSilicon, isCI, } from "./embeddings/server-manager.js";
11
12
  import { getConfig } from "./config.js";
12
13
  import { runIndexer } from "./indexer/index.js";
13
14
  const app = express();
@@ -16,8 +17,10 @@ const PORT = process.env.PORT || 3000;
16
17
  const ARCHIVE_DIR = process.env.ARCHIVE_DIR || process.argv[2] || "./claude-archive";
17
18
  const SOURCE_DIR = process.env.SOURCE_DIR || process.argv[3] || "";
18
19
  const DATABASE_PATH = process.env.DATABASE_PATH || join(ARCHIVE_DIR, ".search.db");
20
+ const NO_OPEN = process.argv.includes("--no-open") || process.env.NO_OPEN === "true";
19
21
  // Initialize database and embedding client
20
22
  let embeddingClient;
23
+ let embeddingServer = null;
21
24
  // Background indexing state
22
25
  let indexingStatus = { isIndexing: false };
23
26
  // Archive generation state
@@ -223,6 +226,26 @@ async function initializeSearch() {
223
226
  embeddingClient = createEmbeddingClient(socketPath);
224
227
  console.log(`Embedding client connected to ${socketPath}`);
225
228
  }
229
+ else if (isAppleSilicon() && !isCI()) {
230
+ // Apple Silicon (non-CI): try to auto-start the MLX embedding server
231
+ console.log(`Apple Silicon detected - starting MLX embedding server...`);
232
+ embeddingServer = await createEmbeddingServer({
233
+ verbose: process.env.DEBUG === "true" || process.env.VERBOSE === "true",
234
+ });
235
+ if (embeddingServer && embeddingServer.status.healthy) {
236
+ const status = embeddingServer.status;
237
+ console.log(`MLX embedding server started (model: ${status.model}, dim: ${status.dim})`);
238
+ embeddingClient = createEmbeddingClient(embeddingServer.url);
239
+ }
240
+ else {
241
+ console.log(`MLX embedding server failed to start - using FTS-only search`);
242
+ console.log(` Run with DEBUG=true for more details`);
243
+ }
244
+ }
245
+ else if (isCI()) {
246
+ console.log(`CI environment detected - using FTS-only search`);
247
+ console.log(` Set EMBED_URL to enable embeddings in CI`);
248
+ }
226
249
  else {
227
250
  console.log(`Embedding server not found - using FTS-only search`);
228
251
  console.log(` Set EMBED_URL=http://localhost:8000 for HTTP or EMBED_SOCKET for Unix socket`);
@@ -1822,22 +1845,47 @@ function projectToArchivePath(project) {
1822
1845
  // Last resort: return the original project
1823
1846
  return project;
1824
1847
  }
1848
+ // Open browser with the given URL
1849
+ function openBrowser(url) {
1850
+ const { platform } = process;
1851
+ let command;
1852
+ let args;
1853
+ if (platform === "darwin") {
1854
+ command = "open";
1855
+ args = [url];
1856
+ }
1857
+ else if (platform === "win32") {
1858
+ command = "cmd";
1859
+ args = ["/c", "start", url];
1860
+ }
1861
+ else {
1862
+ // Linux and others
1863
+ command = "xdg-open";
1864
+ args = [url];
1865
+ }
1866
+ const child = spawn(command, args, {
1867
+ detached: true,
1868
+ stdio: "ignore",
1869
+ });
1870
+ child.unref();
1871
+ }
1825
1872
  // Initialize search on startup
1826
1873
  initializeSearch();
1827
1874
  app.listen(PORT, () => {
1875
+ const url = `http://localhost:${PORT}`;
1828
1876
  console.log(`
1829
- Claude Transcript Viewer running at http://localhost:${PORT}
1877
+ Claude Transcript Viewer running at ${url}
1830
1878
 
1831
1879
  Serving archive from: ${ARCHIVE_DIR}
1832
1880
  Source directory: ${SOURCE_DIR || "(not configured)"}
1833
1881
 
1834
- Usage:
1835
- npm run dev # Development mode with hot reload
1836
- npm run dev -- /path/to/archive # Specify archive directory
1837
- npm run dev -- /archive /source # Specify both archive and source directory
1838
-
1839
- Open http://localhost:${PORT} to browse transcripts.
1882
+ Options:
1883
+ --no-open Don't auto-open browser
1840
1884
  `);
1885
+ // Auto-open browser unless disabled
1886
+ if (!NO_OPEN && !isCI()) {
1887
+ openBrowser(url);
1888
+ }
1841
1889
  // Start background archive generation and indexing after server is ready (non-blocking)
1842
1890
  if (SOURCE_DIR) {
1843
1891
  setTimeout(async () => {
@@ -1848,4 +1896,17 @@ Open http://localhost:${PORT} to browse transcripts.
1848
1896
  }, 1000);
1849
1897
  }
1850
1898
  });
1899
+ // Graceful shutdown
1900
+ function shutdown() {
1901
+ console.log("\nShutting down...");
1902
+ // Stop embedding server if running
1903
+ if (embeddingServer) {
1904
+ embeddingServer.stop();
1905
+ }
1906
+ // Close database
1907
+ closeDatabase();
1908
+ process.exit(0);
1909
+ }
1910
+ process.on("SIGTERM", shutdown);
1911
+ process.on("SIGINT", shutdown);
1851
1912
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,15 @@
1
1
  {
2
2
  "name": "claude-transcript-viewer",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "description": "Enhanced viewer for Claude Code transcripts with dark mode, infinite scroll, message filtering, and search",
5
5
  "main": "dist/server.js",
6
6
  "type": "module",
7
7
  "bin": {
8
- "claude-transcript-viewer": "./dist/server.js"
8
+ "claude-transcript-viewer": "dist/server.js"
9
9
  },
10
10
  "files": [
11
11
  "dist",
12
+ "python",
12
13
  "README.md"
13
14
  ],
14
15
  "scripts": {
@@ -34,7 +35,7 @@
34
35
  "license": "MIT",
35
36
  "repository": {
36
37
  "type": "git",
37
- "url": "https://github.com/varunr89/claude-transcript-viewer.git"
38
+ "url": "git+https://github.com/varunr89/claude-transcript-viewer.git"
38
39
  },
39
40
  "homepage": "https://github.com/varunr89/claude-transcript-viewer#readme",
40
41
  "bugs": {
@@ -0,0 +1,272 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ MLX Qwen3 Embedding Server for Apple Silicon
4
+ Based on qwen3-embeddings-mlx (https://github.com/jakedahn/qwen3-embeddings-mlx)
5
+
6
+ Provides REST API for generating text embeddings using Qwen3 models on Apple Silicon.
7
+ """
8
+
9
+ import os
10
+ import sys
11
+ import time
12
+ import logging
13
+ import asyncio
14
+ from typing import Optional
15
+ from contextlib import asynccontextmanager
16
+
17
+ # Check for Apple Silicon before importing MLX
18
+ import platform
19
+ if platform.system() != "Darwin" or platform.machine() != "arm64":
20
+ print("Error: This server requires Apple Silicon (M1/M2/M3/M4)", file=sys.stderr)
21
+ sys.exit(1)
22
+
23
+ try:
24
+ import mlx.core as mx
25
+ import mlx.nn as nn
26
+ from mlx_lm import load
27
+ except ImportError as e:
28
+ print(f"Error: MLX not installed. Run: pip install mlx-lm", file=sys.stderr)
29
+ sys.exit(1)
30
+
31
+ from fastapi import FastAPI, HTTPException
32
+ from pydantic import BaseModel, Field
33
+ import numpy as np
34
+ import uvicorn
35
+
36
+ # Configuration
37
+ MODEL_NAME = os.environ.get("MODEL_NAME", "mlx-community/Qwen3-Embedding-0.6B-4bit-DWQ")
38
+ HOST = os.environ.get("HOST", "127.0.0.1")
39
+ PORT = int(os.environ.get("PORT", "8000"))
40
+ MAX_TEXT_LENGTH = int(os.environ.get("MAX_TEXT_LENGTH", "8192"))
41
+ LOG_LEVEL = os.environ.get("LOG_LEVEL", "INFO").upper()
42
+
43
+ # Setup logging
44
+ logging.basicConfig(
45
+ level=getattr(logging, LOG_LEVEL),
46
+ format="%(asctime)s - %(levelname)s - %(message)s"
47
+ )
48
+ logger = logging.getLogger(__name__)
49
+
50
+
51
+ class EmbeddingModel:
52
+ """Manages the Qwen3 embedding model lifecycle."""
53
+
54
+ def __init__(self):
55
+ self.model = None
56
+ self.tokenizer = None
57
+ self.model_name: Optional[str] = None
58
+ self.embedding_dim: Optional[int] = None
59
+ self._lock = asyncio.Lock()
60
+ self._ready = False
61
+
62
+ async def load(self, model_name: str) -> None:
63
+ """Load the embedding model."""
64
+ async with self._lock:
65
+ if self.model_name == model_name and self._ready:
66
+ return
67
+
68
+ logger.info(f"Loading model: {model_name}")
69
+ start = time.time()
70
+
71
+ try:
72
+ self.model, self.tokenizer = load(model_name)
73
+ self.model_name = model_name
74
+
75
+ # Determine embedding dimension from model config
76
+ if hasattr(self.model, 'config'):
77
+ self.embedding_dim = getattr(self.model.config, 'hidden_size', 1024)
78
+ else:
79
+ self.embedding_dim = 1024
80
+
81
+ # Warmup inference
82
+ await self._warmup()
83
+
84
+ self._ready = True
85
+ logger.info(f"Model loaded in {time.time() - start:.2f}s (dim={self.embedding_dim})")
86
+
87
+ except Exception as e:
88
+ logger.error(f"Failed to load model: {e}")
89
+ raise
90
+
91
+ async def _warmup(self) -> None:
92
+ """Run warmup inference to compile Metal kernels."""
93
+ test_texts = ["warmup", "test"]
94
+ for text in test_texts:
95
+ tokens = self.tokenizer.encode(text, return_tensors="np")
96
+ input_ids = mx.array(tokens)
97
+ hidden = self._get_hidden_states(input_ids)
98
+ # Force computation with mx.eval
99
+ mx.eval(hidden)
100
+
101
+ def _get_hidden_states(self, input_ids: mx.array) -> mx.array:
102
+ """Extract hidden states from the model."""
103
+ # Get embeddings from token embedding layer
104
+ if hasattr(self.model.model, 'embed_tokens'):
105
+ hidden_states = self.model.model.embed_tokens(input_ids)
106
+ else:
107
+ hidden_states = self.model.model.wte(input_ids)
108
+
109
+ # Pass through transformer layers
110
+ for layer in self.model.model.layers:
111
+ hidden_states = layer(hidden_states, mask=None)[0] if isinstance(
112
+ layer(hidden_states, mask=None), tuple
113
+ ) else layer(hidden_states, mask=None)
114
+
115
+ # Apply final layer norm
116
+ if hasattr(self.model.model, 'norm'):
117
+ hidden_states = self.model.model.norm(hidden_states)
118
+
119
+ return hidden_states
120
+
121
+ def generate_embedding(self, text: str, normalize: bool = True) -> np.ndarray:
122
+ """Generate embedding for a single text."""
123
+ if not self._ready:
124
+ raise RuntimeError("Model not loaded")
125
+
126
+ # Tokenize with truncation
127
+ tokens = self.tokenizer.encode(
128
+ text,
129
+ max_length=MAX_TEXT_LENGTH,
130
+ truncation=True,
131
+ return_tensors="np"
132
+ )
133
+ input_ids = mx.array(tokens)
134
+
135
+ # Get hidden states
136
+ hidden_states = self._get_hidden_states(input_ids)
137
+
138
+ # Mean pooling across sequence dimension
139
+ embedding = mx.mean(hidden_states, axis=1)
140
+
141
+ # L2 normalize
142
+ if normalize:
143
+ embedding = embedding / mx.linalg.norm(embedding, axis=-1, keepdims=True)
144
+
145
+ # Force computation and convert to numpy via tolist()
146
+ mx.eval(embedding)
147
+ return np.array(embedding.tolist()[0], dtype=np.float32)
148
+
149
+ def generate_embeddings_batch(self, texts: list[str], normalize: bool = True) -> list[np.ndarray]:
150
+ """Generate embeddings for multiple texts."""
151
+ return [self.generate_embedding(text, normalize) for text in texts]
152
+
153
+
154
+ # Global model instance
155
+ embedding_model = EmbeddingModel()
156
+
157
+
158
+ @asynccontextmanager
159
+ async def lifespan(app: FastAPI):
160
+ """Startup and shutdown lifecycle."""
161
+ logger.info(f"Starting Qwen3 Embedding Server on {HOST}:{PORT}")
162
+ await embedding_model.load(MODEL_NAME)
163
+ yield
164
+ logger.info("Shutting down...")
165
+
166
+
167
+ app = FastAPI(
168
+ title="Qwen3 Embedding Server",
169
+ description="MLX-powered embedding server for Apple Silicon",
170
+ lifespan=lifespan
171
+ )
172
+
173
+
174
+ # Request/Response Models
175
+ class EmbedRequest(BaseModel):
176
+ text: str = Field(..., min_length=1)
177
+ normalize: bool = True
178
+
179
+
180
+ class EmbedBatchRequest(BaseModel):
181
+ texts: list[str] = Field(..., min_length=1, max_length=1024)
182
+ normalize: bool = True
183
+
184
+
185
+ class EmbedResponse(BaseModel):
186
+ embedding: list[float]
187
+ tokens: int
188
+ model: str
189
+
190
+
191
+ class EmbedBatchResponse(BaseModel):
192
+ embeddings: list[dict]
193
+ model: str
194
+
195
+
196
+ class HealthResponse(BaseModel):
197
+ status: str
198
+ model: Optional[str] = None
199
+ model_name: Optional[str] = None
200
+ dim: Optional[int] = None
201
+ embedding_dim: Optional[int] = None
202
+
203
+
204
+ # API Endpoints
205
+ @app.get("/health", response_model=HealthResponse)
206
+ async def health():
207
+ """Health check endpoint."""
208
+ if embedding_model._ready:
209
+ return HealthResponse(
210
+ status="ok",
211
+ model=embedding_model.model_name,
212
+ model_name=embedding_model.model_name,
213
+ dim=embedding_model.embedding_dim,
214
+ embedding_dim=embedding_model.embedding_dim
215
+ )
216
+ return HealthResponse(status="loading")
217
+
218
+
219
+ @app.post("/embed", response_model=EmbedResponse)
220
+ async def embed(request: EmbedRequest):
221
+ """Generate embedding for a single text."""
222
+ if not embedding_model._ready:
223
+ raise HTTPException(status_code=503, detail="Model not ready")
224
+
225
+ try:
226
+ start = time.time()
227
+ embedding = embedding_model.generate_embedding(request.text, request.normalize)
228
+ tokens = len(embedding_model.tokenizer.encode(request.text))
229
+
230
+ logger.debug(f"Embedded {tokens} tokens in {(time.time()-start)*1000:.1f}ms")
231
+
232
+ return EmbedResponse(
233
+ embedding=embedding.tolist(),
234
+ tokens=tokens,
235
+ model=embedding_model.model_name
236
+ )
237
+ except Exception as e:
238
+ logger.error(f"Embedding failed: {e}")
239
+ raise HTTPException(status_code=500, detail=str(e))
240
+
241
+
242
+ @app.post("/embed_batch", response_model=EmbedBatchResponse)
243
+ async def embed_batch(request: EmbedBatchRequest):
244
+ """Generate embeddings for multiple texts."""
245
+ if not embedding_model._ready:
246
+ raise HTTPException(status_code=503, detail="Model not ready")
247
+
248
+ try:
249
+ start = time.time()
250
+ embeddings = embedding_model.generate_embeddings_batch(request.texts, request.normalize)
251
+
252
+ results = []
253
+ for i, (text, emb) in enumerate(zip(request.texts, embeddings)):
254
+ tokens = len(embedding_model.tokenizer.encode(text))
255
+ results.append({
256
+ "embedding": emb.tolist(),
257
+ "tokens": tokens
258
+ })
259
+
260
+ logger.debug(f"Batch embedded {len(request.texts)} texts in {(time.time()-start)*1000:.1f}ms")
261
+
262
+ return EmbedBatchResponse(
263
+ embeddings=results,
264
+ model=embedding_model.model_name
265
+ )
266
+ except Exception as e:
267
+ logger.error(f"Batch embedding failed: {e}")
268
+ raise HTTPException(status_code=500, detail=str(e))
269
+
270
+
271
+ if __name__ == "__main__":
272
+ uvicorn.run(app, host=HOST, port=PORT, log_level=LOG_LEVEL.lower())
@@ -0,0 +1,8 @@
1
+ # MLX Qwen3 Embedding Server Dependencies
2
+ # Requires Apple Silicon (M1/M2/M3/M4)
3
+
4
+ mlx-lm>=0.26.0
5
+ fastapi>=0.115.0
6
+ uvicorn[standard]>=0.34.0
7
+ pydantic>=2.10.0
8
+ numpy>=2.0.0