redis.exceptions.TimeoutError: Timeout reading from socket (checkout-api)
{ "service": "checkout-api", "action": "page" }
Where log triage usually starts
Most teams triage logs with alert rules that match strings, plus an engineer who reads the rest. Rules miss new errors, and a frontier model is costly at millions of lines a day. A Facet model reads each line and labels it by your rules.
How it works
- Describe the task. Paste the prompt you use today, or write it plainly: “For each error line, return the service, page, ticket or ignore, and a likely cause in a few words.” Add a few real examples if you have them.
- Agree on what good looks like. Facet writes plain statements of a good answer, like “a timeout on the checkout path always pages”, each with examples. Edit any that are off.
- Create, then correct. Facet builds the model on its own, in the background, and tests it against every statement before it goes live. When it labels a line wrong, say what it should have been. Facet quotes the fix before it spends anything.
Two ways to use it
- From your agent: connect Claude, Cursor, ChatGPT, Codex or VS Code to Facet, then paste:
Use Facet to build a model that reads one error log line and returns the service,
whether to page, open a ticket or ignore it, and a likely cause. Here are fifty real
lines and last month's incidents: ... Show me the draft and the price before you
approve anything.
- In your code: keep your OpenAI SDK and change two lines, the address and the model name.
import os
from openai import OpenAI
client = OpenAI(base_url=os.environ["FACET_BASE_URL"], api_key=os.environ["FACET_API_KEY"])
reply = client.chat.completions.create(model="log-triage", messages=[{"role": "user", "content": line}])
Why Facet for log triage
- Built for volume. A model that does one task keeps up with millions of lines a day for less than a frontier model costs.
- Your services, your rules. It knows which errors matter for your stack, not errors in general.
- Checked before every update. An update goes live only if it keeps every statement the live version passes, and any update rolls back in one step.
- Yours. Export it any time, free, and run it wherever you like.
Questions
Can it read a full stack trace, not just one line?
Yes. Send whatever text you would show an engineer, a line or a full trace, and describe the task that way.
Will it ever skip an error that should page?
Make that a rule, such as "never mark a payment error as ignore". Facet tests every version against it on examples it never trained on, and you see the score before you rely on it.
Do my logs leave my systems?
The lines you send to your model are used only to answer the call. Facet stores call details such as token counts, never the text, and our GPU provider deletes each call within 7 days.