NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #2023 by repository stars
Last release 2 months ago
23 Jul 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 19 of 19 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
40 releases · first in 2025
One column per month.
Nothing published for this version
Nothing published for this version
Nothing published for this version
…→ /logs/library , no redirects). Read Breaking changes and How to upgrade before deploying.
Logchef 1.7 is a big one. It makes the metadata store pluggable — run the default single-binary SQLite, or opt into a Postgres backend so multiple replicas share state for high availability. It also ships a redesigned Library for saved queries and collections with a real permission model, turns alerts.enabled into a proper server-wide switch, surfaces token expiry everywhere, and clears a wave of UX bugs — all on Go 1.26.
Heads-up: this release includes one SQLite migration (
000024) and a breaking Library URL consolidation (/logs/saved+/logs/collections→/logs/library, no redirects). Read Breaking changes and How to upgrade before deploying.
Logchef's application metadata — users, teams, sources, saved queries, collections, alerts, API tokens, settings, sessions — can now live in Postgres instead of the embedded SQLite file, so multiple Logchef replicas can serve any request off shared state behind a load balancer. This is the groundwork for high availability.
database.driver = "postgres" and a [postgres] DSN (or LOGCHEF_DATABASE__DRIVER / LOGCHEF_POSTGRES__DSN).See the Database Backends & HA guide — including the current caveat that alert evaluation must run on exactly one replica.
Saved queries and collections are now one place, with a real permission model.
/logs/library — a collections rail on the left, the selected collection's detail on the right. Replaces the old three views (/logs/saved, /logs/collections, /logs/collections/:id) with a single nav item.owner / editor / member. Editors curate and edit the collection's queries; owners also rename/delete and manage members.can_edit / can_delete hints so the UI shows the right actions instead of guessing (and never offers one that would 403).GET /api/v1/saved-queries?scope=all (global-admin only) lists every saved query — including ones not pinned to any collection, which previously had no browse surface. Each row is marked runnable for the caller; queries on sources you can't reach show locked. The default source-gated response used by the explorer dropdown and CLI is unchanged.
alerts.enabled — a real server-wide switch (#98, fixes #97)Setting alerts.enabled = false (or LOGCHEF_ALERTS__ENABLED=false) used to only stop the evaluation scheduler while the API and UI stayed fully live — a confusing "half-off" state. Now a middleware gates the whole subsystem: every /api/v1/alerts/* route (plus the admin test-email / test-webhook endpoints) returns a clean 503, and /api/v1/meta exposes alerts_enabled so the UI hides alerting entirely. Handy for exploration-only deployments, or to keep alert evaluation on a single instance in a multi-replica setup.
The service-tokens admin page now shows the same expiry status as the profile API-token list — never expires / expires / expiring soon / expired — via a shared helper. The API-token model gained a computed expired flag so consumers don't re-derive it, and the CLI flags an expired saved token in logchef auth current.
A reusable type-to-filter picker replaces plain dropdowns for inviting collection members and adding service accounts to teams, and the Manage Sources and team-member tables gain a search box and sortable columns.
:checked/@update:checked, but the underlying reka-ui primitives only expose model-value, so the admin Active toggle, alert enable/disable, source TLS/auth switches, the column selector, and variable multi-selects all silently no-op'd. Rebound to model-value.404 only when something's missing, 403 when the recipient lacks team access (exports & shared queries).account_type set correctly./logs/library is canonical (click vs reload no longer differ), the add-query dialog no longer overflows, ?view=all is preserved, and the date-picker type drift is fixed (TypeScript checks are green and enforced in CI again).Library URL consolidation. The three saved-query / collection views are collapsed into one, with no redirects from the old paths:
| Old | New |
|---|---|
/logs/saved |
/logs/library |
/logs/collections |
/logs/library |
/logs/collections/:id |
/logs/library (select the collection in the rail) |
/logs/saved/:queryId is kept as the canonical share / explorer-hydration link. Update any bookmarked or documented old collection URLs.
Collection creation is no longer team-admin-gated — any authenticated user can create a collection; per-collection roles (owner / editor / member) govern everything after that.
| Backend | Migration | What it does |
|---|---|---|
| SQLite | 000024 |
Rebuilds the collection_members role CHECK to owner | editor | member (adds the collection editor role). Existing rows preserved. Applied automatically on upgrade from 1.6.1. |
| Postgres | 000001_init |
Fresh Postgres backends create the full schema in a single advisory-lock–guarded init migration. |
Take a backup of your SQLite database before upgrading. Migrations are forward-only.
Binary — download the v1.7.0 binary, stop the service, replace the binary, start it. The 000024 SQLite migration applies on first boot; no config changes are needed to stay on SQLite.
Docker
docker pull ghcr.io/mr-karan/logchef:v1.7.0
docker compose down
docker compose up -dPostgres (optional, for HA) — read the Database Backends & HA guide first, then set database.driver = "postgres" with a [postgres] DSN. Run alert evaluation on exactly one replica until leader election lands.
Full changelog: v1.6.1...v1.7.0
Logchef 1.7 makes the metadata store pluggable: alongside the default
single-binary SQLite, you can now run an opt-in Postgres backend so multiple
replicas share state behind a load balancer for high availability. It also ships
a redesigned Library for saved queries and collections with a real
permission model (owner / editor / member + delegated edit), turns
alerts.enabled into a proper server-wide switch, surfaces token expiry
across UI / API / CLI, adds an admin "All Queries" browse, and clears a wave
of UX bugs. Under the hood: Go 1.26, a backend-agnostic store contract validated
by a conformance suite that runs against both databases, and audit-driven
hardening. Breaking: the Library URL consolidation (see below).
database.driver = "postgres" and a [postgres] DSN
(or LOGCHEF_DATABASE__DRIVER / LOGCHEF_POSTGRES__DSN). Startup migrations
take a PostgreSQL advisory lock so concurrent replica boots don't race. Your
logs always stay in ClickHouse and are unaffected.
(#96) See the
Database Backends & HA guide.alerts.enabled server switch. Alerting can be disabled globally
(alerts.enabled = false / LOGCHEF_ALERTS__ENABLED=false). When off, every
alert endpoint returns a clear 503, and /api/v1/meta exposes
alerts_enabled so the UI hides alerting entirely.
(#98)GET /api/v1/saved-queries?scope=all
(global-admin only) lists every saved query, including ones not reachable via
any collection, each marked runnable for the caller (sources you can't reach
show locked). Closes a gap where such queries had no browse surface. The
default (source-gated) response used by the explorer and CLI is unchanged./logs/library (collections rail + detail pane). Collections
gain an editor role (owner / editor / member), and saved-query edit
is delegated: creator, global admin, or an owner/editor of a shared
collection containing the query can edit it (delete stays creator/admin-only).
The Save dialog gains an inline collection picker, and the server sends
can_edit / can_delete hints so the UI only offers actions that will work.expired flag; and the CLI flags an expired saved token in
logchef auth current.ErrNotFound /
ErrConflict) and a WithTx transaction abstraction; SQLite and Postgres are
symmetric implementations, validated by a shared conformance suite that runs
against both in CI. internal/sqlite moved under internal/store/sqlite.owner / editor / member) are the authority.:checked/@update:checked, but the reka-ui primitives only expose
model-value, so the admin Active toggle, alert enable/disable, source
TLS/auth switches, the column selector, and variable multi-selects silently
no-op'd. Rebound to model-value.404 only on
not-found, 403 when the recipient has no team access.account_type set correctly.?view=all is
preserved on the Library route.@internationalized/date (reka-ui date-picker type drift) and cleared the
assorted vue-tsc issues that had accumulated behind a disabled check./logs/saved, /logs/collections, and
/logs/collections/:id collapse into a single /logs/library with no
redirects from the old paths. /logs/saved/:queryId is kept as the
canonical share / explorer-hydration link. Update bookmarked or documented
old collection URLs.| Backend | Migration | What it does |
|---|---|---|
| SQLite | 000024 | Rebuilds the collection_members role CHECK to owner | editor | member (adds the collection editor role). Existing rows preserved. Applied automatically on upgrade from 1.6.1; no other new SQLite migrations. |
| Postgres | 000001_init | Fresh Postgres backends create the full schema in a single advisory-lock-guarded init migration. |
Drop-in for existing SQLite deployments; no config changes required (one small
SQLite migration, 000024, applies automatically). To adopt Postgres for HA,
read the Database Backends & HA guide
first. Note the current caveat that alert evaluation must run on exactly one
replica until leader election lands.
Nothing published for this version
Patch release. Introduces Service accounts — non-login principals that own scoped API tokens — and reworks the API-token surface so every token carrie
Patch release. Introduces Service accounts — non-login principals that own scoped API tokens — and reworks the API-token surface so every token carries an explicit scope list enforced by middleware. Also surfaces ClickHouse column comments through the schema API for the LogChef CLI v0.1.6 to consume.
logs:read, alerts:write, ...). New requireTokenScope middleware enforces them on every route. Presets in the UI: Read-only, Logs viewer, Logs analyst, Alerts manager, Source admin, Full access. Active preset is highlighted while the selection matches.full_name with email as a subtitle.GET/POST/DELETE /admin/service-accountsGET/POST/DELETE /admin/service-accounts/:id/tokensGET/POST/DELETE /admin/service-accounts/:id/teamsdescription field. Consumed by LogChef CLI v0.1.6's schema command.UserProfile "Create API Token" dialog defaults to the Read-only preset. Previously defaulted to Full access (*), which made every checkbox appear disabled-but-checked and gave no choice unless the user manually clicked away.:read scope. Now covers tokens:read, users:read, and settings:read in addition to the resource read scopes. Admin-gated routes still require admin role at the auth layer, so the wider scope set only matters for admin-owned tokens./admin/users/* now 404s on service accounts. Service principals are managed through the dedicated /admin/service-accounts/* path so admins can't accidentally promote a service account to admin via the human-user CRUD path.TokenScopePicker checkboxes are now interactive. The component was binding to :checked / @update:checked, but the shadcn-vue Checkbox forwards reka-ui's CheckboxRootProps, which uses model-value / update:model-value. The bug was hidden behind the old Full-access default; switching the default surfaced it.["*"], minting a god-token.api_tokens.scopes now grants no access instead of *.| Migration | What it does |
|---|---|
| 000023 | Adds users.account_type (human/service) and api_tokens.scopes (JSON array). Existing users default to human; existing tokens default to ["*"] to preserve behavior. Index on users(account_type). |
Full Changelog: v1.6.0...v1.6.1
Nothing published for this version
Logchef 1.6 narrows the Team abstraction to access control only and adds Collections: cross-team curation lists for saved queries. The unified Saved Q
Logchef 1.6 narrows the Team abstraction to access control only and adds Collections: cross-team curation lists for saved queries. The unified Saved Queries view replaces the old team-scoped collections page with a flat, searchable table and a collection-picker dropdown. The release also adds a new Team Editor role and restructures the admin URLs for consistency.
team_queries is
rebuilt as saved_queries(source_id, created_from_team_id, created_by, …).
Visibility: any user with source access via any team. Edit: creator +
global admin./api/v1/saved-queries/:id/resolve returns a transient
resolved_team_id computed from the user's access paths; no team
ownership stored on the query itself./api/v1/alerts route group; alerts.team_id
dropped, alerts.created_by added.query_shares and export_jobs lose team_id./api/v1/collections: CRUD for collections + members + items.requireAnyTeamCollectionMutator
(admin or editor in any team). Team admin-only routes (membership
management, source linking, /api/v1/users) stay strict on
requireAnyTeamAdmin./management/* → /admin/*,
/profile → /settings/profile, /admin/sources/list → /admin/sources,
/admin/sources/edit/:id → /admin/sources/:id/edit. No redirects from
old paths./logs/saved/:queryId is the canonical share link.owner + member roles. Items a member can't run
show with a runnable: false flag (lock icon in UI)./logs/saved with a
collection-picker dropdown (All Queries / My Collection / shared
collections), inline search, and a Metabase-style flat table.resolved_team_id: The /resolve
endpoint deterministically picks the correct team for execution using
priority: explicit ?team_id hint → created_from_team_id →
first accessible team fallback.created_from_team_id on saved queries: nullable metadata
recording which team context the query was saved from. Used as a
preference hint during resolve; not an ACL gate.skip_email_verified_check option.
(#85,
#86)PageHeader, PageSection, EmptyState,
LoadingState under components/layout/. Replace the ad-hoc empty/
loading/header markup across admin and settings pages with one
consistent visual language.useTeamPermissions() composable: central frontend role-check
API: isGlobalAdmin, isAnyTeamAdmin, isAnyTeamCollectionMutator,
isTeamAdmin(teamId), isTeamCollectionMutator(teamId),
canSaveQuery, canEditSavedQuery(query), canManageCollection(c).useTeamPermissions./logs/collections
is a standalone management page (create, delete, navigate to detail).team_id / team_name fields.
Recipients resolve to users directly.Search and
Database); the previous near-identical file icons were hard to tell
apart at small sizes.PageHeader +
PageSection layout. The whole-page Card wrapper pattern is gone.resolveTo() helper.[query] max_limit cap (default 100k
rows). A large unbounded result set previously exhausted the browser
renderer.currentSourceDetails.id === contextStore.sourceId before executing,
so newly-selected sources don't run the previous source's query.sourcesStore.loadSourceDetails: a fast
source switch is no longer overwritten by an older in-flight response.source_id now
overrides stale URL ?source= param.is_bookmarked column): replaced by personal
collections.team_id on saved queries, alerts, query shares, export jobs.loadTeamSourceQueries,
createTeamSourceQuery, useQueryFoldersStore, etc.).| Migration | What it does |
|---|---|
| 000016 | Drops query_folders + query_folder_items |
| 000017 | Rebuilds team_queries → saved_queries, drops team_id, adds created_by |
| 000018 | Drops team_id from alerts, query_shares, export_jobs; adds alerts.created_by |
| 000019 | Creates collections, collection_members, collection_items |
| 000020 | Drops is_bookmarked; seeds personal collections; migrates bookmarks to collection items |
| 000021 | Adds created_from_team_id to saved_queries; backfills from team_sources |
logchef-mcp (separate repo) needs rewiring to /api/v1/saved-queries.Nothing published for this version
Rich value autocomplete in LogchefQL editor: After typing host=, the editor instantly suggests top field values with occurrence counts (e.g., cdn.logc
host=, the editor instantly suggests top field values with occurrence counts (e.g., cdn.logchef.dev (1.7K)). Suggestions come from the sidebar's cached field data, so no additional network calls happen during typing. Supports partial matching inside quotes, auto-quoting string values, and proper escaping of special characters.status (UInt16) and bytes (UInt32) now appear as filterable fields and auto-load their top values alongside LowCardinality fields.exploreFieldValues) allows the sidebar and editor to share field value data, eliminating redundant API calls.@theme directives, and @tailwindcss/vite plugin (replaces PostCSS).Cmd+B.user-identifier are now backtick-quoted in all SQL queries (field values, histograms, group-by). Previously caused user - identifier subtraction errors.ValidationError type instead of 500 Internal Server Error.hsl(var(--...)) → var(--...)).row?.ts) to prevent crash when data is empty.baseLineHeight: 21 → 20 to match Monaco's lineHeight).IdleTimeout and periodic QueryTracker cleanup to prevent connection leaks.file:line.cursor-pointer base rule for all interactive elements (TW4 preflight removed it).Nothing published for this version
Maintenance release on top of v1.4.0.
Maintenance release on top of v1.4.0.
user.login
stays at INFO; the rest is audit-grade noise that doesn't belong in the
default log stream.slog source field flattened to file:line. Easier to grep, fewer
bytes per line.IdleTimeout and a periodic
QueryTracker sweep so leaked connections don't accumulate.Declarative provisioning: Define teams, sources, and access control in a TOML config file for GitOps-style management. Resources declared in config ar
provisioning.toml file, and an admin export endpoint (GET /admin/provisioning/export). API rejects mutations on managed resources.KILL QUERY can execute.updated_at to the bookmark index for efficient sorted queries.Nothing published for this version
Configurable query result limit: New [query] config section with max_limit setting (default: 1,000,000 rows). Allows admins to increase export limits
[query] config section with max_limit setting (default: 1,000,000 rows). Allows admins to increase export limits based on infrastructure capacity. Frontend dropdown now shows options up to 1M rows.Maintenance release on top of v1.2.1. Bundles the CLI v0.1.3 bump.
Maintenance release on top of v1.2.1. Bundles the CLI v0.1.3 bump.
versionString linker flag now reaches the UI sidebar, so the version
badge matches the running binary instead of falling back to unknown.{{ ... }} examples render
literally.Nothing published for this version
Explore history URL hydration: Fixed issue where browser history navigation could fail to restore query state correctly.
Rust CLI: New cross-platform command-line interface written in Rust
logchef auth: Browser-based OIDC authentication with PKCE flowlogchef query: Execute LogchefQL queries with syntax highlighting (powered by tailspin)logchef config: Manage CLI configuration and multiple server contextslogchef query --no-timestamp: Hide timestamps in text output for cleaner exports~/.config/logchef/logchef.jsonoidc.cli_client_id added to config.toml and docs for browser-based CLI authPOST /api/v1/cli/token endpoint for CLI authentication/api/v1/meta now includes oidc_issuer and cli_client_id for CLI auth flowIN (...) clauses in SQL.[[ ... ]]): Wrap variable clauses to auto-remove when value is empty.cmd/logchef/, internal/cli/): replaced by Rust CLI.config.sample.toml: superseded by the fully commented config.toml.Nothing published for this version
Bookmark Favorite Queries - Star saved queries for quick access
/logs/collection/:teamId/:sourceId/:collectionIdNothing published for this version
The 1.0 release marks Logchef as production-ready. Eight months of development brought alerting, a proper backend query language, field exploration, a
The 1.0 release marks Logchef as production-ready. Eight months of development brought alerting, a proper backend query language, field exploration, and many UX improvements.
LowCardinality, Enum, and String columns with occurrence countsfield="value") or exclude it (field!="value")internal/logchefql/) - full parsing, validation, and SQL generation in Go
|) for custom SELECT clauses: namespace="prod" | namespace msg.levellog_attributes.user.name = "john"log_attributes."http.status_code" >= 500/logchefql/translate, /logchefql/validate, /logchefql/query/fields/values, /fields/:fieldName/valuesEsc key cancels the query in ClickHousejust build-ui-analyze for bundle analysis, just clean-all for deep clean/logchefql/query - backend builds and executes full SQL/logchefql/translatelogchefql param instead of conditionsAlerting System - SQL-based alerting with notification delivery
config.sample.toml showing minimal essential configurationconfig.sample.toml to show only bootstrap essentials (server, sqlite, oidc, auth, logging)https://api.openai.com/v1)query_type and lookback_seconds fieldsdelivery_failed flag cleared after successful retryupdateCustomFields method removed from monaco-adapterLogchefQL Query Language Improvements
|) for custom SELECT fields: namespace="prod" | namespace msg.levellog_attributes.user.name = "john"log_attributes."user.name" = "alice"Query Variables - Use {{variable_name}} in LogchefQL or SQL, input fields appear for each variable
{{variable_name}} in LogchefQL or SQL, input fields appear for each variableMCP Server Integration - Model Context Protocol server for AI assistant integration
Full Changelog : v2.0.1...cli-v0.2.2
Full Changelog: v2.0.1...cli-v0.2.2
Nothing published for this version
Full Changelog : cli-v0.2.0...cli-v0.2.1
Full Changelog: cli-v0.2.0...cli-v0.2.1
Patch release for the Logchef CLI.
logchef in an interactive terminal shows the
current version and a branded banner. It can be disabled in config, with an
environment variable, in CI, or with --quiet.--quiet.Nothing published for this version
Full Changelog : v2.0.0-alpha.1...cli-v0.2.0
Full Changelog: v2.0.0-alpha.1...cli-v0.2.0
Logchef CLI 0.2.0 is the VictoriaLogs release: query, sql, find, and
tail all work against VictoriaLogs sources, and tail follows both backends
over a native SSE stream (with a --poll fallback) instead of the old polling
loop. It also adds a batch of inspection and setup commands — explain,
fields, histogram, open, doctor, skills, and completions — plus a
global --quiet, syntax-highlighted generated queries, and actionable error
hints.
explain command: Print the generated ClickHouse SQL / VictoriaLogs
LogsQL for a LogchefQL query without executing it. Syntax-highlighted.fields command: Discover fields on a source and their top values, for
building a query without opening the explorer.histogram command: Counts-over-time buckets rendered as a terminal bar
chart. Works against both ClickHouse and VictoriaLogs sources.open command: Open the current query in the web explorer. Accepts a
relative --since or an absolute --from / --to, --sql for a native
query, and --print to emit the URL instead of launching a browser.doctor command: Diagnose your setup — config, auth, server
reachability, version compatibility, and resolved defaults — with fix hints
for each failing check. --json for machine-readable output.skills command: Serve the bundled, version-matched CLI skill for AI
agents: logchef skills get core [--full].completions command: Generate shell completions for bash, zsh, fish,
and powershell.tail: tail follows both ClickHouse and VictoriaLogs sources
over a server-sent-events stream, replacing the old bounded-polling loop. Use
--poll to fall back to polling.--quiet / -q: Suppress progress and diagnostic output on any
command for clean scripting.query, sql, find, and tail now work against
VictoriaLogs sources, not just ClickHouse. sql --since / --from / --to
time injection and query --dry-run are fixed for VictoriaLogs.explain and the --show-sql
trace on query / sql are syntax-highlighted on a TTY.Initial public release.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →