Forked from arkantu/arkantu-core-tools
src / config.ts
import { createConfigSchematics } from "@lmstudio/sdk";
/**
* Configuration for the arkantu-core-tools plugin.
*
* Designed for the Khazad-dum setup (Intel Arc 94 GB iGPU) +
* LMLink → RPi5-raspberrypi5-3-gpu (RX 480 8 GB).
*
* Note about LMLink:
* LMLink transparently routes remote models through the LOCAL endpoint
* of LM Studio (localhost:1234). No separate endpoint needs to be configured — just select the model
* by ID and LM Studio automatically routes it to the correct hardware.
*/
export const pluginConfig = createConfigSchematics()
// ── Workspace ─────────────────────────────────────────────────
.field("workspacePath", "string", {
displayName: "Workspace Path",
subtitle: "Root directory of the workspace. Default: /home/arkantu/workspace",
}, "/home/arkantu/workspace")
// ── Filesystem Tools ─────────────────────────────────
.field("enableFilesystem", "boolean", {
displayName: "Filesystem Tools",
subtitle: "Read, write, search, and navigate files in the workspace.",
}, true)
// ── Command Execution ──────────────────────────────────────
.field("enableShell", "boolean", {
displayName: "Shell Execution",
subtitle: "Execute shell commands (bash). Necessary for builds, npm, pytest, etc.",
}, false)
.field("enablePython", "boolean", {
displayName: "Python Execution",
subtitle: "Execute system Python scripts.",
}, false)
// ── Git ────────────────────────────────────────────────────────
.field("enableGit", "boolean", {
displayName: "Git Tools",
subtitle: "git status, diff, add, commit, log, checkout.",
}, true)
// ── Web ────────────────────────────────────────────────────────
.field("enableWeb", "boolean", {
displayName: "Web Search",
subtitle: "web_search (DuckDuckGo) and fetch_page to retrieve content from URLs.",
}, true)
// ── LMLink Remote Agent ───────────────────────────────────────
// LMLink routes transparently through localhost:1234.
// No separate endpoint is needed — LM Studio manages the routing.
.field("enableLMLink", "boolean", {
displayName: "LMLink Agent (RPi5 / RX480)",
subtitle: "Enable ask_remote_agent to delegate tasks to the model loaded in the remote node (RX 480). LMLink routes via localhost.",
}, true)
// ── System ────────────────────────────────────────────────────
.field("enableSystemInfo", "boolean", {
displayName: "System Info",
subtitle: "get_system_info: displays hardware (CPUs, RAM, GPU) of the local node.",
}, true)
// ── Notifications ─────────────────────────────────────────────
.field("enableNotifications", "boolean", {
displayName: "Desktop Notifications",
subtitle: "send_notification: alerts the user when a long task finishes.",
}, true)
// ── Zotero RAG ──────────────────────────────────────────
.field("enableZotero", "boolean", {
displayName: "Zotero Management",
subtitle: "Activates tools to search papers, view metadata, and read PDFs from your Zotero library.",
}, true)
.field("zoteroDbPath", "string", {
displayName: "Zotero SQLite Path",
subtitle: "Path to the Zotero database file. Default: /home/arkantu/Zotero/zotero.sqlite",
}, "/home/arkantu/Zotero/zotero.sqlite")
.field("zoteroStoragePath", "string", {
displayName: "Zotero Storage Path",
subtitle: "Folder where Zotero stores attached PDFs. Default: /home/arkantu/Zotero/storage",
}, "/home/arkantu/Zotero/storage")
// ── Compact Context ────────────────────────────────────
.field("compactSystemPrompt", "boolean", {
displayName: "Compact System Prompt",
subtitle: "Injects only the list of active tools instead of the full manual. Reduces tokens.",
}, false)
.build();