{"id":26445506,"url":"https://github.com/cisco-open/app-simulator","last_synced_at":"2026-03-10T19:32:20.289Z","repository":{"id":271859538,"uuid":"898873212","full_name":"cisco-open/app-simulator","owner":"cisco-open","description":"A tool to build custom application simulators through declarative configuration","archived":false,"fork":false,"pushed_at":"2025-12-15T06:17:41.000Z","size":1057,"stargazers_count":11,"open_issues_count":28,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-30T18:09:13.972Z","etag":null,"topics":["app-simulator","simulator"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cisco-open.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","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":"2024-12-05T07:43:25.000Z","updated_at":"2025-12-04T22:22:11.000Z","dependencies_parsed_at":"2025-01-30T15:28:29.545Z","dependency_job_id":"1cdb24a6-ef23-4147-9d4a-5283b180cd51","html_url":"https://github.com/cisco-open/app-simulator","commit_stats":null,"previous_names":["cisco-open/app-simulator"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/cisco-open/app-simulator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-open%2Fapp-simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-open%2Fapp-simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-open%2Fapp-simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-open%2Fapp-simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cisco-open","download_url":"https://codeload.github.com/cisco-open/app-simulator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisco-open%2Fapp-simulator/sbom","scorecard":{"id":1236473,"data":{"date":"2025-08-29T10:21:34Z","repo":{"name":"github.com/cisco-open/app-simulator","commit":"b3c51d85de036e966d33b952a7a59f02ca30eb6c"},"scorecard":{"version":"v5.0.0","commit":"ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4"},"score":7.8,"checks":[{"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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#binary-artifacts"}},{"name":"Branch-Protection","score":6,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disable on branch 'main'","Info: 'stale review dismissal' is required to merge on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Info: codeowner review is required on branch 'main'","Info: 'last push approval' is required to merge on branch 'main'","Warn: no status checks found to merge onto branch 'main'","Info: PRs are required in order to make changes on 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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#branch-protection"}},{"name":"CI-Tests","score":10,"reason":"30 out of 30 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#ci-tests"}},{"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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#cii-best-practices"}},{"name":"Code-Review","score":8,"reason":"Found 13/15 approved changesets -- score normalized to 8","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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#code-review"}},{"name":"Contributors","score":10,"reason":"project has 3 contributing companies or organizations -- score normalized to 10","details":["Info: open-telemetry contributor org/company found, causely-oss contributor org/company found, appdynamics | now a cisco company contributor org/company found, "],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#contributors"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#dangerous-workflow"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#dependency-update-tool"}},{"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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/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: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#license"}},{"name":"Maintained","score":10,"reason":"12 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#maintained"}},{"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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":8,"reason":"dependency not pinned by hash detected -- score normalized to 8","details":["Warn: pipCommand not pinned by hash: scripts/generators/docker-compose/Dockerfile:9","Warn: pipCommand not pinned by hash: scripts/generators/k8s/Dockerfile:9","Warn: nugetCommand not pinned by hash: src/services/dotnetcore/Dockerfile:6","Warn: npmCommand not pinned by hash: src/services/nodejs/Dockerfile:9","Info:   4 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   9 out of   9 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned","Info:   9 out of   9 containerImage dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned","Info:   0 out of   1 nugetCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":9,"reason":"SAST tool is not run on all commits -- score normalized to 9","details":["Warn: 27 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#sast"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#security-policy"}},{"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/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#signed-releases"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/dependency.yml:13","Info: jobLevel 'contents' permission set to 'read': .github/workflows/lint.yml:19","Info: jobLevel 'packages' permission set to 'read': .github/workflows/lint.yml:20","Warn: jobLevel 'statuses' permission set to 'write': .github/workflows/lint.yml:21","Warn: jobLevel 'security-events' permission set to 'write': .github/workflows/scorecard.yml:23","Info: topLevel permissions set to 'read-all': .github/workflows/build-images-on-commit.yml:17","Info: topLevel permissions set to 'read-all': .github/workflows/build-images-on-pr.yml:15","Info: topLevel permissions set to 'read-all': .github/workflows/build-images-on-schedule.yml:8","Info: topLevel permissions set to 'read-all': .github/workflows/build-images-on-tag.yml:9","Info: topLevel permissions set to 'read-all': .github/workflows/dependency.yml:8","Info: topLevel permissions set to 'read-all': .github/workflows/lint.yml:13","Info: topLevel permissions set to 'read-all': .github/workflows/reusable-build-container-images.yml:17","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:16"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#token-permissions"}},{"name":"Vulnerabilities","score":1,"reason":"9 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: GHSA-6v67-2wr5-gvf4","Warn: Project is vulnerable to: GHSA-pr98-23f8-jwxv","Warn: Project is vulnerable to: GHSA-4vrv-ch96-6h42","Warn: Project is vulnerable to: GHSA-g76j-4cxx-23h9","Warn: Project is vulnerable to: GHSA-jcq3-cprp-m333","Warn: Project is vulnerable to: GHSA-m6vm-37g8-gqvh","Warn: Project is vulnerable to: GHSA-qh8g-58pp-2wxh","Warn: Project is vulnerable to: GHSA-rghw-6px2-fgwc"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ea7e27ed41b76ab879c862fa0ca4cc9c61764ee4/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-29T14:12:36.212Z","repository_id":271859538,"created_at":"2025-08-29T14:12:36.222Z","updated_at":"2025-08-29T14:12:36.222Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30350071,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T15:55:29.454Z","status":"ssl_error","status_checked_at":"2026-03-10T15:54:58.440Z","response_time":106,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["app-simulator","simulator"],"created_at":"2025-03-18T11:18:57.583Z","updated_at":"2026-03-10T19:32:20.264Z","avatar_url":"https://github.com/cisco-open.png","language":"Python","funding_links":[],"categories":["Demo Applications"],"sub_categories":["Application Simulators"],"readme":"# Application Simulator\n\n[![Contributor-Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-fbab2c.svg)](CODE_OF_CONDUCT.md)\n[![License](https://img.shields.io/github/license/cisco-open/app-simulator?label=License)](LICENSE)\n[![Maintainer](https://img.shields.io/badge/Maintainer-Cisco-00bceb.svg)](https://opensource.cisco.com)\n[![Release](https://img.shields.io/github/v/release/cisco-open/app-simulator?label=Release\u0026sort=semver)](https://github.com/cisco-open/app-simulator/releases)\n\nApplication Simulator allows you to rapidly create a set of interacting\nservices, databases and load generators to simulate application deployments of\nany size and form.\n\nUnlike other simulators or demo applications it is not focused around a specific\nkind of application, like a blog, task list, web shop or banking app. Instead,\nApplication Simulator is driven by configuration files that define the behavior\nof the components of your application.\n\nThis is especially useful for use cases, where you care less about the business\nlogic to be mimicked, but the interaction of the different components that make\nup an application.\n\nThis includes the following use cases:\n\n- Tailored demo environments for observability, e.g. instrumenting all services\n  with OpenTelemetry and visualizing the data in your preferred backend.\n- Complex simulated environments for in-cluster network experiments, e.g.\n  testing out new features of cilium.\n\n## Quick Start\n\nYou can use application simulator with your preferred container orchestration,\nsince all components are available as container images. We provide the best\nexperience for docker compose and kubernetes. Pick one of them for a quick\nstart!\n\n- [kubernetes quick start](./docs/quick-start/kubernetes/README.md)\n- [docker compose quick start](./docs/quick-start/docker-compose/README.md)\n\n\u003e [!NOTE]\n\u003e\n\u003e You can use the\n\u003e [container images](https://github.com/orgs/cisco-open/packages?repo_name=app-simulator)\n\u003e published as part of this project without the generators for kubernetes and\n\u003e docker compose. Both are convenience functions!\n\u003e\n\u003e If you only need a container image that simulates the behavior of an\n\u003e application, check out the\n\u003e [standalone container quick start](./docs/quick-start/standalone-container/README.md).\n\n## Tutorial\n\nAfter you have tried out application simulator with the quick start, you can\nlearn using it with the step by step tutorial:\n\n1. [Two services](./docs/tutorial/1-two-services.md)\n2. [A database and more services](./docs/tutorial/2-a-database-and-more-services.md)\n3. [Errors and randomness](./docs/tutorial/3-errors-and-randomness.md)\n4. [Observability with cilium Hubble](./docs/tutorial/4-observability-with-cilium-hubble.md)\n5. [Observability with OpenTelemetry](./docs/tutorial/5-observability-with-opentelemetry.md)\n6. [Large deployments with cue](./docs/tutorial/6-large-deployments-with-cue/README.md)\n\n## Configuration specification\n\nApplication simulator is driven by configuration files that allow you to\ndescribe a microservice architecture and then run it with your preferred\ncontainer orchestration. The configuration file follows a\n[specification](./docs/specification/README.md).\n\n## Contribute\n\nIf you'd like to contribute to this project, check out our\n[contribution guidelines](./CONTRIBUTING.md).\n\n## Support\n\nIf you have any questions or concerns, get in touch with us by\n[raising an issue](https://github.com/cisco-open/app-simulator/issues). If you\nwant to report a security issue, please follow our\n[security policy](./SECURITY.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcisco-open%2Fapp-simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcisco-open%2Fapp-simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcisco-open%2Fapp-simulator/lists"}