{"id":26474311,"url":"https://github.com/conduktor/ctl","last_synced_at":"2026-04-18T01:05:11.750Z","repository":{"id":229848861,"uuid":"755145619","full_name":"conduktor/ctl","owner":"conduktor","description":"Conduktor CLI to perform operations directly from your command line or a CI/CD pipeline","archived":false,"fork":false,"pushed_at":"2026-04-03T09:04:50.000Z","size":21208,"stargazers_count":3,"open_issues_count":1,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-03T15:07:27.779Z","etag":null,"topics":["cli","conduktor","kafka"],"latest_commit_sha":null,"homepage":"https://www.conduktor.io/","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/conduktor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2024-02-09T14:15:18.000Z","updated_at":"2026-04-03T09:04:52.000Z","dependencies_parsed_at":"2025-06-15T23:07:53.281Z","dependency_job_id":"8bbdc73b-d419-4391-a823-24ae5e9e218d","html_url":"https://github.com/conduktor/ctl","commit_stats":null,"previous_names":["conduktor/ctl"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/conduktor/ctl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conduktor%2Fctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conduktor%2Fctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conduktor%2Fctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conduktor%2Fctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/conduktor","download_url":"https://codeload.github.com/conduktor/ctl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/conduktor%2Fctl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31952208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"ssl_error","status_checked_at":"2026-04-18T00:39:20.671Z","response_time":62,"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":["cli","conduktor","kafka"],"created_at":"2025-03-19T22:52:12.623Z","updated_at":"2026-04-18T01:05:11.688Z","avatar_url":"https://github.com/conduktor.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\" id=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/conduktor/conduktor.io-public/main/logo/transparent.png\" width=\"256px\" /\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e\n    \u003cstrong\u003eConduktor CLI\u003c/strong\u003e\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://docs.conduktor.io/\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/conduktor/ctl/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/conduktor/ctl/issues\"\u003eRequest Feature\u003c/a\u003e\n    ·\n    \u003ca href=\"https://support.conduktor.io/\"\u003eContact support\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"\"\u003e\u003cimg alt=\"GitHub Release\" src=\"https://img.shields.io/github/v/release/conduktor/ctl?sort=semver\u0026logo=github\u0026color=BCFE68\"\u003e\u003c/a\u003e\n    ·\n    \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/conduktor/ctl?color=BCFE68\"\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://conduktor.io/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Website-conduktor.io-192A4E?color=BCFE68\" alt=\"Scale Data Streaming With Security and Control\"\u003e\u003c/a\u003e\n    ·\n    \u003ca href=\"https://twitter.com/getconduktor\"\u003e\u003cimg alt=\"X (formerly Twitter) Follow\" src=\"https://img.shields.io/twitter/follow/getconduktor?color=BCFE68\"\u003e\u003c/a\u003e\n    ·\n    \u003ca href=\"https://conduktor.io/slack\"\u003e\u003cimg src=\"https://img.shields.io/badge/Slack-Join%20Community-BCFE68?logo=slack\" alt=\"Slack\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nConduktor CLI is a command line tool to interact with Conduktor Console. \nIt is strongly inspired by Kubernetes kubectl CLI tool and reuse some of it's concepts.\n\n\n## How to install\n\n### From binaries (Linux, MacOS, Windows)\n\nLook for assets of the last release at https://github.com/conduktor/ctl/releases \n\n### Using Docker image\nHow to get the latest docker image:\n```bash\ndocker pull conduktor/conduktor-ctl:latest\n```\n\n### From source \nYou will need Go 1.22+ installed and configured on your machine.\n\nTo build simply run\n```bash\nmake build # or go build -o conduktor .\n```\nYou will find the `conduktor` binary at the root of the project.\n\n## Usage\n\nTo run the CLI you will need to provide the Conduktor Console URL and an API access token.\n\n### Configure\n\nTo use Conduktor CLI, you need to:\n\n**Define 2 environment variables for Console**:\n -   The URL of Conduktor Console\n -   Your API token (either a User Token or Application Token). You can generate an API token on `/settings/public-api-keys` page of your Console instance, or create one through the [CLI](https://docs.conduktor.io/platform/reference/cli-reference/#admin-api-key).\n```bash\nCDK_BASE_URL=http://localhost:8080\nCDK_API_KEY=\u003cadmin-token\u003e\n```\n\n**Define 3 environment variables for Gateway**:\n -   The URL of the Conduktor Gateway API\n -   Your Gateway User for the API \n -   Your Gatway Password for the API\n```bash\nCDK_GATEWAY_BASE_URL=http://localhost:8888\nCDK_GATEWAY_USER=admin\nCDK_GATEWAY_PASSWORD=conduktor\n```\n\n### Configuring the CLI for authenticating through an API Gateway\nConsole has the ability to delegate the authentication to an API Gateway.\nTo provide the credentials to the API Gateway you can either use a bearer token: \n```bash\nCDK_BASE_URL=http://localhost:8080\nCDK_AUTH_MODE=external\nCDK_API_KEY=\u003ctoken\u003e\n```\n\nor basic auth:\n```bash\nCDK_BASE_URL=http://localhost:8080\nCDK_AUTH_MODE=external\nCDK_USER=\u003cclient_id\u003e\nCDK_PASSWORD=\u003cclient_secret\u003e\n```\n\n\n### Commands Usage\n```\nYou need to define the CDK_API_KEY and CDK_BASE_URL environment variables to use this tool.\nYou can also use the CDK_KEY,CDK_CERT to use a certificate for tls authentication.\nIf you have an untrusted certificate you can use the CDK_INSECURE=true variable to disable tls verification or you can use CACERT.\n\nUsage:\n  conduktor [flags]\n  conduktor [command]\n\nAvailable Commands:\n  apply              Upsert a resource on Conduktor\n  completion         Generate the autocompletion script for the specified shell\n  delete             Delete resource of a given kind and name\n  edit               Edit a resource in a text editor and apply changes\n  get                Get resource of a given kind\n  help               Help about any command\n  login              Login user using username password to get a JWT token\n  run                run an action\n  sql                Run a sql command on indexed topics\n  template           Get a yaml example for a given kind\n  token              Manage Admin and Application Instance tokens\n  version            Display the version of conduktor\n\nFlags:\n  -h, --help         help for conduktor\n      --permissive   permissive mode, allow undefined environment variables\n  -v, --verbose      show more information for debugging\n\nUse \"conduktor [command] --help\" for more information about a command.\n```\n\nYou can find more usage details on our:\n - [Console CLI documentation](https://docs.conduktor.io/guide/conduktor-in-production/automate/cli-automation#configure-console-cli)\n - [Gateway CLI documentation](https://docs.conduktor.io/guide/conduktor-in-production/automate/cli-automation#configure-gateway-cli)\n\n\n#### How to use behind teleport\nIf you are using Conduktor behind a teleport proxy, you will need to provide the certificate and key to the CLI using `CDK_CERT` and `CDK_KEY` environment variables.\n\nFirst login to your teleport proxy, for example:\n```bash\ntsh login --proxy=\"$TELEPORT_SERVER\" --auth=\"$TELEPORT_AUTH_METHOD\"\ntsh apps login console\nexport CDK_CERT=$(tsh apps config --format=cert)\nexport CDK_KEY=$(tsh apps config --format=key)\nconduktor get application\n```\n\n### Template\n\nThe `template` command allows you to get an example of a resource definition:\n```\n$ conduktor template topic                                                                                                                                                       \n---\napiVersion: v2\nkind: Topic\nmetadata:\n    name: my-topic\n    cluster: my-cluster\n    labels:\n        conduktor.io/application: application-a\n        conduktor.io/application-instance: staging\n        user-labels: I am a user label\n    catalogVisibility: PUBLIC\n    descriptionIsEditable: true\n    description: This is a topic description\n    sqlStorage:\n        retentionTimeInSecond: 42\nspec:\n    partitions: 1\n    replicationFactor: 1\n    configs:\n        cleanup.policy: delete\n        retention.ms: '86400000'\n```\n\nYou can also save the output in a file, in order to edit it before applying it:\n```\nconduktor template KafkaCluster -o definiton.yml\nconduktor template Topic \u003e\u003e definition.yml   #Appending to an already existing file\nvim definition.yml # (or any other text editor you like)\nconduktor apply -f\n```\n\n### Development\n\n#### How to run:\n```bash\nexport CDK_API_KEY=\u003cyour console API token\u003e\nexport CDK_BASE_URL=http://localhost:8080\ngo run . \n```\n\n#### How to format and lint code\n```bash\nmake fmt  # use standard go fmt\nmake lint # use golangci-lint linter\n```\n\n#### How to run unit test:\n```bash\nmake test # will run unit and integration tests\n\n# or unit tests only\ngo test ./...\n# integration tests\n./scritps/test_final_exec.sh\n```\n\n#### Install git hooks\n\nTo install git hooks simply run \n```bash\nmake setup-hooks\n```\nIt will install (if not already in `PATH`) tools like [pre-commit](https://pre-commit.com/#install), [gitleaks](https://github.com/gitleaks/gitleaks), [golangci-lint](https://github.com/golangci/golangci-lint) before installing secrets.\n\n\n## Contributing\n\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n\n## License\n\nThis project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details.\n\n## Note about `v` in version\n\nBefore v0.2.6, versions used to follow the following format `X.Y.Z` like any other conduktor product.\nWhen the conduktor team started to work on a terraform plugin, we wanted it to use gomod to reuse the client part of the CLI.\nWe realize that gomod requires version tags to start with a `v` (see: https://github.com/golang/go/issues/32945).\nTherefore now, conduktor ctl version like any other go project starts with a v\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconduktor%2Fctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconduktor%2Fctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconduktor%2Fctl/lists"}