惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
小众软件
小众软件
Recent Announcements
Recent Announcements
博客园 - 三生石上(FineUI控件)
Security Archives - TechRepublic
Security Archives - TechRepublic
W
WeLiveSecurity
Cloudbric
Cloudbric
博客园 - 司徒正美
美团技术团队
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
PCI Perspectives
PCI Perspectives
宝玉的分享
宝玉的分享
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
Last Week in AI
Last Week in AI
S
Schneier on Security
N
News | PayPal Newsroom
B
Blog RSS Feed
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
S
Secure Thoughts
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
L
Lohrmann on Cybersecurity
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tenable Blog
S
Securelist
L
LangChain Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
InfoQ
H
Heimdal Security Blog
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
K
Kaspersky official blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs

Hacker News - Newest: "LLM"

GitHub - lechmazur/position_bias: A benchmark for testing whether LLM judges keep the same preference when two lightly edited versions of the same story are shown in opposite orders. Flex routing (EU and EFTA) Dark Factories: Retooling for LLM Velocity Ask HN: What would be the impact of a LLM output injection attack? GitHub - AronDaron/dataset-generator: No-code desktop app for generating high-quality synthetic datasets to fine-tune LLMs — plan-then-execute pipeline, LLM-as-judge, HuggingFace upload. GitHub - Oaklight/llm-rosetta: Production-ready LLM API translation layer for Python — bidirectional conversion between OpenAI, Anthropic & Google formats via hub-and-spoke IR. Optional API gateway. Streaming & non-streaming. Zero core deps. Contributions welcome! GitHub - browser-use/browser-harness: Self-healing browser harness that enables LLMs to complete any task. GitHub - moeen-mahmud/remen: Remen turns thoughts into something you can return to Analyzing 156 LLM Launch Posts on Hacker News ChatGPT vs Gemini vs Claude: The Best LLM Subscription You Should Buy GitHub - salaamalykum/quran-semantic-search: High-density RAG Semantic Search Engine & Quran Corpus (GEO/SEO Architecture) GitHub - NVIDIA/TensorRT-LLM: TensorRT LLM provides users with an easy-to-use Python API to define Large Language Models (LLMs) and supports state-of-the-art optimizations to perform inference efficiently on NVIDIA GPUs. TensorRT LLM also contains components to create Python and C++ runtimes that orchestrate the inference execution in a performant way. The State of LLM Bug Bounties in 2026 Operational Readiness Criteria for Tool-Using LLM Agents Meshcore: Architecture for a Decentralized P2P LLM Inference Network How an LLM becomes more coherent as we train it GitHub - seetrex-ai/laimark GitHub - Jossifresben/BibCrit: AI-assited biblical textual criticism GitHub - wastedcode/memex: File system based wiki, maintained by Claude 99helpers.com GitHub - cliver-project/AITrigram GitHub - unbody-io/adapt: A self-evolving memory layer for AI agents. GitHub - hb20007/awesome-gen-ai-fails: A list of incidents where reliance on generative AI and LLMs resulted in harm to companies, individuals, or society GitHub - nevenkordic/localmind: Run any local LLM with persistent memory and context. CLI agent over Ollama with SQLite-backed hybrid recall. No cloud. Ask HN: What are the machine requirements for a LLM like Llama-3.1-8B? Faster LLM Inference via Sequential Monte Carlo grpo explained: group relative policy optimization for llm finetuning - cgft Stop comparing price per million tokens: the hidden LLM API costs · TensorZero Andrej Karpathy's LLM Wiki Is a Bad Idea GitHub - GG-QandV/mnemostroma: Offline RAM-first cognitive leer/coprocessor for AI agents and robotics. Solves "Context Abandonment" with 20-80ms latency using a dual-thread biomimetic memory architecture (ONNX + SQLite WAL). mempalace/agent at agent · skorotkiewicz/mempalace GitHub - Nyquest-ai/nyquest-rust-fullstack-pub: Nyquest — Semantic Compression Proxy for LLMs. 350+ rules, local LLM stage, 15-75% token savings. Full Rust stack. GitHub - TheoV823/mneme: Enforce architectural decisions in AI-assisted development. GitHub - klemenvod/TokenBrawl: A 1v1 Bomberman-style game where two LLM agents play autonomously against each other. No human plays — you watch the AIs fight. Each agent receives a text description of the board state, reasons about it, and outputs a move as JSON. The game engine executes it. Introducing the Common AI Provider: LLM and AI Agent Support for Apache Airflow Power Circuit AI: Designing Power Electronic Circuits for Motor Drives with Generative Artificial Intelligence Ask HN: How to program with IDE and LLM on CPU locally? Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis Bonsai 1-bit WebGPU - a Hugging Face Space by webml-community The LLM Fallacy: Misattribution in AI-Assisted Cognitive Workflows Ask HN: Simple tooling for local LLM code critique without IDE integration? Can a General LLM Diagnose a DICOM Slice? A 10-Case Public Benchmark Charts-of-Thought: Enhancing LLM Visualization Literacy (PDF, 2026) GitHub - Mesh-LLM/mesh-llm: Distributed AI/LLM for the people. Share compute privately or publicly to power your agents and chat. GitHub - seamus-brady/springdrift: A persistent runtime for long-lived LLM agents Writing an LLM from scratch, part 32k -- Interventions: training a better model locally with gradient accumulation Ask HN: Which LLM model and agentic CLI are you using for local development? GitHub - wayneColt/modelcascade: Route local. Escalate smart. Never overspend. Open-source multi-model cascade routing for autonomous agents. LLM pricing is 100x harder than you think GitHub - asakin/llm-primer: Pre-warmed Claude Code sessions in tmux. No startup wait. GitHub - EggerMarc/chat-rs: A multi-provider LLM framework for Rust. GitHub - SynapseKit/SynapseKit: Minimal, async-first Python framework for production LLM apps- 2 hard deps, no magic, no SaaS. A Claude Skill that Makes LLM Paragraphs More Bearable Does Gas Town 'steal' usage from users' LLM credits & paid services to improve itself? What's Claude Code Actually Doing? Open the Black Box with the Arthur Engine Milla Jovovich's New Open Source LLM Memory App and the Dark Code Problem Your intuition of LLM token usage might be wrong Show HN: Bloomberg Terminal for LLM ops – free and open source GitHub - 0xchamin/mcptube: Transform YouTube videos into a compounding knowledge base with transcripts, vision analysis, and agentic search. Works as an MCP server for Claude, Copilot & more. Show HN: Open KB: Open LLM Knowledge Base Your LLM is a compiler, not a runtime GitHub - sapountzis/Unslop: A Web Feed That Deserves You crates.io: Rust Package Registry Beyond Karpathy's LLM-Wiki: The Necessity of Cognitive Governance GitHub - amitshekhariitbhu/llm-internals: Learn LLM internals step by step - from tokenization to attention to inference optimization. GitHub - parallem-ai/parallem: An expressive library for running agents with the Batch API. GitHub - stfurkan/pi-llm LLM-Wiki Show HN: Formal – Formal verification for AI-generated code using Lean 4 LRTS – Regression testing for LLM prompts (open source, local-first) LLM Wiki Skill: Build a Second Brain with Claude Code and Obsidian I built an LLM Wiki and RAG solution: here's a demo for a security KB The biggest advance in AI since the LLM Predict-Rlm: The LLM Runtime That Lets Models Write Their Own Control Flow the-synthetic-library/the-synthetic-mind at main · joshferrer1/the-synthetic-library GitHub - yisding/reviewwiggum GitHub - Donnyb369/mcp-spine: Context Minifier & State Guard — Local-first MCP middleware proxy GitHub - Beledarian/wgpu-llm: A from-scratch LLM inference engine that uses wgpu (the cross-platform WebGPU implementation) to dispatch WGSL compute shaders for every math operation a Transformer needs. No CUDA. No Python. No massive framework dependencies. Just Rust, raw shaders, and your GPU. GitHub - anitiue/Hindsight: An experience-driven self-improvement framework for LLM agents — 基于经验的 LLM Agent 自我改进框架 GitHub - stef41/lmscan: 🔍 Detect AI-generated text and fingerprint which LLM wrote it. Open-source GPTZero alternative. Zero dependencies, works offline. GitHub - alainnothere/AmdPerformanceTesting: Amd Performance Testing Ask HN: Is a purely Markdown-based CRM a terrible idea? Optimized for LLM agents Context Engineering - LLM Memory and Retrieval for AI Agents | Weaviate little_helper_tui/letter.md at main · sleepyeldrazi/little_helper_tui GitHub - EvanZhouDev/umr: The Unified Model Registry for all your local AI apps. GitHub - JordanCT/VigIA-Orchestrator Your Agent Is Mine: Measuring Malicious Intermediary Attacks on the LLM Supply Chain A Taxonomy of RL Environments for LLM Agents Llama LLM Network Feture GitHub - genedeng-ca/ai-mac-migration: AI-powered Mac-to-Mac migration tool - replace Apple Migration Assistant with intelligent, selective transfer using local LLMs GitHub - lunargate-ai/gateway: High-performance self-hosted AI gateway (OpenAI-compatible) with routing, retries, and streaming GitHub - AuthBits/webmcp: A lightweight, prompt-driven MCP web research server for high-quality LLM powered information extraction. Externalization in LLM Agents: A Unified Review of Memory, Skills, Protocols and Harness Engineering Springdrift: An Auditable Persistent Runtime for LLM Agents with Case-Based Memory, Normative Safety, and Ambient Self-Perception High-Stakes Personalization: Rethinking LLM Customization for Individual Investor Decision-Making From Static Templates to Dynamic Runtime Graphs: A Survey of Workflow Optimization for LLM Agents HUOZIIME: An On-Device LLM-enhanced Input Method for Deep Personalization TIDE: Token-Informed Depth Execution for Per-Token Early Exit in LLM Inference Characterizing WebGPU Dispatch Overhead for LLM Inference Across Four GPU Vendors, Three Backends, and Three Browsers LLM Targeted Underperformance Disproportionately Impacts Vulnerable Users
GitHub - Merkoba/Meltdown: An interface for llama.cpp, ChatGPT, Gemini, and Claude
madprops · 2026-05-09 · via Hacker News - Newest: "LLM"


This is a desktop application to interact with large language models.

It has hundreds of arguments and commands and many power user features.

It's written 100% in python and uses tkinter for the GUI.


Index

  1. Screenshots
  2. Installation
  3. Models
  4. ChatGPT
  5. Gemini
  6. Claude
  7. Kimi
  8. Paths
  9. Profiles
  10. Input
  11. Commands
  12. Tabs
  13. Markdown
  14. Snippets
  15. Find
  16. Images
  17. Console
  18. Listener
  19. Logs
  20. Upload
  21. Signals
  22. System
  23. Aliases
  24. Triggers
  25. Tasks
  26. Config
  27. Args
  28. Argfile
  29. Loading
  30. Prompts
  31. Palette
  32. Taps
  33. Gestures
  34. Variables
  35. Files
  36. Images
  37. Themes
  38. Compact
  39. Autoscroll
  40. JoinLines
  41. Pins
  42. Lockets
  43. Repeat
  44. Keywords
  45. Tips
  46. Search
  47. Memory
  48. Next
  49. Browser

Docs

  1. Commands
  2. Arguments
  3. Keyboard

Screenshots


Installation

Note: By default llama.cpp (local model) support is not installed.

Read below to learn how to enable it.

Also, this has only been tested on linux.


Using pipx

You can install it with pipx:

pipx install git+https://github.com/Merkoba/Meltdown

That will only enable remote features like ChatGPT and Gemini.

But that means the installation is easier and faster.


If you want to enable llama.cpp support for local models do this:

pipx install git+https://github.com/Merkoba/Meltdown#egg=meltdown[llama]

The difference is #egg=meltdown[llama] added at the end.

For amd you might need to install some vulkan system packages.


To install it with Vulkan support (GPU), you can do this:

CMAKE_ARGS="-DGGML_VULKAN=on" pipx install git+https://github.com/Merkoba/Meltdown#egg=meltdown[llama]

This is important because the GPU accelerates tokens per second a lot on local models.

nvidia GPUs haven't been tested yet.


Intalling with pipx provides the meltdown command.

And if on linux, you should now have a .desktop entry to launch it.

You can uninstall it with pipx uninstall meltdown.


Manual Installation

To install manually, use a virtual env and requirements.txt.

You can use scripts/venv.sh to automate this.


To add local model support run scripts/add_llama.sh.

There's a scripts/add_llama_amd.sh to install with Vulkan support for AMD.

Or maybe you want scripts/add_llama_amd_rocm.sh for rocm.

Pick one of those for local model support.

The llama.cpp library is defined in llama_reqs.txt.

These should be called after running venv.sh as they only add extra libraries.


To run the program, use run.sh in the root dir.


Using the Flake

Try it:

nix run or nix run .#amd

Install it:

nix profile install or nix profile install .#amd

Or install properly in your system through your config files.


Read more about llama-cpp-python.

This is the library used to interface with llama.cpp.

It is responsible for compiling llama.cpp.


Models

Local gguf models can be used.

Here's a good one you can use:

https://huggingface.co/QuantFactory/Meta-Llama-3-8B-Instruct-GGUF/blob/main/Meta-Llama-3-8B-Instruct.Q5_K_M.gguf

You can find more on that site.

The bigger the model, the longer it will take to load.

llama.cpp is the inference engine used, through llama-cpp-python.

Responses can be instant (when ready) or streamed as new bits arrive.

Streaming can be stopped. Models can be unloaded.

There is an argument to auto unload a model after x mintues.

For example: --auto-unload 60 (1 hour).


ChatGPT

ChatGPT from OpenAI is supported.

You must first set the API key for it to work.

This can be done using the model menu.

Or using the openaikey command.

Then pick a model using the model menu or writing the name directly.


Gemini

Gemini from Google is supported.

You must first set the API key for it to work.

This can be done using the model menu.

Or using the googlekey command.

Then pick a model using the model menu or writing the name directly.


Claude

Claude from Anthropic is supported.

You must first set the API key for it to work.

This can be done using the model menu.

Or using the anthropickey command.

Then pick a model using the model menu or writing the name directly.


Kimi

Kimi from Moonshot is supported.

You must first set the API key for it to work.

This can be done using the model menu.

Or using the moonshotkey command.

Then pick a model using the model menu or writing the name directly.


Paths

Most files are saved in the system's data directory.

In linux this is ~/.local/share.

The config files are saved in the system's config directory.

In linux this is ~/.config.

The full paths take into account the name of the program and profile.

For example for a profile called dev:

Data: ~/.local/share/meltdown/dev

Config: ~/.config/meltdown/dev

In general things inside config should be "safe" to backup, with minimal personal information.

Data holds all conversations and widget history like input. It also holds API keys. So data should be treated as private.

It's possible to override these paths through arguments.

Using --data-dir and --config-dir.


Profiles

Different profiles can be created and used.

By default it uses the main profile.

Profiles have independent configs and data.

To launch with a different profile use the --profile argument.

For example: --profile dev.

To access the directories where profiles save files, use the /profile command.


Input

To enter messages for the AI, there is an input at the bottom.

Simply write something and press Enter.

Up/Down arrows can be used to go back to previous inputs used.

Right clicking the input shows recent inputs.

There is a Write button that opens a popup larger input to write more elaborate prompts.

The Write popup requires ctrl + Enter to submit, or use the button.

The input can also be used to run commands.

There is a System Prompt which you can modify using the main menu, or with /system.

The system prompt defines rules that will influence the responses you get.


Commands

There are many commands to perform actions.

To use a command you can type them in the input.

For example: /logtext.

Some commands accept arguments.

For example: /find fun

Commands can be autocompleted with tab.

Multiple tab uses cycles between more matches.

Commands do a similarity check, so slightly malformed commands will match if similar enough.


Tabs

Each conversation is represented by a tab in a horizontal tab bar.

To open a new tab click the New button, or with /new, or double clicking the empty tab bar, or with ctrl + t, or ctrl + n.

There are various ways to close tabs:

There is a maximum amount of tabs that can be opened at the same time (configurable).

After that limit is hit (100 by default), you will need to close old tabs to open new ones. Its advised to not configure this limit to a very big number since problems can arise with many tabs. The suggested workflow is to close all tabs after a while or closing Old tabs.

The mousewheel can be used to cycle between tabs and there are some shortcuts and commands for this. There is also shift + wheel which you can use in the text output area to cycle tabs. If ctrl + wheel is used in the tab bar, it will move/re-order the tabs left/right. And shift + wheel can be used to scroll the tab bar without changing the tab.

There is a tab list which shows all the open tabs, which you can type to filter. This is accessed by right clicking the conversation or with /list.

When tabs are created they get a short random word for its name. After the first response from the AI, the name will be updated to a more relevant one. The name can be renamed by right clicking the tab/conversation, or with /rename.

Tabs can be moved left/right by dragging them. Multiple tabs can be selected by shift/ctrl clicking them. This allows you to move or close more tabs at the same time.

Tabs can be closed by middle clicking them. Empty tabs won't require a confirmation. The need for confirmations can also be configured through arguments.

When there is a single tab, the tab bar is not shown, as soon as second tab is created, the tab bar is shown. This can be configured, to always show the tab bar, or to never show it.

There is a check that avoid creating new tabs when the last tabs is empty. Instead it focuses the last empty tab. At the end or at the start. To disable this you can use --no-keep-empty-tab.


Markdown

There is a markdown parser implemented from scratch, no library is used.

It can format the most common cases like bold, italic, quotes, backticks, headers, separators, snippets.

The text output is only parsed when needed, at the end of streams. It is also able to only format the last line added to the textarea. It aims to be as efficient as it can.

Each kind of markdown can be enabled or disabled for user or ai. For example bold can be enabled for only the user, or the ai, or both, or none. This is done through arguments.


Snippets

Triple backticks produce snippets:

These get colored depending on the language used.

To achieve syntax highlighting, the Pygments library is used.


There are buttons on the top right to do several actions:

Use saves a sample of the snippet to the $snippet variable which can be used on the input.

Explain directly asks the AI to explain a sample.

Find finds text inside the snippet.

Select selects all the text in the snipper.

Copy copies all the text in the snippet.


Find

There is a find widget that allows searching for text inside conversations.

It can be activated with ctrl + f or /find, or f3.

It can also be accesed through the More menu.

It supports finding partial words, or whole words (bound).

It supports finding in text sensitive mode, or text insensitive mode.

It supports finding in reverse with shift + enter, or shift + f3, or middle clicking the buttons.

There is a command to find in all conversations: /findall.


Images

It's possible to generate images using Dall-E.

An OpenAI key is required for this.

To use it there is the /image command.

For example: /image powerhouse of the cell.

It will use the normal streaming mechanisms.

The response, if any, is the full URL.

Some parts of image generation can be customized through arguments.


Console

To enable the console use --console.

This allows you to send actions from the terminal that launched the program.

You can enter a simple text prompt, or send a command if the command prefix is used.

It uses prompt_toolkit and shows autocomplete suggestions with recently used words, or commands.

You could have the main program displayed on a monitor and control it with the terminal in another monitor for instance.

The console is not enabled by default because it can be problematic on certain environments depending on how the program was launched (i.e High CPU usage). But it should work well on normal terminal launches.


Listener

There's a listener mode that can be enabled with --listen.

When the listener is active, it will listen for file changes using watchdog.

If it finds text, it will use it as the prompt, or as a command if it starts with the command prefix.

It will then empty the file after using it.

You can do for instance echo "hello" > /tmp/mlt_meltdown.input.

Or: echo "/new" > /tmp/mlt_meltdown.input.

By default it checks /tmp/mlt_meltdown.input if on linux.

Temp Dir + mlt_meltdown.input.

But the file path can also be set with --listen-file.

This is another way to control the program remotely.


Logs

There is a logging system to save conversations to the file system.

It supports output in text, json, or markdown.

To log a conversation you can right click it and select Save Log.

Or use the commands: /log, /logtext, /logjson, /logmarkdown.

It's possible to also log all the open conversations (tabs).

By default the logs are saved in the data directory but it can be configured.

After saving a log, feedback is shown to easily open the file.


Upload

Conversations can be uploaded to a text hosting service.

For now it works with rentry.org.

The password (edit code) can be configured through --upload-password.

If no password is set, a random short word is used.

After the text is uploaded, a message appears that allows you to copy the URL.

The URL and password are also printed in the conversation window.

All the conversation can be uploaded, or just the last item.


Signals

There is a signals system that allows to make requests to remote servers.

To use this, a json file must be created and pointed to with the --signals argument.

For example: --signals ~/signals.json.


Multiple signals can be defined. This is a demo with all the available keys:

{
    "test": {
        "url": "https://test.com/submit",
        "method": "POST",
        "format": "text",
        "items": "all",
        "content": "status",
        "length": 500,
        "single": true,
        "data": {
            "username": "melt",
            "key": "someAuthKey"
        }
    }
}

url and content are always required, the rest are optional.


url is the url to use for the request. (required)

method can be post, get, or put. (default post)

format can be text, json, or markdown. (default json)

items can be all, to include the full conversation. Or last, to include only the last item. (default all)

content is the key used for the conversation text. (required)

length limits the content to that amount of characters. (default: 0)

single sends the content as a single line. (default: false)

data all the data keys needed to be sent. (default: empty)

For data, keywords are supported.

For example you can have "date": "((now))" (Unix timestamp)

Or: "date": "((date))" (Full date)


To run a signal you use the command with the name: /signal test.

Feedback is shown in the window if the signal failed or if it ran successfully.


System

At the top there are system monitors, like CPU, RAM, Temperature, and GPU related ones.

GPU might not work for all users. It has only been tested for AMD in certain systems.

The monitors turn off a short time after the last response (1 minute).

For example --system-suspend 5 turns off the monitors after 5 minutes since last use.

And --system-suspend 0 will keep the system monitors running all the time.

They turn red when they reached a threshold, which can be configured.

By default, the system frame will only be shown if a local model is loaded.

To disable this behavior you can use --no-system-auto-hide.


Aliases

Command aliases can be set. And they can be chained.

For example: --alias test="/top & /sleep 0.5 & /about".

Then when using the /test command, it will perform those 3 commands.

In that example there's a delay of 500ms between /top and /about.

This can be useful to quickly change between model configurations.

For example: --alias mini="/config model gpt-4o-mini & /config temperature 0.1".


Triggers

It's possible to change the input text from a word or phrase to a full longer value.

The text is converted upon submit.

You can register triggers like this:

--trigger "the thing = Come up with a new theory about The Thing"

And if you submit exactly "the thing", it will be converted to the full text.

The = is needed here because triggers can contain spaces.

A possible trigger you might want could be:

--trigger "... = Please continue talking"

This can be a powerful way to interact with the AI.


Tasks

Tasks that run periodically can be registered.

Format is [seconds] [commands] [/now (optional)]

For example --task "60 /signal update"

This will run the update signal every 60 seconds.

If you add /now it will run the first one when the program starts.

For example --task "60 /signal update /now"

Units can be used, this includes s, m, h, and d.

Which mean seconds, minutes, hours, and days.

For example --task "2h /prompt tell me something about ((noun))".

This will run that task every 2 hours.


Changing Config

The config command allows to change the configuration of the program.

This means any widget can be set.

For example /config model gemini-1.5.

Or /config name_user Bob.

To know the name of the widget, hover over it.

Changing Arguments

Arguments are usually set when launching the program, but they can also be changed while it's running.

This can be done with the arg command.

For example: /arg taps false. (boolean)

Or /arg delay 0.2. (ints or floats)

Or /arg f1 /close. (strings)

Or /arg custom_prompts [one = prompt one, two = prompt two] (lists of strings)

The = format is required because the name of custom prompts can have multiple words.

While this is possible, some argument changes won't work, and some might cause problems.


Argfile

It's possible to point to a json file that overrides arguments.

For example: --argfile ~/args.json.

This is a way to launch with different configurations easily.

For example:

{
    "auto_unload": 60,
    "aliases": [
        "gpt /loadconfig gpt",
        "gem /loadconfig gem",
        "pro /loadconfig pro",
        "llama /loadconfig llama",
        "think /promptforce Tell something interesting you thought about ((noun))...",
        "listen /notify Listen to this",
        "talk /listen & /think"
    ],
    "custom_prompts": [
        "In Spanish = Explain ((words)) spanish",
        "In Japanse = Explain ((words)) japanese"
    ],
    "tasks": [
        "2h /talk"
    ],
    "variables": [
        "meta /media/struct1/models/Meta-Llama-3.1-8B-Instruct-Q5_K_M.gguf"
    ]
}

Loading

It's possible to save the current config and session.

This can be done through the main menu or through commands.

For example: /saveconfig, or /saveconfig books.

Or: /savesession, or /savesession books.

Loading: /loadconfig books, /loadsession books.

If arguments are not used, a file picker appears.

Config meaning the current configuration of all the widgets.

Session meaning the set of conversations (tabs and their content).


Custom Prompts

When highlighted words are clicked, a menu with several options appear.

Custom Prompts can be registered to explain these words in a special way.

For this the keywords are needed, like ((words))

For example: --custom-prompt Spanish="shortly explain ((words)) in spanish"


Palette

Apart from typing the commands in the input (which supports autocompletion with tab), there is another way to run commands through a palette.

To spawn it, tap ctrl twice in a row, or in the main menu, or with /palette.

You can filter it by typing some letters.


Double Taps

When ctrl is pressed twice in a row quickly, a command gets executed.

By default it opens the Command Palette but it can be configured.


Gestures

There are 4 mouse gestures that can be mapped to commands.

These are up, down, left, and right.

To trigger these, hold the right mouse button, move to a direction, and release the button.

By default these scroll up/down and move to tabs left/right.


Variables

Variables can be set, unset, and read.

These are used in the inputs.

For example you can do: /set name George.

Then you can write: who is $name?.

The input is converted to its full form before being used.

So that would be converted to who is George?.

You can unset with /unset name.

Read with /var name.

Variables can be filled at startup using arguments.

For example: --var "name George" --var "num 1200".

The prefix like $ can be changed.

For example: --variable-prefix @

So you can do: who is @name?.

Variables also work in the model field.


Files

There is a files panel where you can enter file paths.

For now it can do simple text file analysis.

And it can also be used for image files when using special models.

When the file is used it is removed from the input, and not used for the next prompts.

The used file paths are remembered in the session file, but not their content.


Images

Multi-modal models like llava 1.5 can be used.

Download the model gguf and the mmproj gguf (clip model):

https://huggingface.co/mys/ggml_llava-v1.5-7b/tree/main

Put those 2 files in the same directory.

Rename the clip model file to mmproj.gguf.

Set Mode to images.

Now you can use the File field to include a URL or path to an image.

And you can use the input to include text as normal.

While this has been tested to work, it's still considered experimental.


Themes

There are 3 available color themes. dark, light, and high contrast.

Dark


Light


High Contrast


You can access Theme in the main menu.

Or by using the /theme command.

The application needs to restart for the theme to take effect.


It's also possible to change the border color and size.

Using: --border-size and --border-color.

There is a border effect that can be enabled with --border-effect.

The color can be changed with --border-effect-color.

This changes the color of the border when a response starts to stream.

Then restores the normal color when the stream is done.


Compact

There is a compact mode which hides some widgets from the window.

This can be useful if you want a less distracting interface.

To toggle compact mode you can use the main menu, or f8, or /compact, or --compact.

There are arguments you can use to define which panels get removed in compact mode.


Autoscroll

The output window can be auto scrolled.

That means it will scroll slowly downwards or upwards.

So you can read text without manual intervention.

To activate this you can click Autoscroll in the Go To Bottom panel.

Or use the /autoscroll command. This command accepts optional up, and down arguments.

To scroll upwards you can also middle click the Top button.

There is also f9 and shift + f9 shortcuts.

The scroll delay can be configured through arguments.

When the autoscroll mode is active, the button has a different color.

When the scroll ends the autoscroll mode gets disabled.

The mode also gets disabled when manually scrolled.

You can use --no-autoscroll-interrupt to avoid stopping it when scrolling up/down.

There are buttons on each side to make scrolling slower or faster.


Join Lines

Multiple lines can be joined with a character, in case you want a more concise presentation.

For example:

Sentence One
Sentence Two
Sentence Three

That would be converted to Sentence One 👾 Sentence Two 👾 Sentence Three.

To enable this you can use --join-lines-user and --join-lines-ai.

To change the char, you can use --join-lines-char 😀

It ignores triple backtick snippets, it tries to keep those lines intact.


There's also --clean-lines-ai, to collapse multiple empty lines into a single line.


Pins

Conversations/tabs can be pinned.

This can be done using the tab's context menu.

Or using /pin, /unpin, /togglepin.

This allows finding them easily through the special pin list.

And allows closing either just normal tabs or just pins.


Lockets

Sometimes you might need to access some data but don't feel comfortable having it printed anywhere or even visible for a couple of seconds. This can be for several reasons revolving around privacy and personal security.

You might want to have a way to have the computer/AI have a peek at this data and respond with the necessary safe information you request.

Lockets are registered at startup through arguments.

For example --locket name some command.

Multiple lockets can be registered.

Then the /locket command can be used like:

/locket date what is the week day?

/locket joe what ice cream does he like?

These can be using commands that fetch date or profile information.


Repeat

On the item right click menu there are some Repeat options.

This is a way to re-run the prompt, with or without history.

This is a smart command that cuts off history up to that point when making the prompt.

This can be a way to check how different models might have answered to the same input.


Keywords

There are some keywords that you can use in commands, the input, or system prompt.


((name_user))

Name of the user.


((name_ai))

Name of the AI.


((date))

Current date.


((now))

Current unix time in seconds.


((name))

Name of the current tab.


((noun))

Random noun.


%@sometext%@

This is a special syntax to create uselinks.

These are used to prompt directly on click.


Tips

Right clicking inputs like model and input show recently used items.

Middle clicking items in these lists delete them from the list.

There are 3 scrollable panels at the top, which can be scrolled by clicking the arrows on the sides or by using the mousewheel.

Middle clicking the panel arrows scrolls instantly to that side.

There are /like and /dislike commands.

Not all available configs are displayed in the interface. Check config.py to see what you can manually configure with the /config command.


Search

This is a tool that when enabled allows the AI to use their search engine to find information.

This might not work on all models.


Memory

This is a tool that allows the AI to read and write files to store information.

Right now only Claude supports this.

The AI might need to be instructed directly to use this tool.


Next

Save prompts for later with /next some prompt.

For when you have an idea but you can't use it right now because it would interrupt an operation.

/next what is the speed of a falcon?

Then when you are ready to use it just do /next.

The input is then filled with the prompt.

Any amount of items can be saved at once.

They get removed when used.


Browser

There's a custom-made file picker to browse and pick files and dirs.

It allows keyboard shortcuts like Backspace, Arrows, typeahead, Enter.