Show HN: Fast CPU summarize, eli5, fact-check or translate any text A new open-source command-line tool called fftext lets users summarize, explain, fact-check, or translate any text, URL, or file entirely on a local CPU without an internet connection or API keys. The tool runs a quantized 0.8B parameter Qwen3.5 model through llama.cpp, requiring no GPU or cloud services, and streams results directly to the terminal. Its fact-check feature extracts claims from text, performs web searches using Mojeek and Startpage, and labels each claim as supported, refuted, conflicting, or insufficient with source URLs. Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command. fftext s https://en.wikipedia.org/wiki/Llama.cpp Three bullet points, streamed to your terminal, generated on your CPU. No API key. No round-trip to anyone's server. - ⚡ Fast on CPU. Powered by a quantized 0.8B Qwen3.5 Q4 K M GGUF, ~500 MB running through llama.cpp . Streams tokens as they're generated so you see the answer build, not a spinner. No CUDA. No Metal-only tricks. Plain old cores. - 🌐 Files, URLs, or raw strings. Point it at a .txt , paste an article URL, or just type the text inline. URLs get fetched, run through readability-lxml for main-content extraction, and stripped to clean prose before the model sees them. - ðŸ“ī Offline after first run. The model downloads once to your Hugging Face cache and stays there. Your text never leaves your machine except for check , which needs the web — see below . - ðŸŠķ Lean deps. llama-cpp-python , requests , beautifulsoup4 , readability-lxml , lxml . That's it. No PyTorch, no LangChain, no cloud SDKs. - 🧠 Four tasks, four prompts, one binary. Summarize, explain like I'm five, fact-check against the live web, or translate into any language or register you can describe. Each task is a separate, focused prompt — not one mega-prompt trying to do everything. - ðŸ—Ģ Translate into anything you can describe. --lang "Castilian Spanish" , --lang "casual Japanese" , --lang "Moroccan Darija" — whatever string you pass goes straight into the prompt. You drive the register and dialect. - 🔍 Fact-check with citations. fftext check extracts claims, ranks them, web-searches each one Mojeek and Startpage, rotated , and labels them SUPPORTED, REFUTED, CONFLICTING, or INSUFFICIENT — with a source URL per claim. CPU-only, no API key, no Google. Install pip install . Try the four tasks fftext s notes.txt summarize a file fftext e https://en.wikipedia.org/wiki/Photosynthesis ELI5 a URL fftext c "The Eiffel Tower was built in 1822." fact-check a string fftext t --lang "French" "How are you today?" translate First run downloads ~500 MB of model weights. Every run after is offline except check , which searches the web . | Subcommand | Alias es | What it does | |---|---|---| summarize | s | Three short bullet points. Concrete and specific, no preamble. | explain | e , eli5 | Plain-language explanation, 4–6 sentences, like to a curious kid. | check | c | Extract claims → web-search each → label SUPPORTED / REFUTED / CONFLICTING / INSUFFICIENT. | translate | t | Translate into any language/register you describe via --lang . | Every task accepts the same three input shapes — file, URL, or raw string — resolved in that order. Summarize anything fftext s notes.txt fftext s https://example.com/post fftext s "Paste a long block of text right here on the command line." Explain it like I'm ten fftext e paper.pdf.txt fftext eli5 https://en.wikipedia.org/wiki/Quantum entanglement Fact-check fftext c article.txt fftext c "The Roman Empire fell in 476 AD." fftext c --debug article.txt show ranking, queries, snippets, raw verdicts Translate fftext t hello.txt defaults to English fftext t --lang "Castilian Spanish" hello.txt fftext t --lang "casual Japanese" "How are you today?" fftext t --lang "polite Brazilian Portuguese" letter.txt fftext t -l "Moroccan Darija in Latin script" "Where is the train station?"