Brytlog replaces raw logs with AI summary, thus saving developers time, trouble and money.
In agentic workflows brytlog acts as a cheap, fast pre-processor to the chief agent.
For example, Claude Opus 4.8 (chief agent) might run brytlog python run.py
, rather than the plain python run.py
. This way, instead of having to process the entire raw output on its own (slow, expensive, bloats context), it will only get a concise summary, generated by a cheaper, faster model, such as Gemini-3-flash.
- As a fail-safe, raw logs are saved so they can be accessed by the chief agent or developer if still needed (this is a toggleable feature in config).
- Even the cheaper model doesn't get the full raw dump, just the important parts, thus saving even more time and money.
In non-agentic, dev-driven workflows, brytlog simply saves the developer the time and trouble of analyzing raw output by himself, or copy-pasting lines into a coding assistant.
- free
- open source
- platform, language and llm vendor agnostic
- minimal setup (just bring your own key, or run locally)
- no need to change existing code (just add a couple of lines to AGENTS.md)
- lightweight (~50 KB, ~1,400 lines of code)
- customizable
- privacy-minded (brytlog doesn't collect any data, and it redacts sensitive information before passing it to the LLM)
| Without brytlog | With brytlog | With brytlog --json |
|---|
demo-no-brytlog.mp4 | #
demo-with-brytlog.mp4 | #
demo-json-output.mp4 | #
pip install brytlog
After installation either run a command using brytlog (e.g. brytlog node main.js
), which will launch an on-boarding config process in the terminal, or run brytlog --config
to open a json configuration file in your default editor.
-
LLM provider (e.g. Anthropic)
-
Model (e.g. claude-haiku-4-5)
-
API key (e.g. JQ.Ab9RN6W6QW7cmcnY92DIuoVtjCpKm_qfmO5T5oGzQmnwe5fjhw)
-
Google Gemini: Use keys from Google AI Studio ( [https://aistudio.google.com/]). Google Cloud Vertex AI is not natively supported yet.- Custom Providers: Supports OpenAI-compatible endpoints (Ollama, vLLM, etc.) via standard
Authorization: Bearer
headers. Azure OpenAI is not natively supported yet.
- Base URL (e.g. http://localhost:11434/v1)
Simply prefix any command with brytlog
.
Syntax: brytlog [options] <command>
.
Examples:
brytlog python run.py
brytlog --api-key xyz... node build.js
brytlog --model claude-haiku-4-5 ./deploy.sh
Wrap the entire string in quotes to run multiple commands together.
brytlog "pip install -r requirements.txt && python run.py"
brytlog "node main.js
npm run serve"
Either prompt inline at the beginning of a session or add this or similar to AGENTS.md:
brytlog replaces raw terminal output with a concise AI summary.
Use it for interpreters (e.g.`python`, `node`), compilers, build tools (e.g. `npm`, `make`), and test runners (e.g. `pytest`). Do not use it for standard OS utilities (e.g.` ls`, `cat`), version control (e.g.` git`), or interactive CLI tools (e.g.` htop`).
Syntax: `brytlog [options] <command>` (e.g., `brytlog --json python run.py`).
Instead of raw log, a short report is outputted to the terminal.
────────────────────────────────────────────────────────────
🧠📜 brytlog crash report
Problem
The program crashed due to a TypeError when attempting to divide an integer by a string. The 'items' value from the configuration is a string and needs to be converted to an integer for arithmetic operations.
Fix
Convert payload['items'] to an integer before division in /var/folders/ys/zfg72rwd661dn0cnrsqth5sh0000gn/T/tmph1e0wuse.py, line 6:
average = payload['total'] / int(payload['items'])
Full report → /path/to/project/brytlog-reports/2026-06-15T14-11-51.log
Full raw log → /path/to/project/brytlog-raw/2026-06-15T14-11-51.txt
────────────────────────────────────────────────────────────
| Flag | Description |
|---|---|
--version |
|
| Show program's version number and exit | |
--config |
|
| Open the configuration file | |
--reset |
|
| Reset configuration to defaults | |
--upgrade |
|
| Upgrade brytlog to the latest version on PyPI | |
--test |
|
| Run a simulated crash to test the LLM configuration | |
--logs |
|
List recent logs from the local brytlog-reports/ directory |
|
--provider |
|
LLM provider (google , openai , anthropic , grok , ollama , custom ) |
|
--model |
|
LLM model to use (e.g., gpt-4o-mini ) |
|
--api-key |
|
| Pass API key inline | |
--api-base-url |
|
Base URL for custom or ollama providers |
|
--json |
|
| Output the report as JSON | |
--no-log |
|
Disable writing AI reports to the local brytlog-reports/ directory |
|
--no-raw-log |
|
Disable writing raw logs to the local brytlog-raw/ directory |
|
--quiet |
|
| Suppress the live stream of raw logs in the terminal (default) | |
--no-quiet |
|
| Display the live stream of raw logs in the terminal (override quiet default) |
| Variable | Default | Description |
|---|---|---|
BRYTLOG_API_KEY |
||
| — | Required for crash reports (unless using local llm) | |
BRYTLOG_PROVIDER |
||
| — | LLM provider | |
BRYTLOG_MODEL |
||
| — | LLM model | |
BRYTLOG_API_BASE_URL |
||
| — | Required for custom provider |
|
BRYTLOG_SAVE_REPORT |
||
true |
||
Set to false to disable AI report files |
||
BRYTLOG_SAVE_RAW_LOG |
||
true |
||
Set to false to disable raw log files |
||
BRYTLOG_QUIET |
||
true |
||
Set to true to mute live terminal output |
||
BRYTLOG_MAX_INPUT |
||
4000 |
||
| Max tokens (approximate) of terminal output to keep | ||
BRYTLOG_SYSTEM_PROMPT |
||
| (built-in) | Custom system prompt for the crash report | |
BRYTLOG_TEMPERATURE |
||
0.2 |
||
| Model temperature | ||
BRYTLOG_MAX_OUTPUT |
||
1000 |
||
| Max tokens for the report. Note: API token limits are automatically padded (min 2048) to accommodate reasoning models. |
brytlog runs a given command as a child process, diverts its stdout
and stderr
away from the terminal by default, and instead only outputs a concise AI summary of the run.
Possible scenarios:
Clean success(exit0
, no warning-like keywords): reports success and sends nothing to the LLM.Success with warnings(exit0
, keywords such aswarning
,deprecated
, orskipped
detected): sends a sampled head / warnings / tail excerpt to the chosen LLM for a short summary of the run.Crash(non-zero exit): sends a token-bounded head-and-tail excerpt of the output to the LLM and prints a concise problem/fix report.
Because brytlog wraps the process rather than hooking into it, it works for any language or runtime with no changes to the program being run.
flowchart TD
A[Run command] --> B[Capture output and exit code]
B --> C{Success}
C -- Yes --> D{Warnings detected}
C -- No --> F[Build excerpt]
D -- No --> E[Print success]
D -- Yes --> F
F --> G[Send to LLM]
G --> H[Print AI report]
B -.-> I["Save raw log (optional)"]
H -.-> J["Save AI report (optional)"]
- CLI flags take precedence over environment variables, which in turn take precedence over the config file.
- Configuration is saved globally to
~/.brytlog.json
(C:\Users\Name\.brytlog.json
on Windows). You can edit this file directly or runbrytlog --config
to open it.- Logs are saved locally to
brytlog-reports/
andbrytlog-raw/
in the current working directory. You may want to addbrytlog-*/
to your.gitignore
.- To be clear: raw command output is muted (run in quiet mode) to humans and AI agents by default to save tokens and prevent context bloat. In quiet mode,
stdin
is redirected to/dev/null
, meaning any interactive prompt will instantly crash the program (e.g.EOFError
) to generate a helpful AI report rather than hanging indefinitely. Brytlog only prints the concise AI report if a command fails. To display the live stream of raw logs in the terminal as usual and answer interactive prompts, use--no-quiet
.- Reasoning models (e.g., Gemini Flash-3-Preview): These models spend a large portion of their output budget on "thinking" tokens. Brytlog automatically enforces a 2048-token floor at the API level to ensure these models have room to think, while still instructing them to keep the visible report under your
MAX_OUTPUT
limit.- Enforcing agent use of brytlog, rather than relying on AGENTS.md or direct prompting, is also possible (e.g. via subprocess shim on PATH), but out of scope in this version.
MIT