{"id":39811850,"url":"https://github.com/ds-wizard/engine-gateway","last_synced_at":"2026-01-18T12:44:56.126Z","repository":{"id":324230260,"uuid":"1088596654","full_name":"ds-wizard/engine-gateway","owner":"ds-wizard","description":"Gateway for apps and services integrated with Wizard ","archived":false,"fork":false,"pushed_at":"2025-12-05T13:34:45.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2025-12-17T14:44:29.993Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":false,"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/ds-wizard.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":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-03T07:32:41.000Z","updated_at":"2025-12-05T13:34:14.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ds-wizard/engine-gateway","commit_stats":null,"previous_names":["ds-wizard/engine-gateway"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ds-wizard/engine-gateway","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ds-wizard%2Fengine-gateway","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ds-wizard%2Fengine-gateway/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ds-wizard%2Fengine-gateway/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ds-wizard%2Fengine-gateway/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ds-wizard","download_url":"https://codeload.github.com/ds-wizard/engine-gateway/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ds-wizard%2Fengine-gateway/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28536017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T10:13:46.436Z","status":"ssl_error","status_checked_at":"2026-01-18T10:13:11.045Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2026-01-18T12:44:55.472Z","updated_at":"2026-01-18T12:44:56.114Z","avatar_url":"https://github.com/ds-wizard.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Engine Gateway\n\n**Engine Gateway** is a lightweight orchestration layer that makes it easy to mount, compose, and run multiple *FastAPI applications* as a distributed service for easier deployment. It dynamically loads app modules based on configuration and exposes them under configurable subpaths — enabling modular service composition, clean boundaries between components, and centralized deployment.\n\n## Usage\n\n### Installation\n\n```bash\npip install dsw-engine-gateway\n# or specific version\npip install dsw-engine-gateway==0.1.0\n# or from repository\npip install git+https://github.com/ds-wizard/engine-gateway.git#egg=engine-gateway\n```\n\n### Configuration\n\nCreate a configuration file (e.g., `config.yaml`) to define the applications to be mounted:\n\n```yaml\nmounts:\n  /example1:\n    module: example_app\n    app: app\n  /example2:\n    module: another_app.app\n    factory: create_app\n    kwargs:\n      debug: true\n```\n\nNaturally, the `module` should be importable in your Python environment (i.e. having installed Python package exporting that module). You can specify either an `app` variable (a FastAPI instance) or a `factory` function that returns a FastAPI instance. Additional keyword arguments can be passed to the factory function via `kwargs`.\n\nIf hosting on different subpath than root, you can configure the base path of the gateway:\n\n```yaml\ngateway:\n  root_path: /gateway\n```\n\nYou can also configure `/info` endpoint that reports metadata about the mounted applications:\n\n```yaml\ngateway:\n  info:\n    enabled: true\n    token: secretToken\n```\n\n(See [config.example.yaml](./config.example.yaml) for more details.)\n\nYou can also use the following environment variables to override configuration options:\n\n- `CONFIG_FILE`: Path to the configuration file (default: `config.yaml`).\n- `GATEWAY_ROOT_PATH`: Base path for the gateway (overrides `gateway.root_path`).\n- `GATEWAY_INFO_ENABLED`: Enable or disable the `/info` endpoint (overrides `gateway.info.enabled`).\n- `GATEWAY_INFO_TOKEN`: Token for accessing the `/info` endpoint (overrides `gateway.info.token`).\n- `SENTRY_DSN`: DSN for Sentry error tracking (enables Sentry integration if set).\n- `SENTRY_TRACES_SAMPLE_RATE`: Sample rate for Sentry performance tracing (default: `1.0`).\n- `SENTRY_PROFILES_SAMPLE_RATE`: Sample rate for Sentry profiling (default: `1.0`).\n- `SENTRY_MAX_BREADCRUMBS`: Maximum number of breadcrumbs to store in Sentry (default: `100`).\n- `SENTRY_ENVIRONMENT`: Environment name for Sentry (default: `production`).\n- `SENTRY_AWS_LAMBDA`: Enable AWS Lambda integration for Sentry (default: `false`).\n\n### Usage\n\nYou can run the Engine Gateway using Uvicorn:\n\n```bash\nuvicorn engine_gateway:create_app --host\n```\n\nIn typical use cases, you would use `engine_gateway` as a dependency and re-packing it together with your config files and environment setup into a Docker image for deployment:\n\n```Dockerfile\nFROM dsw-engine-gateway:latest\n\nCOPY requirements.txt /app/requirements.txt\nRUN pip install -r /app/requirements.txt\n\nCOPY config.yaml /app/config.yaml\n\nCMD [\"uvicorn\", \"engine_gateway:create_app\", \"--host\", \"0.0.0.0\", \"--port\", \"80\", \"--proxy-headers\"]\n```\n\n## License\n\nThis project is licensed under the Apache-2.0 License. See the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fds-wizard%2Fengine-gateway","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fds-wizard%2Fengine-gateway","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fds-wizard%2Fengine-gateway/lists"}