Documentation
Everything Lyraflow does, and what it does not do yet.
These pages are the product's own documentation, one page per section. It is the one place the surface is written down and kept current, and every limit in it has a number attached.
Written for v0.15 and generated from the README at v0.15.0, so these pages describe one release rather than whatever landed this week.
About v0.15
Self-hosted customer journey analytics. Your data stays on your servers.
Lyraflow records what people do in your product, stitches anonymous visits to known accounts, and lets you ask who did what. It runs on your own machine under Docker, and nothing leaves it.
Early days. v0.15 is the API and the operations behind it — ingest, identity, segments, funnels, event reads, privacy, retention, quotas and backup — with a web UI over the top: a live event feed where any event opens to show everything it arrived with, funnels that read as a flow and whose steps can gate on who someone is as well as what they did, a segment builder that filters on an event’s own attributes as well as its properties, and settings for your projects and your own account. Clicking a funnel step or a segment lists the people behind the number, with their traits.
This release finishes the reporting line it started: retention grids — of the people who did one thing in a period, how many came back and did another — and trends, an event over time split by a property or a column. Both take conditions on the events they name, so one event name can mean two things, and a condition can now ask for text, presence, a flag or a relative date rather than only equality and ordering.
There is now a person profile: their stitched identity, traits, latest context and full event history, opened from a segment member row, a funnel step’s people panel, the feed, the sidebar, or either of the two ways in on the screen itself — a lookup box for an id you already have, and a trait search for when you have none, which pages through everyone matching and links each row to a profile, where there is one to open: a visitor who was never identified has events and no profile, and that link 404s. The search takes one condition on one named trait, with the operator list a segment condition has — comparison, text matching, presence, true/false, relative date. What it will not do is combine conditions, look for a value across every trait at once, or list everyone without naming a condition at all. Journeys and path analysis are still ahead. Trends and retention grids can now be saved and reopened, the same way a funnel already could — but the range one ran over is not part of what gets saved, so reopening a report runs the stored question over whatever range is currently on screen, never the range it was created with. Several saved reports can sit side by side on a dashboard, and one dashboard can be the screen you land on — the range is the viewer’s choice there too, never part of the dashboard. See Web UI for exactly what exists and what does not.
What it is good at
Knowing who someone is. A visitor browses anonymously, signs up two weeks later, then uses your product from a phone. Lyraflow ties all of that to one person, and reads their history back stitched. If two people share a device, each event is attributed to whoever was signed in at that moment — not to whoever used it last.
Deleting someone completely. DELETE /v1/persons/:id erases the underlying
rows, and every read path — segment counts, member lists, person reads, exports
— is filtered from the instant the request is accepted, not when the purge
finishes. A person deleted a second ago is already invisible.
Being cheap to run and hard to surprise. Events go to ClickHouse and identity to Postgres, one container each. Old events expire on a schedule you set. A project can be given a monthly event cap. One script backs both databases up together; another puts them back. Every limit in this document has a number attached, and the ones with known slack say so.
Being scriptable. Events, people, segments, schema and deletions all have
CLI wrappers with machine-readable output, so scripts and agents can use them
without a browser. See packages/cli/README.md.
License
Lyraflow is fair-code distributed under the Sustainable Use License. The source is always visible, and you are free to self-host, use and modify it for your own business.
It is not an OSI-approved open source license. The practical difference: you may not sell Lyraflow as a hosted service to other people.
Contributing
See CONTRIBUTING.md. We’d love your help once the foundation is in place.