v3.5.3
2026-08-10
Shipped
Native IP-list enforcement + incremental alert remediation
Country and CIDR IP lists compile into a compressed native tiyi_iplist artifact ahead of Coraza, so large geo:CC blocks cannot truncate CRS. Auto-remediation keeps appending bounded attacker batches while an alert stays firing, with rule-owned deny lists and fail-closed rate-limit state budgets.
v3.5.2
2026-08-09
Shipped
Display timezone + clearer protection authoring
The Web UI resolves one display timezone (browser override → system app.timezone → browser IANA) for tables, charts, and range inputs while storage stays UTC. IP Lists teach Define → Apply → Verify; the custom-rule regex operator opens an RE2 workbench; Audit Trail surfaces readable summaries with cursor paging; CRS paranoia uses shared PL1–PL4 posture controls.
v3.5.1
2026-08-06
Shipped
Fail-closed client-IP topology + intent-based rule drafting
Client-IP Headers each choose automatic verified-proxy skipping or fixed extraction; CDN/proxy ranges compile into one physical pool with fail-closed topology checks. Attack Logs reorganize Create rule from this event by operator intent—block, tune CRS false positives, or confirm a CRS-only skip that keeps Tiyi custom and IP controls active—with explicit path/method scope and root-path guards.
v3.5.0
2026-08-03
Shipped
Executable client-IP topology + safer protection authoring
Client IP moves to an executable node/edge/rule topology with Sites as the sole global entry, live sampling analysis, verified drafts, and path-conditioned multi-CDN headers. Dashboard rankings support one-click global IP or geo:CC response. Endpoint rate limits now use one canonical inventory with unique per-scope paths and deterministic site precedence; Attack Logs draft exact/tree/context rules or narrow CRS exclusions, and focused editors protect modified drafts.
v3.4.0
2026-07-30
Shipped
One Controller, convergent configuration, operator trust
tiyi run is the sole writable Controller and owns a factual built-in local node; legacy HA, role, promotion, and replication surfaces are gone. Durable desired/active revisions, immutable artifacts, local rollback, exact Agent delivery, and generation-bound upstream health make the served configuration inspectable and recoverable. Generated fail-closed authorization, rotating HttpOnly sessions, automatic Geo data, exact bandwidth views, site request-path overviews, and adaptive row actions complete the operator hardening. This clean-break release requires fresh state for databases below schema 47.
v3.3.1
2026-07-24
Shipped
Request evidence + producer-direct SIEM
Default-off Request Evidence can retain parsed headers and bounded body bytes beside Attack and Access logs, with global/site policy, quotas, retention, and resumable Agent upload. Producer-direct SIEM adds independent destinations for native Caddy access JSON, Coraza audit JSON, and Tiyi-formatted events. Normalized URL/UA Top, prior-day WAL reclamation, and automatic Go memory limits improve day-two operations; every new lane remains bounded and panic-isolated from WAF traffic.
v3.3.0
2026-07-22
Shipped
SecurityFacts consolidation + alert auto-remediation
The sessionized incident, attack-campaign, and MITRE-mapping layer is removed; immutable, partitioned SecurityFacts are now the sole security-event truth, with a fresh-install schema-43 cutover. Alert auto-remediation turns a firing alert into a reviewed IP-list or custom-rule draft; a durable fact journal and bounded Live Tail (≤200 rows, one event per 500 ms window) keep investigation fast. Operator docs, merge log, and website synchronized in EN + zh.
v3.2.1
2026-07-17
Shipped
v3.2.0 QA hardening + reliability
Closes the v3.2.0 QA pass: unmatched Host headers return 421 instead of bypassing the WAF, CRS rule 980099 outbound correlation runs cleanly, and drawer, auto-close, and i18n defects are fixed. Reliability additions include SQLite BUSY retry, an orphan-evidence lookup index with a durable join worker, and bounded per-response network GeoIP enrichment.
v3.2.0
2026-07-16
Shipped
Observation v2 + persistent attack campaigns
Exact hot-path counters, compact Findings, retained evidence, and SIEM delivery are now independent. Persistent Attack Campaigns correlate incidents into revisioned evidence graphs and timelines with deterministic source/target, Geo/ASN, and MITRE projections. Telemetry Explorer adds API Inventory, alerts become localized and evidence-linked, and all operator docs/screenshots now cover the new workflows. Pre-v3.2 development/test state requires an explicit clean reset and agent re-enrollment.
v3.1.0
2026-07-12
Shipped
Task-oriented navigation + accessible admin workspaces
The management plane now follows seven operator jobs instead of code-shaped resource silos, with stable routes and permissions. A focused responsive shell, keyboard-operable menus, clearer current-page state, permission-aware groups, shared empty/diff/live/apply patterns, and reorganized policy/site-security workspaces make the console faster to scan and safer to edit on desktop and mobile.
v3.0.9
2026-07-10
Shipped
Visual-rule bypass action + responsive admin UI
The custom-rule builder gains an explicit Bypass WAF action for tightly scoped false-positive exceptions: it compiles to pass,nolog,ctl:ruleEngine=Off so matching traffic skips the rest of WAF inspection, while plain Pass is now silent (pass,nolog) and only passes that one rule. The security-event drawer adds an Allow this path / false positive handoff that drafts a bypass rule from the event. Across the admin UI, drawers and modals clamp to the viewport via a shared responsive-width helper, markdown code blocks get a native copy button, and the recipe-template catalog moves behind a compact Browse recipes launcher; a field-mask path fix lets visual-spec custom rules save correctly.
v3.0.8
2026-07-09
Shipped
Policy enforcement hardening + doctor state-ownership repair
A focused hardening pass on v3.0.7: policy-wide rate limits now apply to sites running the inherited policy (not just sites with an overlay); IP-list update_mask no longer resets kind; CRS enable_default_collections becomes a tri-state that survives protojson round-trips; and tiyi doctor gains --fix-state-ownership to repair service-owned state trees. The security-event "create rule" handoff is fixed, the site policy-override modal becomes an inline panel, and list views share one datetime formatter.
v3.0.7
2026-07-08
Shipped
Scoped IP control + site security overlays
IP lists are now reusable data objects whose effective action is chosen at global, policy, or site binding scope. The new IP Control flow adds global lists, reference counts, scoped lookup, and apply-now targets; site rows get a Security protection drawer for inherited policy rows plus editable deltas; security events can quick allow/block source IPs; and install now fixes root-owned state trees before systemd starts Tiyi.
v3.0.6
2026-07-06
Shipped
Alert-rule authoring redesign + dashboard/telemetry rework
The alert-rule builder is now template-first with a grouped kind dropdown and an incident→alert bridge; the dashboard overview is reworked around a site filter + time range; the telemetry explorer gains a QPS/blocked chart with crosshair; site TLS, agent groups, and alert silences gain new controls; and dead alert-condition fields are fixed.
v3.0.5
2026-07-04
Shipped
Agent metrics trend + apply/update hardening
The agent detail drawer keeps 7 days of metrics with a trend view; the dashboard top-attacker drill-down honors the selected time range; IP-literal site hosts apply cleanly via a single-certificate loopback health check; run/agent run a startup preflight; and tiyi update shows progress and pre-checks privileges.
v3.0.4
2026-07-02
Shipped
Install diagnostics + tiyi doctor
install.sh keeps the default sudo tiyi install --now path, then highlights sudo PATH and 80/443/8080 listener conflicts with exact next steps. tiyi doctor reruns the same non-mutating diagnostics for run, agent, and dashboard installations.
v3.0.3
2026-07-02
Shipped
China mirror install + signed update fallback
install.sh and tiyi update now use GitHub as the primary release source with a Gitee fallback for operators on slow or blocked GitHub links. Force the China mirror with TIYI_MIRROR=gitee for install or tiyi update --mirror gitee for updates. Public docs now expose only config-derived runtime env vars, use tiyi update consistently, and keep GitHub/Gitee distribution docs in lockstep.
v3.0.2
2026-06-28
Shipped
Frictionless install + deterministic first-run admin
sudo tiyi install --now is the default single-host path: it pre-creates the first administrator before starting the service and prints the login (URL + username + password) right there, so the one-time secret never lands in the journal. Re-running install.sh on a host that already has tiyi updates the binary in place and restarts the service instead of re-downloading. The API and dashboard now bind 0.0.0.0:8080 by default.
v3.0.1
2026-06-27
Shipped
Multi-node Agent install + operations
Run one Controller as a hardened systemd service with tiyi install --now, then use Nodes → Install to download the binary, issue a one-use token, and choose systemd or foreground startup for each remote data plane. WAF-enabled sites deploy and block (SQLi / XSS / LFI → 403) on remote Agents, the embedded CRS is materialized Agent-side, and per-Agent metrics stream continuously.
v3.0.0
2026-06-26
Shipped
First public release
Tiyi v3.0.0 is published on GitHub Releases with signed Linux amd64/arm64 artifacts, SHA256SUMS, SHA256SUMS.sig, and release-manifest.json. Install from www.tiyisec.com/install.sh or the GitHub raw mirror, verify downloads against release-key.pub, and update with tiyi update --yes.
2026-06-24
Shipped
One-binary scale licensing + first-run admin
Tiyi ships as one always-enforced binary that gates scale, not features. Without a valid license, Community includes the built-in local node and zero remote Agents; importing a vendor-signed license activates the Pro or Enterprise remote-node budget. The embedded vendor public key is the sole trust anchor, legacy license.mode writes are rejected, expired or invalid licenses safely degrade to Community, and known Agents always reconnect. The authenticated About page shows edition, licensee, expiry, and live node count. A first tiyi run start with no users auto-creates an admin with a one-time random password instead of a dead-end login.
2026-06-18
Shipped
Path-based routing
A site can now fan out by path prefix to multiple upstream pools behind one host and one certificate — API-gateway style. Each route carries its own post-apply health probe; unmatched paths fall through to the site default or a strict 404 allowlist. Path scope is canonicalized identically across the WAF, IP lists, and the rate limiter, and every access-log row records the route_id and upstream_id that served it. Drive it from the tiyi site routing CLI or the new web routes editor.
2026-06-18
Shipped
Policy rate-limit editor
The policy Rate Limits tab is now a real operator editor. Endpoint rows are path-pattern limits keyed by the resolved client IP, with a log-only canary mode; client-scope rows set global ceilings by IP, session cookie, or a named header. Inline validation blocks any row the agent could not actually enforce, and the API canonicalizes legacy scopes/actions on save. Enforced before Coraza, with no persistent collections.
2026-06-09
Shipped
AI advisory layer + interactive Copilot
An optional, default-off LLM layer beside the deterministic WAF — in the control plane, never in the request path. A global AI Copilot slide-over explains any incident or log event and analyzes filtered results; a conversational StreamChat agent answers questions like "top attackers in the last hour" by tool-calling over read-only, tenant-scoped log queries. Incident enrichment, policy-tuning, NL→query translation and draft rules stay advisory — applied only on explicit, audited operator approval. Provider-agnostic (OpenAI-compatible / Azure / Ollama / vLLM); every prompt redacted, dual-RBAC gated, and rate-limited.
2026-06-09
Shipped
Air-gap icons, telemetry explorer, static binary
The admin console now bundles its icons offline, so air-gapped consoles never reach the public Iconify API. A new telemetry explorer surfaces Top-N and time-series breakdowns over the built-in pipeline. Release binaries are statically linked (CGO_ENABLED=0), so the same artifact runs on older distributions (CentOS 7+). Plus stable per-event access-log IDs and a reachable post-login landing page for permission-restricted operators.
2026-05-31
Shipped
Security incident aggregation (Phase 1–4)
A security_incident layer above per-request events. Same (site, client IP, attack class) over a sliding idle window collapses into one operator-actionable incident — severity rolled up, lifecycle tracked, with reopen / merge / live-tail and per-site overrides. Every incident is tagged at creation with its MITRE ATT&CK technique + kill-chain stage and a country/ASN geo rollup. Optional, default-off automated response (deny IP list / rate-limit / webhook) with 60-second TTL auto-reversion.
2026-05-31
Shipped
Alerting redesign + security hardening
The alert evaluator gains the evaluation/notification split the industry converged on: for-duration debounce, a pending → firing → resolved lifecycle, a durable notification outbox, re-notify, retry-with-backoff, grouping, inhibition, and silences. Channel secrets moved to KEK-encrypted storage. Also closed a fail-open RBAC gap on system/cert admin RPCs and fixed built-in dashboards reading zero traffic (telemetry now ingested from StoreAccess).
v3.0.0-rc.1
2026-05-27
Shipped
Direct page-jump pagination for log views
Closes the post-rc.1 operator bug where reaching page 320 of a 7-day security log fired 319 sequential RPCs. CursorRequest now carries an offset field with a 100k cap; offset accounting runs over post-filter rows so CIDR/rule filters skip the right number of matched rows.
2026-05-26
Shipped
Six post-deploy QA fixes
IP-list geo:CC entries accepted at the API; bookmarkable parametric routes (/agents/:id, /waf/policies/:id) re-registered after backend menu generation; ResolveAgentGroup implemented with id and ad-hoc spec; remote Agent command delivery hardened; trust-profile mutations chained into the audit log; access-log default flipped to on.
2026-05-24
Shipped
Security hardening + frontend cleanup
KEK persistence fix (no more ephemeral KEK overwriting kek.bin), persistent ed25519 bundle signing key, agent revision replay protection, migration drift detection via schema_migration checksums, and SIEM dispatcher cached-conn reconnect-on-error. Frontend dropped 16 Vben demo pages and rewired the layout shell.
2026-05-16
Shipped
Client-IP trust pipeline
One trust pipeline ends per-component XFF parsing fragmentation. CDN-aware CIDR snapshots for Cloudflare, Fastly, Akamai, CloudFront, Front Door, and GCLB. Per-site overrides; an explain tool that traces every header to the resolved client IP.