Project Files
README
Compress your prompts before they hit the LLM. Remove polite filler, redundant phrases, and verbosity automatically β saving tokens and reducing latency.
Troglodyte sits between you and the LLM, compressing prompts in real-time:
| Removes | Examples |
|---|---|
| Polite fillers | "please", "thank you", "I would appreciate" |
| Redundant phrases | "in order to" β "to", "due to the fact that" β "because" |
| Excessive verbosity | "I was wondering if you could" β "" |
| Articles & pronouns | (Balanced/Aggressive modes) |
Recent updates introduce significant performance improvements:
incremental and isolatedModules in tsconfig.json for faster development builds.Over the LM Studio Hub:
lms get crunch3r/troglodyte
Or manually:
cd "C:\Source Code\LM Studio Plugins\troglodyte" lms dev --install
That's it! The plugin is now permanently installed. No terminal needs to stay open.
Simply run the same command again:
lms dev --install
LM Studio will automatically reload the updated plugin.
For active development with hot-reload:
cd "C:\Source Code\LM Studio Plugins\troglodyte" npm run dev
Leave this terminal open. The plugin will appear in LM Studio's plugins list.
Click the gear icon next to the plugin to access settings:
| Setting | Options | Default |
|---|---|---|
| Compression Level | Gentle / Balanced / Aggressive | Balanced |
| Smart Mode (Context-Aware) | On/Off | On |
| Protect URLs & Links | On/Off | On |
| Protect Version Numbers & IDs | On/Off | On |
| Protect Markdown Headers | On/Off | On |
| Protect File Paths | On/Off | On |
| Protect JSON/XML Structures | On/Off | On |
| Language Mode | Auto-Detect (EN/DE) / English / German | Auto-Detect |
| Show Statistics in Console | On/Off | On |
Only removes polite filler and courtesy words:
Input: "Hello! Could you please help me? Thank you so much!" Output: "Help me"
Removes articles, pronouns, basic prepositions too:
Input: "I was wondering if you could explain how photosynthesis works, please?" Output: "Explain photosynthesis works"
Maximum compression β removes almost all function words:
Input: "I would really appreciate it if you could provide a detailed explanation of the implementation process." Output: "Provide detailed explanation implementation process"
Send this verbose prompt:
"Hello there! I was wondering if you could possibly help me out? I would really appreciate it if you could explain how to install Node.js on Windows step by step. Thank you so much for your time and assistance!"
Expected compressed output (Balanced):
possibly help me out? explain how install Node.js Windows steps.
Send this verbose prompt:
"Hallo! Ich wΓΌrde mich sehr freuen, wenn du mir bei dieser Aufgabe helfen kΓΆnntest, bitte und danke!"
Expected compressed output (Balanced):
wΓΌrde freuen, wenn bei dieser Aufgabe helfen kΓΆnntest
Send this prompt to verify file paths are preserved:
"check C:\Source Code\ServiceMonitor for issues."
Expected: Path stays as C:\Source Code\... (not corrupted to C:\src Code\...)
Send this prompt to verify both path types work:
"Bitte analysiere den Code in /home/user/project/src/main.ts und ./lib/utils.py."
Expected: Both paths preserved intact:
analysiere Code /home/user/project/src/main.ts ./lib/utils.py.
Send this prompt to verify German compression works correctly and version numbers aren't fragmented:
"Hallo! Ich wΓΌrde mich sehr freuen, wenn du mir bei dieser Aufgabe helfen kΓΆnntest, bitte und danke! ErklΓ€re mir bitte Schritt fΓΌr Schritt, wie man Node.js unter Windows installiert. Vielen Dank!"
Expected: Clean German output with "Node.js" intact (not fragmented):
wΓΌrde freuen Aufgabe helfen kΓΆnntest
β Wrong (old buggy behavior):
! wΓΌrde freuen Aufgabe helfen kΓΆnntest, ErklΓ€re steps Windows installiert,!, Node.js.!
These elements are never modified, regardless of compression level:
| Element | Example |
|---|---|
| Code blocks | `code` and blocks``` ```` |
| URLs | https://example.com/path?id=123 |
| Version numbers | v1.0.0, 2.1.3-beta |
| Software names with dots | Node.js, TypeScript |
| Issue/PR refs | #456 |
| UUIDs | 550e8400-e29b-41d4-a716-446655440000 |
| Markdown headers | ## My Header |
| Windows file paths | C:\Source Code\... |
npm install
npm run build
npm run dev
troglodyte/ βββ src/ β βββ index.ts # Entry point β βββ promptPreprocessor.ts # Pipeline orchestrator β βββ troglodyte.ts # Compression engine β βββ config.ts # UI configuration β βββ dictionaries/ β βββ en-filler.ts # English blacklists β βββ de-filler.ts # German blacklists β βββ phrases.ts # Multi-word replacements β βββ synonyms.ts # Single-word abbreviations βββ dist/ # Compiled output βββ package.json βββ PROJECT_SUMMARY.md # Comprehensive documentation βββ memory.md # Persistent notes & lessons learned βββ README.md # This file
lms dev --install completed successfullydist/index.js exists after buildCheck LM Studio's console (F12 β Console tab) for error messages.
Try Gentle mode or disable specific protections in settings.
This was a known bug fixed on May 16, 2026. Ensure you have the latest version with path protection enabled.
For detailed architecture and technical documentation, see:
| Issue | Status |
|---|---|
| Placeholder overhead causing negative compression | β
Fixed - compact Unicode placeholders (\uE000+) now used |
| "source" β "src" synonym corrupting file paths | β Fixed - Windows path protection added before synonym phase |
| Phrase replacement order causing partial matches | β Fixed - phrases sorted by length (longest first) |
Punctuation spacing broken (out?explain, Node. js) | β Fixed - smart cleanup chain with CAPITAL-aware spacing |
Logic symbols breaking natural language (and β &&) | β Fixed - all logic symbol replacements removed |
protectFilePaths config field unused | β Fixed - now wired up and functional (May 18, 2026) |
| Placeholder overflow risk (~1M items) | β Fixed - MAX_PLACEHOLDERS check added (May 18, 2026) |
| Duplicate entries in de-filler.ts | β Fixed - ~90 duplicates removed (May 18, 2026) |
| Error handling lacking user feedback | β Fixed - stack trace + truncated error message shown (May 18, 2026) |
Path extensions stripped (main.ts β main) | β
Fixed - regex includes / and uses lookahead boundaries (May 18, 2026) |
| Placeholder counter duplication (50% waste) | β Fixed - removed unused generatePlaceholder() function (May 18, 2026) |
| Language detection O(nΒ²) performance | β Fixed - converted indicator arrays to Sets for O(1) lookup (May 18, 2026) |
| Regex compilation per compression call | β Fixed - pre-compiled all phrase regexes in constructor (May 18, 2026) |
| String concatenation O(nΒ²) memory | β Fixed - use array join pattern for reconstruction (May 18, 2026) |
| Placeholder restoration O(nΒ²) time | β Fixed - single-pass Map-based replacement (May 18, 2026) |
| "Node.js" fragmented into parts | β
Fixed - added . to word pattern regex (May 18, 2026) |
Orphaned punctuation scattered (!, .!) | β Fixed - cleanup step removes standalone punctuation (May 18, 2026) |
| No input validation (security risk) | β Fixed - added null/empty check + 1MB limit warning (May 18, 2026) |
| PUA restoration regex broken | β
Fixed - proper \uE000-\uF8FF Unicode escapes used (May 24, 2026) |
| Dead synonym entries (no-ops) | β Fixed - 17 no-op entries removed (May 24, 2026) |
detectTechnicalContext double-call | β Fixed - result cached in variable (May 24, 2026) |
| escapeRegex cascading double-escaping | β Fixed - single-pass regex replacement used (May 31, 2026) |
| Word filtering reconstruction misalignment | β Fixed - separate filtered word array prevents delimiter shift (May 31, 2026) |
| XML depth tracking matching unrelated tags | β
Fixed - proper searchPos skip logic added (May 31, 2026) |
| Technical context over-counting overlapping patterns | β Fixed - simplified keyword/brace counting eliminates overlap (May 31, 2026) |
MIT
Last Updated: May 31, 2026