Documentation
Advanced config
advanced.yaml, embeddings, search, clustering, AI timeouts, and prompts for power users.
Everything in Settings has a sensible default. For the knobs that don’t
belong in a Settings window, there is advanced.yaml:
~/Library/Containers/com.gisti.app/Data/Library/Application Support/com.gisti.app/advanced.yaml
Settings → Storage → Location opens that folder directly in Finder – easier than typing the path by hand. Create the file, add only the keys you want to change, restart Gisti. Missing keys keep their defaults.
Sections
embedding:
modelId: mlx-community/Qwen3-Embedding-0.6B-4bit-DWQ
queryInstruction: "Retrieve relevant documents and notes matching the search query"
maxTokenLength: 1024
maxBatchSize: 4
gpuCacheLimitMb: 512
maxTextLength: 4000
indexBatchSize: 8
indexBatchSleepMs: 200
textChunkPreviewLength: 200
search:
minSimilarity: 0.4 # semantic match threshold
topK: 20 # candidates per search
similarTopK: 5 # candidates for the "Similar" accordion
similarMinSimilarity: 0.55
topicsTopK: 50 # candidates feeding Topics clustering
rrfK: 60 # Reciprocal Rank Fusion constant (hybrid search)
debounceMs: 250
itemTextCap: 16384 # per-item text length fed to the index
fuzzy:
minWordLength: 4 # shorter words match exactly only
maxEditDistance: 1 # typos tolerated per word
exactMatchSkipThreshold: 20
maxResults: 5
clustering:
maxIterations: 30 # KMeans iteration cap
maxTopics: 11 # upper bound for Topics mode
minVectors: 4 # elements needed to form a topic
labelCandidateCount: 20
aiTimeouts:
summarizeSeconds: 60
chatSeconds: 120
titleSeconds: 30
testSeconds: 10
aiLimits:
summarizeInputMaxChars: 10000
summarizeMaxTokens: 8192
chatMaxTokens: 4096
titleMaxTokens: 32
attachmentTextMaxChars: 20000
attachmentImageMaxDimension: 1568
attachmentMaxFileBytes: 10485760
attachmentImageMaxFileBytes: 52428800
digestInputMaxChars: 20000 # char budget for the Gist-mode digest prompt
digestItemsPerTypeMax: 50 # per-type item cap when sampling for the digest
clipboard:
pollIntervalSeconds: 0.2
maxTextLength: 5000000 # 0 disables the limit; longer copies are skipped, not truncated
peek:
holdDelaySeconds: 0.30 # Force Touch hold before the preview appears
fadeOutSeconds: 0.15
pressureOpacityBase: 0.3 # opacity ramp while building up Force Touch pressure
pressureOpacityGain: 0.58
snap:
topOffset: 150 # px from the top edge when snapping the window
prompts:
summarization: >
You are a concise summarization assistant. ...
dailyDigest: >
Create a digest based on the following notes, clipboard items, ...
digestSystem: >
You are a digest assistant that summarizes a user's personal activity ...
chatSystem: >
You are a helpful AI assistant. Answer questions, discuss ideas, ...
titleGeneration: >
Generate a very short title (3-6 words) for a chat ...
| Section | What it controls |
|---|---|
embedding |
MLX model id, query instruction, token/batch limits, GPU cache, indexing batches |
search |
semantic thresholds, top-K, similar-items and Topics candidate counts, hybrid ranking (RRF), debounce, per-item text cap |
fuzzy |
typo tolerance and result caps for text search |
clustering |
Topics: max topics, KMeans iterations, label candidates |
aiTimeouts |
per-request-type timeouts in seconds |
aiLimits |
input/output size caps: summarize/chat/title token limits, attachment text/image/file caps, digest sampling budget |
clipboard |
clipboard poll interval, max copied-text length |
peek |
Force Touch preview: hold delay, fade-out, and pressure-opacity curve |
snap |
window snapping: top-edge offset |
prompts |
system prompts: summarization, daily digest, digest system prompt, chat, title generation |