{"id":46328085,"url":"https://github.com/lynxbase/lynxdb","last_synced_at":"2026-04-23T20:01:18.293Z","repository":{"id":341904354,"uuid":"1171631123","full_name":"lynxbase/lynxdb","owner":"lynxbase","description":"A lightweight schema-on-read analytics in a single binary","archived":false,"fork":false,"pushed_at":"2026-04-19T15:23:39.000Z","size":16992,"stargazers_count":13,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-19T17:15:15.646Z","etag":null,"topics":["analytics","database","devops","golang","logging","splunk"],"latest_commit_sha":null,"homepage":"https://docs.lynxdb.org/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lynxbase.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-03T12:48:10.000Z","updated_at":"2026-04-19T15:23:44.000Z","dependencies_parsed_at":"2026-03-12T23:05:06.244Z","dependency_job_id":null,"html_url":"https://github.com/lynxbase/lynxdb","commit_stats":null,"previous_names":["orlovevgeny/lynxdb","lynxbase/lynxdb"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/lynxbase/lynxdb","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lynxbase%2Flynxdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lynxbase%2Flynxdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lynxbase%2Flynxdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lynxbase%2Flynxdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lynxbase","download_url":"https://codeload.github.com/lynxbase/lynxdb/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lynxbase%2Flynxdb/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32196155,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T15:28:30.493Z","status":"ssl_error","status_checked_at":"2026-04-23T15:28:29.972Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","database","devops","golang","logging","splunk"],"created_at":"2026-03-04T17:01:16.442Z","updated_at":"2026-04-23T20:01:18.286Z","avatar_url":"https://github.com/lynxbase.png","language":"Go","readme":"# LynxDB\n\u003cdiv align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/assets/lynxdb-logo-transparent-w.png\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"docs/assets/lynxdb-logo-transparent.png\"\u003e\n    \u003cimg alt=\"LynxDB logo\" src=\"docs/assets/lynxdb-logo-transparent.png\" height=\"300\"\u003e\n  \u003c/picture\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/lynxbase/lynxdb/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/lynxbase/lynxdb?color=brightgreen\u0026display_name=tag\" alt=\"Latest Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/lynxbase/lynxdb/actions/workflows/ci.yaml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/lynxbase/lynxdb/ci.yaml?branch=main\u0026label=build\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://docs.lynxdb.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-lynxdb.org-blue\" alt=\"Docs\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nLog analytics in a single binary. No dependencies. Lynx Flow query language.\n\n\u003e LynxDB is in active development and **not yet production-ready**. APIs, storage format, and query behavior may change without notice between releases. Feedback and contributions are welcome\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/pg_demo.gif\" alt=\"LynxDB demo\"\u003e\n\u003c/p\u003e\n\n## Lynx Flow\n\nLynx Flow is LynxDB's query language - a pipeline language where data flows left-to-right through commands separated by `|`. Commands are named for what they do: `parse`, `let`, `where`, `group`, `order by`, `take`.\n\n```\nfrom nginx\n| parse combined(_raw)\n| status \u003e= 500\n| group by uri compute count() as hits, avg(duration_ms) as latency\n| order by hits desc\n| take 10\n```\n\n## Quick start\n\n```bash\ncurl -fsSL https://lynxdb.org/install.sh | sh\n```\n\nPipe logs through lynxdb - no server, no config:\n\n```bash\n# From raw logs to p99 latency in one line\nkubectl logs deploy/api | lynxdb query '\n      | group by endpoint compute avg(duration_ms), perc99(duration_ms)'\n\n# Three nested formats, one pipeline, zero config\ndocker logs api-server 2\u003e\u00261 | lynxdb query '\n      | parse docker(_raw)\n      | parse json(message)\n      | explode errors\n      | group by errors.code, errors.service compute count() as cnt\n      | order by cnt desc | take 10'\n\n# Wildcard array extraction - like jq, but with aggregation:\ncat orders.json | lynxdb query '\n      | json items[*].price AS price, items[*].product AS product\n      | explode product, price                     \n      | let revenue = price * qty                          \n      | group by product compute sum(revenue) as total_revenue          \n      | order by total_revenue desc''\n```\n\nOr run as a persistent server:\n\n```bash\nlynxdb server\nlynxdb ingest nginx_access.log --source nginx_access --index balancer --batch-size 100000\nlynxdb query '\n      | parse combined(_raw)\n      | method=\"POST\" AND status \u003c 300\n      | parse json(request_body)\n      | json items[*].sku AS skus\n      | explode skus\n      | group by skus compute count() as purchases, dc(client_ip) as unique_buyers\n      | order by purchases desc\n      | take 20'\n```\n\nGenerate sample data and explore:\n\n```bash\n# Start the demo (streams realistic logs from 4 sources at 200 events/sec)\nlynxdb demo\n\n# Try in another terminal:\nlynxdb query 'from nginx | group by status compute count()'\nlynxdb query '| level=\"ERROR\" | group by host compute count()' --since 5m\nlynxdb tail 'level=ERROR'\n\n```\n\n## Features\n\n- **Pipe mode** - reads from stdin or files, works like `grep`. No server, no config.\n- **Lynx Flow** - `group`, `let`, `parse`, `order by`, `join`, CTEs, domain sugar, and [more](https://docs.lynxdb.org/docs/lynx-flow/overview). Partial SPL2 compatibility.\n- **Full-text search** - FST inverted index + roaring bitmaps, bloom filters for segment skipping\n- **Columnar storage** - custom `.lsg` format, delta-varint timestamps, dictionary encoding, Gorilla XOR, LZ4\n- **Materialized views** - precomputed aggregations with automatic query rewrite, up to ~400x speedup\n- **Cluster mode** - add `--cluster.seeds` to go distributed; S3-backed shared storage\n- **Drop-in ingestion** - Elasticsearch `_bulk`, OpenTelemetry OTLP, Splunk HEC\n\n## Comparison\n\n|                   | lynxdb           | Splunk        | Elasticsearch | Loki               |\n|-------------------|------------------|---------------|---------------|--------------------|\n| Deployment        | Single binary    | Standalone    | Cluster       | Single binary      |\n| Dependencies      | None             | --            | JVM           | Object storage     |\n| Query language    | Lynx Flow / SPL2 | SPL           | Lucene/ES\\|QL | LogQL              |\n| Pipe mode         | Yes              | --            | --            | --                 |\n| Full-text index   | FST + bitmaps    | tsidx         | Lucene        | Label index only   |\n| Memory (idle)     | ~50 MB           | ~12 GB        | ~1 GB+        | ~256 MB            |\n| License           | Apache 2.0       | Commercial    | ELv2 / AGPL   | AGPL               |\n\n## Configuration\n\nZero config needed - sensible defaults for everything. Customize in `~/.config/lynxdb/config.yaml`:\n\n```yaml\nlisten: \"0.0.0.0:3100\"\ndata_dir: \"/data/lynxdb\"\nretention: 30d\n\nstorage:\n  compression: lz4\n  cache_max_bytes: 4gb\n```\n\nCascade: CLI flags -\u003e `LYNXDB_*` env vars -\u003e config file -\u003e defaults.\n\n\u003cdetails\u003e\n\u003csummary\u003eFull configuration reference\u003c/summary\u003e\n\n```yaml\nlisten: \"0.0.0.0:3100\"\ndata_dir: \"/data/lynxdb\"\nretention: 30d\n\nstorage:\n  compression: lz4          # lz4 | zstd\n  flush_threshold: 512mb\n  cache_max_bytes: 4gb\n  s3_bucket: my-logs-bucket\n  s3_region: us-east-1\n\nquery:\n  max_concurrent: 20\n  max_query_runtime: 10m\n```\n\n\u003c/details\u003e\n\n## CLI reference\n\n```\nlynxdb server                start server\nlynxdb query \u003cquery\u003e         run a query (Lynx Flow or SPL2)\nlynxdb tail \u003cquery\u003e          live tail\nlynxdb ingest \u003cfile\u003e         ingest a file\nlynxdb shell                 interactive REPL with completion\nlynxdb count \u003cquery\u003e         quick event count\nlynxdb sample N \u003cquery\u003e      peek at data shape\nlynxdb watch \u003cquery\u003e -i 5s   periodic refresh with deltas\nlynxdb diff \u003cquery\u003e -p 1h    this period vs previous period\nlynxdb explain \u003cquery\u003e       query plan without executing\nlynxdb mv create/list        materialized views\nlynxdb status                server metrics\nlynxdb bench                 benchmark\nlynxdb demo                  generate sample data\n```\n\n## Build from source\n\n```bash\ngit clone https://github.com/lynxbase/lynxdb \u0026\u0026 cd lynxdb\ngo build -o lynxdb ./cmd/lynxdb/\ngo test ./...\n```\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Feedback\n- [Issues](https://github.com/lynxbase/lynxdb/issues)\n\n---\n\nLynxDB wouldn't exist without the projects that inspired it:\n\n- **[Splunk](https://www.splunk.com/)** - for creating SPL, the most expressive log query language. LynxDB's SPL2 compatibility and Lynx Flow design owe everything to Splunk's query model.\n- **[ClickHouse](https://clickhouse.com/)** - for proving that a single-binary analytical database with incredible performance is possible. The MergeTree architecture deeply influenced LynxDB's storage engine design.\n- **[VictoriaLogs](https://docs.victoriametrics.com/victorialogs/)** - for showing that log analytics can be resource-efficient and operationally simple.\n- **`grep`, `awk`, `sed`** - for the Unix philosophy of composable tools and piping. LynxDB's pipe mode is a direct homage to this tradition.\n\nThis project started in early 2025 out of a deep appreciation for these tools and a desire to bring Splunk-level analytics to everyone in a single, lightweight binary.\n\n## License\n\n[Apache 2.0](LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flynxbase%2Flynxdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flynxbase%2Flynxdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flynxbase%2Flynxdb/lists"}