@appkit/llamacpp-cli 1.2.0 → 1.3.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.
- package/CHANGELOG.md +14 -0
- package/README.md +52 -18
- package/bin/llamacpp +15 -5
- package/dist/cli.js +25 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/config.d.ts +11 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +157 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +2 -0
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +18 -1
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/server-show.d.ts.map +1 -1
- package/dist/commands/server-show.js +5 -1
- package/dist/commands/server-show.js.map +1 -1
- package/dist/lib/config-generator.d.ts +2 -0
- package/dist/lib/config-generator.d.ts.map +1 -1
- package/dist/lib/config-generator.js +7 -2
- package/dist/lib/config-generator.js.map +1 -1
- package/dist/lib/launchctl-manager.d.ts.map +1 -1
- package/dist/lib/launchctl-manager.js +5 -0
- package/dist/lib/launchctl-manager.js.map +1 -1
- package/dist/lib/state-manager.d.ts +4 -0
- package/dist/lib/state-manager.d.ts.map +1 -1
- package/dist/lib/state-manager.js +11 -0
- package/dist/lib/state-manager.js.map +1 -1
- package/dist/types/server-config.d.ts +2 -0
- package/dist/types/server-config.d.ts.map +1 -1
- package/dist/types/server-config.js.map +1 -1
- package/package.json +1 -1
- package/src/cli.ts +25 -0
- package/src/commands/config.ts +177 -0
- package/src/commands/create.ts +22 -1
- package/src/commands/server-show.ts +5 -1
- package/src/lib/config-generator.ts +9 -2
- package/src/lib/launchctl-manager.ts +6 -0
- package/src/lib/state-manager.ts +12 -0
- package/src/types/server-config.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-generator.d.ts","sourceRoot":"","sources":["../../src/lib/config-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAqB,MAAM,wBAAwB,CAAC;AAIzE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config-generator.d.ts","sourceRoot":"","sources":["../../src/lib/config-generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAqB,MAAM,wBAAwB,CAAC;AAIzE,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAe;IAC1B;;OAEG;IACH,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa;IAyB7D;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC;IAgDxB;;OAEG;IACG,uBAAuB,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;CAaxF;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
|
@@ -73,12 +73,14 @@ class ConfigGenerator {
|
|
|
73
73
|
// Calculate smart defaults
|
|
74
74
|
const smartDefaults = this.calculateSmartDefaults(modelSize);
|
|
75
75
|
// Apply user overrides
|
|
76
|
+
const host = options?.host ?? '127.0.0.1'; // Default to localhost (secure)
|
|
76
77
|
const threads = options?.threads ?? smartDefaults.threads;
|
|
77
78
|
const ctxSize = options?.ctxSize ?? smartDefaults.ctxSize;
|
|
78
79
|
const gpuLayers = options?.gpuLayers ?? smartDefaults.gpuLayers;
|
|
79
80
|
const embeddings = options?.embeddings ?? true;
|
|
80
81
|
const jinja = options?.jinja ?? true;
|
|
81
|
-
const verbose = options?.verbose ??
|
|
82
|
+
const verbose = options?.verbose ?? true; // Default to true (HTTP request logging)
|
|
83
|
+
const customFlags = options?.customFlags; // Optional custom flags
|
|
82
84
|
// Generate server ID
|
|
83
85
|
const id = (0, server_config_1.sanitizeModelName)(modelName);
|
|
84
86
|
// Generate paths
|
|
@@ -92,12 +94,14 @@ class ConfigGenerator {
|
|
|
92
94
|
modelPath,
|
|
93
95
|
modelName,
|
|
94
96
|
port,
|
|
97
|
+
host,
|
|
95
98
|
threads,
|
|
96
99
|
ctxSize,
|
|
97
100
|
gpuLayers,
|
|
98
101
|
embeddings,
|
|
99
102
|
jinja,
|
|
100
103
|
verbose,
|
|
104
|
+
customFlags,
|
|
101
105
|
status: 'stopped',
|
|
102
106
|
createdAt: new Date().toISOString(),
|
|
103
107
|
plistPath,
|
|
@@ -113,12 +117,13 @@ class ConfigGenerator {
|
|
|
113
117
|
async mergeWithGlobalDefaults(options) {
|
|
114
118
|
const globalConfig = await state_manager_1.stateManager.loadGlobalConfig();
|
|
115
119
|
return {
|
|
120
|
+
host: options?.host ?? '127.0.0.1',
|
|
116
121
|
threads: options?.threads ?? globalConfig.defaults.threads,
|
|
117
122
|
ctxSize: options?.ctxSize ?? globalConfig.defaults.ctxSize,
|
|
118
123
|
gpuLayers: options?.gpuLayers ?? globalConfig.defaults.gpuLayers,
|
|
119
124
|
embeddings: options?.embeddings ?? true,
|
|
120
125
|
jinja: options?.jinja ?? true,
|
|
121
|
-
verbose: options?.verbose ??
|
|
126
|
+
verbose: options?.verbose ?? true,
|
|
122
127
|
};
|
|
123
128
|
}
|
|
124
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-generator.js","sourceRoot":"","sources":["../../src/lib/config-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,0DAAyE;AACzE,oDAAqE;AACrE,mDAA+C;
|
|
1
|
+
{"version":3,"file":"config-generator.js","sourceRoot":"","sources":["../../src/lib/config-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,0DAAyE;AACzE,oDAAqE;AACrE,mDAA+C;AAoB/C,MAAa,eAAe;IAC1B;;OAEG;IACH,sBAAsB,CAAC,cAAsB;QAC3C,MAAM,MAAM,GAAG,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAE5C,mCAAmC;QACnC,IAAI,OAAe,CAAC;QACpB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,GAAG,IAAI,CAAC,CAAQ,uBAAuB;QAChD,CAAC;aAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC,CAAQ,gBAAgB;QACzC,CAAC;aAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC,CAAQ,eAAe;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,KAAK,CAAC,CAAO,mBAAmB;QAC5C,CAAC;QAED,4CAA4C;QAC5C,MAAM,SAAS,GAAG,EAAE,CAAC,CAAE,uCAAuC;QAE9D,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;QAEtD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,SAAiB,EACjB,SAAiB,EACjB,SAAiB,EACjB,IAAY,EACZ,OAAuB;QAEvB,2BAA2B;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAE7D,uBAAuB;QACvB,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,WAAW,CAAC,CAAE,gCAAgC;QAC5E,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;QAC1D,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;QAC1D,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC;QAChE,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;QAC/C,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC;QACrC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAE,yCAAyC;QACpF,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC,CAAE,wBAAwB;QAEnE,qBAAqB;QACrB,MAAM,EAAE,GAAG,IAAA,iCAAiB,EAAC,SAAS,CAAC,CAAC;QAExC,iBAAiB;QACjB,MAAM,KAAK,GAAG,aAAa,EAAE,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAA,+BAAkB,GAAE,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,IAAA,uBAAU,GAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAiB;YAC3B,EAAE;YACF,SAAS;YACT,SAAS;YACT,IAAI;YACJ,IAAI;YACJ,OAAO;YACP,OAAO;YACP,SAAS;YACT,UAAU;YACV,KAAK;YACL,OAAO;YACP,WAAW;YACX,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS;YACT,KAAK;YACL,UAAU;YACV,UAAU;SACX,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,OAAuB;QACnD,MAAM,YAAY,GAAG,MAAM,4BAAY,CAAC,gBAAgB,EAAE,CAAC;QAE3D,OAAO;YACL,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,WAAW;YAClC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO;YAC1D,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO;YAC1D,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS;YAChE,UAAU,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;YACvC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;YAC7B,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI;SAClC,CAAC;IACJ,CAAC;CACF;AAtGD,0CAsGC;AAED,4BAA4B;AACf,QAAA,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launchctl-manager.d.ts","sourceRoot":"","sources":["../../src/lib/launchctl-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"launchctl-manager.d.ts","sourceRoot":"","sources":["../../src/lib/launchctl-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAqE3C;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA4C7D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5E;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC;CAW5E;AAGD,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
|
|
@@ -46,6 +46,7 @@ class LaunchctlManager {
|
|
|
46
46
|
const args = [
|
|
47
47
|
'/opt/homebrew/bin/llama-server',
|
|
48
48
|
'--model', config.modelPath,
|
|
49
|
+
'--host', config.host,
|
|
49
50
|
'--port', config.port.toString(),
|
|
50
51
|
'--threads', config.threads.toString(),
|
|
51
52
|
'--ctx-size', config.ctxSize.toString(),
|
|
@@ -60,6 +61,10 @@ class LaunchctlManager {
|
|
|
60
61
|
if (config.verbose) {
|
|
61
62
|
args.push('--log-verbose');
|
|
62
63
|
}
|
|
64
|
+
// Add custom flags
|
|
65
|
+
if (config.customFlags && config.customFlags.length > 0) {
|
|
66
|
+
args.push(...config.customFlags);
|
|
67
|
+
}
|
|
63
68
|
// Generate XML array elements
|
|
64
69
|
const argsXml = args.map(arg => ` <string>${arg}</string>`).join('\n');
|
|
65
70
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launchctl-manager.js","sourceRoot":"","sources":["../../src/lib/launchctl-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"launchctl-manager.js","sourceRoot":"","sources":["../../src/lib/launchctl-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,10 @@ export declare class StateManager {
|
|
|
26
26
|
* Save a server configuration
|
|
27
27
|
*/
|
|
28
28
|
saveServerConfig(config: ServerConfig): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Update a server configuration with partial changes
|
|
31
|
+
*/
|
|
32
|
+
updateServerConfig(id: string, updates: Partial<ServerConfig>): Promise<void>;
|
|
29
33
|
/**
|
|
30
34
|
* Delete a server configuration
|
|
31
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../src/lib/state-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAyB,MAAM,wBAAwB,CAAC;AAc7E,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAS;;IASjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC;IAK/C;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAQhE;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAmB9C;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKlE;;OAEG;IACG,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiBvE;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAYlE;;OAEG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/D;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAI3C;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../src/lib/state-manager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAyB,MAAM,wBAAwB,CAAC;AAc7E,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAS;;IASjC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC;IAK/C;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;OAEG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAQhE;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASnF;;OAEG;IACG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAmB9C;;OAEG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKlE;;OAEG;IACG,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAiBvE;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAYlE;;OAEG;IACG,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK/D;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;CAI3C;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -92,6 +92,17 @@ class StateManager {
|
|
|
92
92
|
const configPath = path.join(this.serversDir, `${config.id}.json`);
|
|
93
93
|
await (0, file_utils_1.writeJsonAtomic)(configPath, config);
|
|
94
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Update a server configuration with partial changes
|
|
97
|
+
*/
|
|
98
|
+
async updateServerConfig(id, updates) {
|
|
99
|
+
const existingConfig = await this.loadServerConfig(id);
|
|
100
|
+
if (!existingConfig) {
|
|
101
|
+
throw new Error(`Server configuration not found: ${id}`);
|
|
102
|
+
}
|
|
103
|
+
const updatedConfig = { ...existingConfig, ...updates };
|
|
104
|
+
await this.saveServerConfig(updatedConfig);
|
|
105
|
+
}
|
|
95
106
|
/**
|
|
96
107
|
* Delete a server configuration
|
|
97
108
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../src/lib/state-manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"state-manager.js","sourceRoot":"","sources":["../../src/lib/state-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,14 @@ export interface ServerConfig {
|
|
|
4
4
|
modelPath: string;
|
|
5
5
|
modelName: string;
|
|
6
6
|
port: number;
|
|
7
|
+
host: string;
|
|
7
8
|
threads: number;
|
|
8
9
|
ctxSize: number;
|
|
9
10
|
gpuLayers: number;
|
|
10
11
|
embeddings: boolean;
|
|
11
12
|
jinja: boolean;
|
|
12
13
|
verbose: boolean;
|
|
14
|
+
customFlags?: string[];
|
|
13
15
|
status: ServerStatus;
|
|
14
16
|
pid?: number;
|
|
15
17
|
createdAt: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/types/server-config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IAGb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/types/server-config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IAGb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAGvB,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IAGd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAM3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/types/server-config.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/types/server-config.ts"],"names":[],"mappings":";;AAsCA,8CAMC;AAVD;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,OAAO,SAAS;SACb,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAW,yBAAyB;SAC3D,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAI,wCAAwC;SAC1E,WAAW,EAAE,CAAsB,YAAY;SAC/C,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAU,yBAAyB;AAChE,CAAC"}
|
package/package.json
CHANGED
package/src/cli.ts
CHANGED
|
@@ -15,6 +15,7 @@ import { logsCommand } from './commands/logs';
|
|
|
15
15
|
import { searchCommand } from './commands/search';
|
|
16
16
|
import { showCommand } from './commands/show';
|
|
17
17
|
import { serverShowCommand } from './commands/server-show';
|
|
18
|
+
import { serverConfigCommand } from './commands/config';
|
|
18
19
|
|
|
19
20
|
const program = new Command();
|
|
20
21
|
|
|
@@ -122,10 +123,12 @@ server
|
|
|
122
123
|
.description('Create and start a new llama-server instance')
|
|
123
124
|
.argument('<model>', 'Model filename or path')
|
|
124
125
|
.option('-p, --port <number>', 'Port number (default: auto-assign)', parseInt)
|
|
126
|
+
.option('-h, --host <address>', 'Bind address (default: 127.0.0.1, use 0.0.0.0 for remote access)')
|
|
125
127
|
.option('-t, --threads <number>', 'Thread count (default: auto)', parseInt)
|
|
126
128
|
.option('-c, --ctx-size <number>', 'Context size (default: auto)', parseInt)
|
|
127
129
|
.option('-g, --gpu-layers <number>', 'GPU layers (default: 60)', parseInt)
|
|
128
130
|
.option('-v, --verbose', 'Enable verbose HTTP logging (detailed request/response info)')
|
|
131
|
+
.option('-f, --flags <flags>', 'Additional llama-server flags (comma-separated, e.g., "--pooling,mean")')
|
|
129
132
|
.action(async (model: string, options) => {
|
|
130
133
|
try {
|
|
131
134
|
await createCommand(model, options);
|
|
@@ -149,6 +152,28 @@ server
|
|
|
149
152
|
}
|
|
150
153
|
});
|
|
151
154
|
|
|
155
|
+
// Update server configuration
|
|
156
|
+
server
|
|
157
|
+
.command('config')
|
|
158
|
+
.description('Update server configuration parameters')
|
|
159
|
+
.argument('<identifier>', 'Server identifier: port (9000), server ID (llama-3-2-3b), or partial model name')
|
|
160
|
+
.option('-h, --host <address>', 'Update bind address (127.0.0.1 for localhost, 0.0.0.0 for remote access)')
|
|
161
|
+
.option('-t, --threads <number>', 'Update thread count', parseInt)
|
|
162
|
+
.option('-c, --ctx-size <number>', 'Update context size', parseInt)
|
|
163
|
+
.option('-g, --gpu-layers <number>', 'Update GPU layers', parseInt)
|
|
164
|
+
.option('-v, --verbose', 'Enable verbose logging')
|
|
165
|
+
.option('--no-verbose', 'Disable verbose logging')
|
|
166
|
+
.option('-f, --flags <flags>', 'Update custom llama-server flags (comma-separated, empty string to clear)')
|
|
167
|
+
.option('-r, --restart', 'Automatically restart server if running')
|
|
168
|
+
.action(async (identifier: string, options) => {
|
|
169
|
+
try {
|
|
170
|
+
await serverConfigCommand(identifier, options);
|
|
171
|
+
} catch (error) {
|
|
172
|
+
console.error(chalk.red('❌ Error:'), (error as Error).message);
|
|
173
|
+
process.exit(1);
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
|
|
152
177
|
// Start an existing server
|
|
153
178
|
server
|
|
154
179
|
.command('start')
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { stateManager } from '../lib/state-manager';
|
|
3
|
+
import { statusChecker } from '../lib/status-checker';
|
|
4
|
+
import { launchctlManager } from '../lib/launchctl-manager';
|
|
5
|
+
import { configGenerator } from '../lib/config-generator';
|
|
6
|
+
|
|
7
|
+
export interface ConfigUpdateOptions {
|
|
8
|
+
host?: string;
|
|
9
|
+
threads?: number;
|
|
10
|
+
ctxSize?: number;
|
|
11
|
+
gpuLayers?: number;
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
flags?: string;
|
|
14
|
+
restart?: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export async function serverConfigCommand(
|
|
18
|
+
identifier: string,
|
|
19
|
+
options: ConfigUpdateOptions
|
|
20
|
+
): Promise<void> {
|
|
21
|
+
// Find the server
|
|
22
|
+
const server = await stateManager.findServer(identifier);
|
|
23
|
+
|
|
24
|
+
if (!server) {
|
|
25
|
+
console.error(chalk.red(`❌ Server not found: ${identifier}`));
|
|
26
|
+
console.log(chalk.dim('\nAvailable servers:'));
|
|
27
|
+
const allServers = await stateManager.getAllServers();
|
|
28
|
+
if (allServers.length === 0) {
|
|
29
|
+
console.log(chalk.dim(' (none)'));
|
|
30
|
+
console.log(chalk.dim('\nCreate a server: llamacpp server create <model-filename>'));
|
|
31
|
+
} else {
|
|
32
|
+
allServers.forEach(s => {
|
|
33
|
+
console.log(chalk.dim(` - ${s.id} (port ${s.port})`));
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Check if any config options were provided
|
|
40
|
+
const hasChanges = options.host !== undefined ||
|
|
41
|
+
options.threads !== undefined ||
|
|
42
|
+
options.ctxSize !== undefined ||
|
|
43
|
+
options.gpuLayers !== undefined ||
|
|
44
|
+
options.verbose !== undefined ||
|
|
45
|
+
options.flags !== undefined;
|
|
46
|
+
|
|
47
|
+
if (!hasChanges) {
|
|
48
|
+
console.error(chalk.red('❌ No configuration changes specified'));
|
|
49
|
+
console.log(chalk.dim('\nAvailable options:'));
|
|
50
|
+
console.log(chalk.dim(' --host <address> Bind address (127.0.0.1 or 0.0.0.0)'));
|
|
51
|
+
console.log(chalk.dim(' --threads <n> Number of threads'));
|
|
52
|
+
console.log(chalk.dim(' --ctx-size <n> Context size'));
|
|
53
|
+
console.log(chalk.dim(' --gpu-layers <n> GPU layers'));
|
|
54
|
+
console.log(chalk.dim(' --verbose Enable verbose logging'));
|
|
55
|
+
console.log(chalk.dim(' --no-verbose Disable verbose logging'));
|
|
56
|
+
console.log(chalk.dim(' --flags <flags> Custom llama-server flags (comma-separated)'));
|
|
57
|
+
console.log(chalk.dim(' --restart Auto-restart if running'));
|
|
58
|
+
console.log(chalk.dim('\nExample:'));
|
|
59
|
+
console.log(chalk.dim(` llamacpp server config ${server.id} --ctx-size 8192 --restart`));
|
|
60
|
+
console.log(chalk.dim(` llamacpp server config ${server.id} --flags="--pooling,mean" --restart`));
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Check current status
|
|
65
|
+
const updatedServer = await statusChecker.updateServerStatus(server);
|
|
66
|
+
const wasRunning = updatedServer.status === 'running';
|
|
67
|
+
|
|
68
|
+
if (wasRunning && !options.restart) {
|
|
69
|
+
console.warn(chalk.yellow('⚠️ Server is currently running'));
|
|
70
|
+
console.log(chalk.dim('Changes will require a restart to take effect.'));
|
|
71
|
+
console.log(chalk.dim('Use --restart flag to automatically restart the server.\n'));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Show what will change
|
|
75
|
+
console.log(chalk.bold('Configuration Changes:'));
|
|
76
|
+
console.log('─'.repeat(70));
|
|
77
|
+
|
|
78
|
+
if (options.host !== undefined) {
|
|
79
|
+
console.log(`${chalk.bold('Host:')} ${chalk.dim(server.host)} → ${chalk.green(options.host)}`);
|
|
80
|
+
|
|
81
|
+
// Security warning for 0.0.0.0
|
|
82
|
+
if (options.host === '0.0.0.0') {
|
|
83
|
+
console.log(chalk.yellow('\n⚠️ WARNING: Binding to 0.0.0.0 allows remote access from any network interface.'));
|
|
84
|
+
console.log(chalk.yellow(' This exposes your server to your local network and potentially the internet.'));
|
|
85
|
+
console.log(chalk.yellow(' Use 127.0.0.1 for localhost-only access (recommended for local development).\n'));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (options.threads !== undefined) {
|
|
89
|
+
console.log(`${chalk.bold('Threads:')} ${chalk.dim(server.threads.toString())} → ${chalk.green(options.threads.toString())}`);
|
|
90
|
+
}
|
|
91
|
+
if (options.ctxSize !== undefined) {
|
|
92
|
+
console.log(`${chalk.bold('Context Size:')} ${chalk.dim(server.ctxSize.toLocaleString())} → ${chalk.green(options.ctxSize.toLocaleString())}`);
|
|
93
|
+
}
|
|
94
|
+
if (options.gpuLayers !== undefined) {
|
|
95
|
+
console.log(`${chalk.bold('GPU Layers:')} ${chalk.dim(server.gpuLayers.toString())} → ${chalk.green(options.gpuLayers.toString())}`);
|
|
96
|
+
}
|
|
97
|
+
if (options.verbose !== undefined) {
|
|
98
|
+
const oldValue = server.verbose ? 'enabled' : 'disabled';
|
|
99
|
+
const newValue = options.verbose ? 'enabled' : 'disabled';
|
|
100
|
+
console.log(`${chalk.bold('Verbose Logs:')} ${chalk.dim(oldValue)} → ${chalk.green(newValue)}`);
|
|
101
|
+
}
|
|
102
|
+
if (options.flags !== undefined) {
|
|
103
|
+
const oldValue = server.customFlags?.join(' ') || 'none';
|
|
104
|
+
const newValue = options.flags || 'none';
|
|
105
|
+
console.log(`${chalk.bold('Custom Flags:')} ${chalk.dim(oldValue)} → ${chalk.green(newValue)}`);
|
|
106
|
+
}
|
|
107
|
+
console.log('');
|
|
108
|
+
|
|
109
|
+
// Unload service if running and restart flag is set (forces plist re-read)
|
|
110
|
+
if (wasRunning && options.restart) {
|
|
111
|
+
console.log(chalk.dim('Stopping server...'));
|
|
112
|
+
await launchctlManager.stopService(server.label);
|
|
113
|
+
await launchctlManager.unloadService(server.plistPath);
|
|
114
|
+
|
|
115
|
+
// Wait a moment for clean shutdown
|
|
116
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Parse custom flags if provided
|
|
120
|
+
let customFlags: string[] | undefined;
|
|
121
|
+
if (options.flags !== undefined) {
|
|
122
|
+
if (options.flags === '') {
|
|
123
|
+
// Empty string means clear flags
|
|
124
|
+
customFlags = undefined;
|
|
125
|
+
} else {
|
|
126
|
+
customFlags = options.flags.split(',').map(f => f.trim()).filter(f => f.length > 0);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Update configuration
|
|
131
|
+
const updatedConfig = {
|
|
132
|
+
...server,
|
|
133
|
+
...(options.host !== undefined && { host: options.host }),
|
|
134
|
+
...(options.threads !== undefined && { threads: options.threads }),
|
|
135
|
+
...(options.ctxSize !== undefined && { ctxSize: options.ctxSize }),
|
|
136
|
+
...(options.gpuLayers !== undefined && { gpuLayers: options.gpuLayers }),
|
|
137
|
+
...(options.verbose !== undefined && { verbose: options.verbose }),
|
|
138
|
+
...(options.flags !== undefined && { customFlags }),
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
await stateManager.updateServerConfig(server.id, updatedConfig);
|
|
142
|
+
|
|
143
|
+
// Regenerate plist with new configuration
|
|
144
|
+
console.log(chalk.dim('Regenerating service configuration...'));
|
|
145
|
+
await launchctlManager.createPlist(updatedConfig);
|
|
146
|
+
|
|
147
|
+
// Restart server if it was running and restart flag is set
|
|
148
|
+
if (wasRunning && options.restart) {
|
|
149
|
+
console.log(chalk.dim('Starting server with new configuration...'));
|
|
150
|
+
await launchctlManager.loadService(updatedConfig.plistPath);
|
|
151
|
+
await launchctlManager.startService(updatedConfig.label);
|
|
152
|
+
|
|
153
|
+
// Wait and verify
|
|
154
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
155
|
+
const finalStatus = await statusChecker.updateServerStatus(updatedConfig);
|
|
156
|
+
|
|
157
|
+
if (finalStatus.status === 'running') {
|
|
158
|
+
console.log(chalk.green(`✅ Server restarted successfully with new configuration`));
|
|
159
|
+
console.log(chalk.dim(` Port: http://localhost:${finalStatus.port}`));
|
|
160
|
+
if (finalStatus.pid) {
|
|
161
|
+
console.log(chalk.dim(` PID: ${finalStatus.pid}`));
|
|
162
|
+
}
|
|
163
|
+
} else {
|
|
164
|
+
console.error(chalk.red('❌ Server failed to start with new configuration'));
|
|
165
|
+
console.log(chalk.dim(' Check logs: ') + `llamacpp server logs ${server.id} --errors`);
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
} else {
|
|
169
|
+
console.log(chalk.green('✅ Configuration updated successfully'));
|
|
170
|
+
if (wasRunning && !options.restart) {
|
|
171
|
+
console.log(chalk.yellow('\n⚠️ Server is still running with old configuration'));
|
|
172
|
+
console.log(chalk.dim(' Restart to apply changes: ') + `llamacpp server stop ${server.id} && llamacpp server start ${server.id}`);
|
|
173
|
+
} else if (!wasRunning) {
|
|
174
|
+
console.log(chalk.dim('\n Start server: ') + `llamacpp server start ${server.id}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
package/src/commands/create.ts
CHANGED
|
@@ -12,10 +12,12 @@ import { ensureDir } from '../utils/file-utils';
|
|
|
12
12
|
|
|
13
13
|
interface CreateOptions {
|
|
14
14
|
port?: number;
|
|
15
|
+
host?: string;
|
|
15
16
|
threads?: number;
|
|
16
17
|
ctxSize?: number;
|
|
17
18
|
gpuLayers?: number;
|
|
18
19
|
verbose?: boolean;
|
|
20
|
+
flags?: string;
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
export async function createCommand(model: string, options: CreateOptions): Promise<void> {
|
|
@@ -63,12 +65,20 @@ export async function createCommand(model: string, options: CreateOptions): Prom
|
|
|
63
65
|
// 6. Generate server configuration
|
|
64
66
|
console.log(chalk.blue(`🚀 Creating server for ${modelName}\n`));
|
|
65
67
|
|
|
68
|
+
// Parse custom flags if provided
|
|
69
|
+
let customFlags: string[] | undefined;
|
|
70
|
+
if (options.flags) {
|
|
71
|
+
customFlags = options.flags.split(',').map(f => f.trim()).filter(f => f.length > 0);
|
|
72
|
+
}
|
|
73
|
+
|
|
66
74
|
const serverOptions: ServerOptions = {
|
|
67
75
|
port: options.port,
|
|
76
|
+
host: options.host,
|
|
68
77
|
threads: options.threads,
|
|
69
78
|
ctxSize: options.ctxSize,
|
|
70
79
|
gpuLayers: options.gpuLayers,
|
|
71
80
|
verbose: options.verbose,
|
|
81
|
+
customFlags,
|
|
72
82
|
};
|
|
73
83
|
|
|
74
84
|
const config = await configGenerator.generateConfig(
|
|
@@ -79,14 +89,25 @@ export async function createCommand(model: string, options: CreateOptions): Prom
|
|
|
79
89
|
serverOptions
|
|
80
90
|
);
|
|
81
91
|
|
|
92
|
+
// Security warning for 0.0.0.0
|
|
93
|
+
if (config.host === '0.0.0.0') {
|
|
94
|
+
console.log(chalk.yellow('⚠️ WARNING: Binding to 0.0.0.0 allows remote access from any network interface.'));
|
|
95
|
+
console.log(chalk.yellow(' This exposes your server to your local network and potentially the internet.'));
|
|
96
|
+
console.log(chalk.yellow(' Use 127.0.0.1 for localhost-only access (recommended for local development).\n'));
|
|
97
|
+
}
|
|
98
|
+
|
|
82
99
|
// Display configuration
|
|
83
100
|
console.log(chalk.dim(`Model: ${modelPath}`));
|
|
84
101
|
console.log(chalk.dim(`Size: ${formatBytes(modelSize)}`));
|
|
102
|
+
console.log(chalk.dim(`Host: ${config.host}`));
|
|
85
103
|
console.log(chalk.dim(`Port: ${config.port}${options.port ? '' : ' (auto-assigned)'}`));
|
|
86
104
|
console.log(chalk.dim(`Threads: ${config.threads}`));
|
|
87
105
|
console.log(chalk.dim(`Context Size: ${config.ctxSize}`));
|
|
88
106
|
console.log(chalk.dim(`GPU Layers: ${config.gpuLayers}`));
|
|
89
107
|
console.log(chalk.dim(`Verbose Logging: ${config.verbose ? 'enabled' : 'disabled'}`));
|
|
108
|
+
if (config.customFlags && config.customFlags.length > 0) {
|
|
109
|
+
console.log(chalk.dim(`Custom Flags: ${config.customFlags.join(' ')}`));
|
|
110
|
+
}
|
|
90
111
|
console.log();
|
|
91
112
|
|
|
92
113
|
// 7. Ensure log directory exists
|
|
@@ -137,7 +158,7 @@ export async function createCommand(model: string, options: CreateOptions): Prom
|
|
|
137
158
|
console.log();
|
|
138
159
|
console.log(chalk.green('✅ Server created and started successfully!'));
|
|
139
160
|
console.log();
|
|
140
|
-
console.log(chalk.dim(`Connect: http
|
|
161
|
+
console.log(chalk.dim(`Connect: http://${config.host}:${config.port}`));
|
|
141
162
|
console.log(chalk.dim(`View logs: llamacpp server logs ${config.id}`));
|
|
142
163
|
console.log(chalk.dim(`Stop: llamacpp server stop ${config.id}`));
|
|
143
164
|
}
|
|
@@ -35,7 +35,8 @@ export async function serverShowCommand(identifier: string): Promise<void> {
|
|
|
35
35
|
console.log(`${chalk.bold('Server ID:')} ${updatedServer.id}`);
|
|
36
36
|
console.log(`${chalk.bold('Model Name:')} ${updatedServer.modelName}`);
|
|
37
37
|
console.log(`${chalk.bold('Model Path:')} ${chalk.dim(updatedServer.modelPath)}`);
|
|
38
|
-
console.log(`${chalk.bold('
|
|
38
|
+
console.log(`${chalk.bold('Host:')} ${updatedServer.host}`);
|
|
39
|
+
console.log(`${chalk.bold('Port:')} http://${updatedServer.host}:${updatedServer.port}`);
|
|
39
40
|
|
|
40
41
|
// Status with color
|
|
41
42
|
let statusText: string;
|
|
@@ -84,6 +85,9 @@ export async function serverShowCommand(identifier: string): Promise<void> {
|
|
|
84
85
|
console.log(`${chalk.bold('Embeddings:')} ${updatedServer.embeddings ? 'enabled' : 'disabled'}`);
|
|
85
86
|
console.log(`${chalk.bold('Jinja:')} ${updatedServer.jinja ? 'enabled' : 'disabled'}`);
|
|
86
87
|
console.log(`${chalk.bold('Verbose Logs:')} ${updatedServer.verbose ? chalk.green('enabled') : chalk.dim('disabled')}`);
|
|
88
|
+
if (updatedServer.customFlags && updatedServer.customFlags.length > 0) {
|
|
89
|
+
console.log(`${chalk.bold('Custom Flags:')} ${updatedServer.customFlags.join(' ')}`);
|
|
90
|
+
}
|
|
87
91
|
|
|
88
92
|
// Timestamps section
|
|
89
93
|
console.log('\n' + '─'.repeat(70));
|
|
@@ -6,12 +6,14 @@ import { stateManager } from './state-manager';
|
|
|
6
6
|
|
|
7
7
|
export interface ServerOptions {
|
|
8
8
|
port?: number;
|
|
9
|
+
host?: string;
|
|
9
10
|
threads?: number;
|
|
10
11
|
ctxSize?: number;
|
|
11
12
|
gpuLayers?: number;
|
|
12
13
|
embeddings?: boolean;
|
|
13
14
|
jinja?: boolean;
|
|
14
15
|
verbose?: boolean;
|
|
16
|
+
customFlags?: string[];
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
export interface SmartDefaults {
|
|
@@ -63,12 +65,14 @@ export class ConfigGenerator {
|
|
|
63
65
|
const smartDefaults = this.calculateSmartDefaults(modelSize);
|
|
64
66
|
|
|
65
67
|
// Apply user overrides
|
|
68
|
+
const host = options?.host ?? '127.0.0.1'; // Default to localhost (secure)
|
|
66
69
|
const threads = options?.threads ?? smartDefaults.threads;
|
|
67
70
|
const ctxSize = options?.ctxSize ?? smartDefaults.ctxSize;
|
|
68
71
|
const gpuLayers = options?.gpuLayers ?? smartDefaults.gpuLayers;
|
|
69
72
|
const embeddings = options?.embeddings ?? true;
|
|
70
73
|
const jinja = options?.jinja ?? true;
|
|
71
|
-
const verbose = options?.verbose ??
|
|
74
|
+
const verbose = options?.verbose ?? true; // Default to true (HTTP request logging)
|
|
75
|
+
const customFlags = options?.customFlags; // Optional custom flags
|
|
72
76
|
|
|
73
77
|
// Generate server ID
|
|
74
78
|
const id = sanitizeModelName(modelName);
|
|
@@ -85,12 +89,14 @@ export class ConfigGenerator {
|
|
|
85
89
|
modelPath,
|
|
86
90
|
modelName,
|
|
87
91
|
port,
|
|
92
|
+
host,
|
|
88
93
|
threads,
|
|
89
94
|
ctxSize,
|
|
90
95
|
gpuLayers,
|
|
91
96
|
embeddings,
|
|
92
97
|
jinja,
|
|
93
98
|
verbose,
|
|
99
|
+
customFlags,
|
|
94
100
|
status: 'stopped',
|
|
95
101
|
createdAt: new Date().toISOString(),
|
|
96
102
|
plistPath,
|
|
@@ -109,12 +115,13 @@ export class ConfigGenerator {
|
|
|
109
115
|
const globalConfig = await stateManager.loadGlobalConfig();
|
|
110
116
|
|
|
111
117
|
return {
|
|
118
|
+
host: options?.host ?? '127.0.0.1',
|
|
112
119
|
threads: options?.threads ?? globalConfig.defaults.threads,
|
|
113
120
|
ctxSize: options?.ctxSize ?? globalConfig.defaults.ctxSize,
|
|
114
121
|
gpuLayers: options?.gpuLayers ?? globalConfig.defaults.gpuLayers,
|
|
115
122
|
embeddings: options?.embeddings ?? true,
|
|
116
123
|
jinja: options?.jinja ?? true,
|
|
117
|
-
verbose: options?.verbose ??
|
|
124
|
+
verbose: options?.verbose ?? true,
|
|
118
125
|
};
|
|
119
126
|
}
|
|
120
127
|
}
|
|
@@ -20,6 +20,7 @@ export class LaunchctlManager {
|
|
|
20
20
|
const args = [
|
|
21
21
|
'/opt/homebrew/bin/llama-server',
|
|
22
22
|
'--model', config.modelPath,
|
|
23
|
+
'--host', config.host,
|
|
23
24
|
'--port', config.port.toString(),
|
|
24
25
|
'--threads', config.threads.toString(),
|
|
25
26
|
'--ctx-size', config.ctxSize.toString(),
|
|
@@ -35,6 +36,11 @@ export class LaunchctlManager {
|
|
|
35
36
|
args.push('--log-verbose');
|
|
36
37
|
}
|
|
37
38
|
|
|
39
|
+
// Add custom flags
|
|
40
|
+
if (config.customFlags && config.customFlags.length > 0) {
|
|
41
|
+
args.push(...config.customFlags);
|
|
42
|
+
}
|
|
43
|
+
|
|
38
44
|
// Generate XML array elements
|
|
39
45
|
const argsXml = args.map(arg => ` <string>${arg}</string>`).join('\n');
|
|
40
46
|
|
package/src/lib/state-manager.ts
CHANGED
|
@@ -81,6 +81,18 @@ export class StateManager {
|
|
|
81
81
|
await writeJsonAtomic(configPath, config);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Update a server configuration with partial changes
|
|
86
|
+
*/
|
|
87
|
+
async updateServerConfig(id: string, updates: Partial<ServerConfig>): Promise<void> {
|
|
88
|
+
const existingConfig = await this.loadServerConfig(id);
|
|
89
|
+
if (!existingConfig) {
|
|
90
|
+
throw new Error(`Server configuration not found: ${id}`);
|
|
91
|
+
}
|
|
92
|
+
const updatedConfig = { ...existingConfig, ...updates };
|
|
93
|
+
await this.saveServerConfig(updatedConfig);
|
|
94
|
+
}
|
|
95
|
+
|
|
84
96
|
/**
|
|
85
97
|
* Delete a server configuration
|
|
86
98
|
*/
|