{"id":42138249,"url":"https://github.com/gogama/incite","last_synced_at":"2026-01-26T16:32:19.029Z","repository":{"id":40648191,"uuid":"374209702","full_name":"gogama/incite","owner":"gogama","description":"Hassle-free queries on Amazon CloudWatch Logs Insights in Go","archived":false,"fork":false,"pushed_at":"2025-07-18T15:25:45.000Z","size":266,"stargazers_count":63,"open_issues_count":4,"forks_count":7,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-18T19:50:12.723Z","etag":null,"topics":["aws","cloudwatch","cloudwatch-logs","cloudwatchlogs","go","golang","insights"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gogama.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-05T20:49:43.000Z","updated_at":"2025-07-18T15:18:56.000Z","dependencies_parsed_at":"2024-06-19T01:33:28.498Z","dependency_job_id":"7805cbf3-3ada-460b-bb6d-9544d5f2c5d4","html_url":"https://github.com/gogama/incite","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/gogama/incite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gogama%2Fincite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gogama%2Fincite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gogama%2Fincite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gogama%2Fincite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gogama","download_url":"https://codeload.github.com/gogama/incite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gogama%2Fincite/sbom","scorecard":{"id":433821,"data":{"date":"2025-08-11","repo":{"name":"github.com/gogama/incite","commit":"95149d02f70606c373fd0d43fd1c6f8bdf269de2"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 2/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":1,"reason":"1 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0603 / GHSA-hp87-p4gw-j4gq"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 4 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T04:06:05.436Z","repository_id":40648191,"created_at":"2025-08-19T04:06:05.436Z","updated_at":"2025-08-19T04:06:05.436Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28782167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T13:55:28.044Z","status":"ssl_error","status_checked_at":"2026-01-26T13:55:26.068Z","response_time":59,"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":["aws","cloudwatch","cloudwatch-logs","cloudwatchlogs","go","golang","insights"],"created_at":"2026-01-26T16:32:18.303Z","updated_at":"2026-01-26T16:32:19.024Z","avatar_url":"https://github.com/gogama.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"A native Go library to streamline and supercharge your interactions with the AWS\nCloudWatch Logs Insights service using minimalist, native Go, paradigms.\n\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/gogama/incite)](https://pkg.go.dev/github.com/gogama/incite)  [![Go Report Card](https://goreportcard.com/badge/github.com/gogama/incite)](https://goreportcard.com/report/github.com/gogama/incite) [![Build Status](https://travis-ci.org/gogama/incite.svg)](https://travis-ci.com/gogama/incite)\n\nIncite makes it easier to write code to query your logs using AWS CloudWatch\nLogs Insights, and makes it possible to use Insights to query massive,\narbitrary, amounts of log data reliably.\n\nFeatures\n========\n\n- **Streaming**. AWS CloudWatch Logs Insights makes you poll your queries,\n  requiring boilerplate code that is hard to write efficiently. Incite does the\n  polling for you and lets you simply read your query results from a stream.\n- **Auto-Chunking**. Every CloudWatch Logs Insights query is limited to 10,000\n  results. If your query exceeds 10K results, AWS advises you to break it into\n  smaller time ranges. Incite does this chunking automatically and merges the\n  results of all chunks into one convenient stream. Use the `Chunk` field in\n  `QuerySpec` to enable chunking.\n- **Dynamic Splitting**. Since v1.2.0, Incite can dynamically detect when a query\n  chunk exceeds the 10K result limit, split that chunk into sub-chunks, and\n  re-query the chunks, all automatically and without intervention. Use the\n  `SplitUntil` field in `QuerySpec` to enable dynamic splitting.\n- **Multiplexing**. Incite efficiently runs multiple queries at the same time\n  and is smart enough to do this without getting throttled or going over your\n  CloudWatch Logs service quota limits.\n- **Unmarshalling**. The CloudWatch Logs Insights API can only give you\n  unstructured key/value string pairs, requiring you to write boilerplate code\n  to put your results into a useful structure for analysis. Incite lets you\n  unmarshal your results into maps or structs using a single function call.\n  Incite supports tag-based field mapping just like `encoding/json`. (And it\n  supports`json:\"...\"` tags as well as its native `incite:\"...\"` tags, right\n  out of the box!)\n- **Go Native**. Incite gives you a more Go-friendly coding experience than the\n  AWS SDK for Go, including getting rid of unnecessary pointers and using\n  standard types like `time.Time`.\n\nGetting Started\n===============\n\n## Get the code\n\n```\n$ go get github.com/gogama/incite\n```\n\n## Concepts\n\n- For quick prototyping and scripting type work, simplify your life using the\n  global[`Query`](https://pkg.go.dev/github.com/gogama/incite#Query) function.\n- When you need finer control over what your app is doing, create a new\n  `QueryManager` using\n  [`NewQueryManager`](https://pkg.go.dev/github.com/gogama/incite#NewQueryManager)\n  and query it using its `Query` method.\n- To read all the results from a stream, use the global\n  [`ReadAll`](https://pkg.go.dev/github.com/gogama/incite#ReadAll) function.\n- To unmarshal the results into a structure of your choice, use the global\n  [`Unmarshal`](https://pkg.go.dev/github.com/gogama/incite#Unmarshal) function.\n\n## A simple app\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/aws/aws-sdk-go-v2/config\"\n\t\"github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs\"\n\t\"github.com/gogama/incite/v2\"\n)\n\nfunc main() {\n\t// Use the AWS SDK for Go V2 to get the CloudWatch API actions Incite needs.\n\t// For simplicity, we assume that the correct AWS region and credentials are\n\t// already set in the environment.\n\n\tcfg, err := config.LoadDefaultConfig(context.TODO())\n\tif err != nil {\n\t\treturn\n\t}\n\ta := cloudwatchlogs.NewFromConfig(cfg)\n\n\t// Create a QueryManager. An alternative to using a QueryManager is just\n\t// using the global scope Query function.\n\tm := incite.NewQueryManager(incite.Config{Actions: a})\n\tdefer func() {\n\t\t_ = m.Close()\n\t}()\n\n\t// Look at the last 15 minutes.\n\tend := time.Now().Truncate(time.Millisecond)\n\tstart := end.Add(-15*time.Minute)\n\n\t// Query the results.\n\ts, err := m.Query(incite.QuerySpec{\n\t\tText:   \"fields @timestamp, @message | filter @message =~ /foo/ | sort @timestamp desc\",\n\t\tStart:  start,\n\t\tEnd:    end,\n\t\tGroups: []string{\"/my/log/group\"},\n\t\tLimit:  100,\n\t})\n\tif err != nil {\n\t\treturn\n\t}\n\tdata, err := incite.ReadAll(s)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t// Unpack the results into a structured format.\n\tvar v []struct{\n\t\tTimestamp time.Time `incite:\"@timestamp\"`\n\t\tMessage string      `incite:\"@message\"`\n\t}\n\terr = incite.Unmarshal(data, \u0026v)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t// Print the results!\n\tfmt.Println(v)\n}\n```\n\nCompatibility\n=============\n\nWorks with all Go versions 1.22 and up, and [AWS SDK for Go V2](https://github.com/aws/aws-sdk-go-v2)\nversions 1.36.5 and up.\n\nRelated\n=======\n\nOfficial AWS documentation: [Analyzing log data with CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html).\nFind Insights' query syntax documentation [here](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)\nand the API reference [here](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_Operations.html) (look\nfor `StartQuery`, `GetQueryResults`, and `StopQuery`).\n\nLicense\n=======\n\nThis project is licensed under the terms of the MIT License.\n\nAcknowledgements\n================\n\nDeveloper happiness on this project was embiggened by JetBrains, which\ngenerously donated an [open source license](https://www.jetbrains.com/opensource/)\nfor their lovely GoLand IDE. Thanks JetBrains!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgogama%2Fincite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgogama%2Fincite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgogama%2Fincite/lists"}