{"id":25543398,"url":"https://github.com/dasvh/enchante","last_synced_at":"2026-02-06T02:30:22.020Z","repository":{"id":278455109,"uuid":"929153264","full_name":"dasvh/enchante","owner":"dasvh","description":"Enchante is a simple and configurable HTTP probe tool designed for load testing and API monitoring.","archived":false,"fork":false,"pushed_at":"2025-02-19T20:53:37.000Z","size":77,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-19T21:32:09.535Z","etag":null,"topics":["api-testing","charmbracelet","go","lipgloss","load-testing","yaml"],"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/dasvh.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}},"created_at":"2025-02-07T22:48:43.000Z","updated_at":"2025-02-19T20:53:40.000Z","dependencies_parsed_at":"2025-02-19T21:42:17.305Z","dependency_job_id":null,"html_url":"https://github.com/dasvh/enchante","commit_stats":null,"previous_names":["dasvh/enchante"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasvh%2Fenchante","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasvh%2Fenchante/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasvh%2Fenchante/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasvh%2Fenchante/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dasvh","download_url":"https://codeload.github.com/dasvh/enchante/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239793063,"owners_count":19697893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["api-testing","charmbracelet","go","lipgloss","load-testing","yaml"],"created_at":"2025-02-20T07:19:11.966Z","updated_at":"2026-02-06T02:30:21.953Z","avatar_url":"https://github.com/dasvh.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Enchante\n\n## About the project \n\nEnchante is a simple and configurable HTTP probe tool designed for load testing and API monitoring.\nIt allows you to send requests to multiple endpoints concurrently, measure response times, and log results.\n\nWith a simple YAML configuration file, you can define endpoints, request settings, and authentication methods.\n\n### Built with\n\n* [goccy/go-yaml](https://github.com/goccy/go-yaml): YAML support for the Go language\n* [joho/godotenv](https://github.com/joho/godotenv): Loads environment variables from `.env` file\n* [Lip Gloss](https://github.com/charmbracelet/lipgloss): Tools for styling and layout of terminal UIs\n\n### Features\n- Send HTTP requests concurrently\n- Configurable authentication (API key, Basic Auth, Bearer token)\n- Endpoint-specific authentication overrides (use global auth or define per-endpoint auth)\n- Custom request headers and body\n- Request delay options (fixed, random)\n- Response time measurement and logging\n- Graceful cancellation handling\n\n## Installation\n\n### Prerequisites\n\n- Go `1.24.0`\n\n#### Install via `go install`\n\n```shell\ngo install github.com/dasvh/enchante@latest\n```\n\n#### Build from source\n\n```shell\n# clone the repository\ngit clone github.com/dasvh/enchante\ncd enchante\n\n# builds the application and saves the binary in the /tmp/bin directory\nmake build\n\n# runs the application from the /tmp/bin directory\nmake run\n\n# runs the application with the debug flag\nmake debug\n\n# runs the application with custom configuration\nmake run ARGS=\"--config examples/probe_config.yaml\"\n```\n\n## Configuration\n\n### Environment variables\n\nEnchante supports the use of environment variables for authentication configuration.\nThe `.env` file should be placed in the root directory of the project.\n\n\u003e [!NOTE]\n\u003e Both `$()` and `${}` syntax are supported for environment variables in the configuration file\n\nExample for Basic Auth and OAuth2:\n```shell\nBASIC_AUTH_USERNAME=your_username\nBASIC_AUTH_PASSWORD=your_password\n\nTOKEN_URL=https://your-authorization-server/token\nCLIENT_ID=your_client_id\nCLIENT_SECRET=your_client_secret\nGRANT_TYPE=client_credentials\nUSERNAME=your_username\nPASSWORD=your_password\n```\n\n### Configuration file\n\nYou can create your own configuration file or modify the provided example at `examples/probe_config.yaml`\nto define endpoints, authentication, and request settings.\n\nExample configuration:\n```yaml\nauth:\n  enabled: true\n  type: basic\n  basic:\n    username: \"$(BASIC_USERNAME)\"\n    password: ${BASIC_PASSWORD}\nprobe:\n  concurrent_requests: 2\n  total_requests: 50\n  request_timeout_ms: 10000\n  delay_between:\n    enabled: true\n    type: fixed\n    fixed: 100\n  endpoints:\n    - url: https://www.google.com\n      method: POST\n    - url: http://localhost:8080\n      method: POST\n      body: '{\"key\": \"value\"}'\n      headers:\n        Content-Type: application/json\n    - url: https://special-api.example.com\n      method: GET\n      auth:\n        enabled: true\n        type: basic\n        basic:\n          username: \"$(BASIC_AUTH_USERNAME)\"\n          password: \"$(BASIC_AUTH_PASSWORD)\"\n    - url: https://public-api.example.com\n      method: GET\n      auth:\n        enabled: false\n```\n\n### Authentication Behavior\n\n* If global authentication is enabled, all endpoints inherit it\n* If an endpoint defines its own auth config, it overrides the global authentication\n* If `auth.enabled: false` is set on an endpoint, it explicitly disables authentication for that request\n\n## Usage\n\nTo run Enchante with the default path `./probe_config.yaml`:\n\n```shell\n./enchante\n```\n\nYou can also specify the path to the configuration file:\n\n```shell\n./enchante -config=configs/custom_config.yaml\n```\n\n### Logging\n\nEnable debug logging for detailed output:\n\n```shell\n./enchante --debug\n```\n\nSample Debug Output:\n\n![Debug_output_gif](docs/gifs/debug.gif)\n\n## License\n\nThis project is licensed under the [MIT License](https://github.com/dasvh/enchante/raw/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasvh%2Fenchante","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdasvh%2Fenchante","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasvh%2Fenchante/lists"}