{"id":13509732,"url":"https://github.com/fhsinchy/tent","last_synced_at":"2025-10-07T00:31:47.408Z","repository":{"id":53562739,"uuid":"323093494","full_name":"fhsinchy/tent","owner":"fhsinchy","description":"Podman (https://podman.io/) based development-only dependency manager for Linux","archived":true,"fork":false,"pushed_at":"2021-11-16T06:05:46.000Z","size":156,"stargazers_count":106,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-01T14:49:15.691Z","etag":null,"topics":["cli","containers","dependency-manager","fedora","golang","linux","podman","redhat"],"latest_commit_sha":null,"homepage":"","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/fhsinchy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":"buymeacoffee.com/farhanhasin"}},"created_at":"2020-12-20T14:42:06.000Z","updated_at":"2024-09-30T10:22:31.000Z","dependencies_parsed_at":"2022-09-16T08:10:20.670Z","dependency_job_id":null,"html_url":"https://github.com/fhsinchy/tent","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/fhsinchy/tent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fhsinchy%2Ftent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fhsinchy%2Ftent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fhsinchy%2Ftent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fhsinchy%2Ftent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fhsinchy","download_url":"https://codeload.github.com/fhsinchy/tent/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fhsinchy%2Ftent/sbom","scorecard":{"id":398717,"data":{"date":"2025-08-11","repo":{"name":"github.com/fhsinchy/tent","commit":"9b3989b4dd204782f4962efe922e733e48145dba"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.5,"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/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"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":"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":"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":"Code-Review","score":0,"reason":"Found 0/12 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":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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: Apache License 2.0: 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":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.0.5 not signed: https://api.github.com/repos/fhsinchy/tent/releases/39100237","Warn: release artifact v0.0.4 not signed: https://api.github.com/repos/fhsinchy/tent/releases/37165429","Warn: release artifact v0.0.3 not signed: https://api.github.com/repos/fhsinchy/tent/releases/36295257","Warn: release artifact v0.0.2 not signed: https://api.github.com/repos/fhsinchy/tent/releases/36127795","Warn: release artifact v0.0.5 does not have provenance: https://api.github.com/repos/fhsinchy/tent/releases/39100237","Warn: release artifact v0.0.4 does not have provenance: https://api.github.com/repos/fhsinchy/tent/releases/37165429","Warn: release artifact v0.0.3 does not have provenance: https://api.github.com/repos/fhsinchy/tent/releases/36295257","Warn: release artifact v0.0.2 does not have provenance: https://api.github.com/repos/fhsinchy/tent/releases/36127795"],"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 'master'"],"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":0,"reason":"11 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-grh6-q6m2-rh72","Warn: Project is vulnerable to: GHSA-4wjj-jwc9-2x96","Warn: Project is vulnerable to: GHSA-66vw-v2x9-hw75","Warn: Project is vulnerable to: GO-2022-0281 / GHSA-3cf2-x423-x582","Warn: Project is vulnerable to: GO-2022-0416","Warn: Project is vulnerable to: GO-2022-1151","Warn: Project is vulnerable to: GO-2024-3169 / GHSA-fhqq-8f65-5xfc","Warn: Project is vulnerable to: GO-2025-3777","Warn: Project is vulnerable to: GO-2024-3042 / GHSA-rpcc-p8xm-rc6p","Warn: Project is vulnerable to: GO-2023-1942","Warn: Project is vulnerable to: GO-2023-1962"],"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 26 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-18T19:38:23.340Z","repository_id":53562739,"created_at":"2025-08-18T19:38:23.341Z","updated_at":"2025-08-18T19:38:23.341Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278703582,"owners_count":26031204,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","containers","dependency-manager","fedora","golang","linux","podman","redhat"],"created_at":"2024-08-01T02:01:12.111Z","updated_at":"2025-10-07T00:31:47.003Z","avatar_url":"https://github.com/fhsinchy.png","language":"Go","funding_links":["buymeacoffee.com/farhanhasin"],"categories":["Go","cli"],"sub_categories":[],"readme":"# tent ![GitHub all releases](https://img.shields.io/github/downloads/fhsinchy/tent/total)\n\nTent is a CLI tool for running development dependencies such as MySQL, Mongo, ElasticSearch etc inside pre-configured containers using simple one-liners.\n\nRunning containers can be accessed via their exposed ports and can be paired with any other application on your system.\n\nStarting a service such as `mysql` is as simple as executing `tent start mysql` and you'll never have to look back at it.\n\nBut `mysql` is not the only available service. A list of all the available services can be found on: [services.go](https://github.com/fhsinchy/tent/blob/master/store/services.go)\n\nTent is heavily inspired from [tighten/takeout](https://github.com/tighten/takeout) and is an experimental project. Hence, care should be taken if you're using it in a critical environment.\n\n## Dependencies\n\n* Linux\n* [Podman](https://podman.io/getting-started/installation) Installed\n* Podman System Service Running\n\nIf you have Podman installed, you can start the system service as follows:\n\n```bash\n## starts the podman system service\nsystemctl --user start podman.socket\n\n## enables the podman system service, so it doesn't close on every reboot\nsystemctl --user enable podman.socket\n\n## stops the podman system service\nsystemctl --user stop podman.socket\n\n## disables the podman system service, so it doesn't start on every reboot\nsystemctl --user disable podman.socket\n```\n\nTent assumes that you're running the service in non-root mode, hence the `--user` argument is necessary in the above commands.\n\n## Installation\n\nVisit the [tent release page](https://github.com/fhsinchy/tent/releases/) and download the `tent` binary to your computer. Open up your terminal where you've donwloaded the file and execute following commands:\n\n```bash\nchmod +x ./tent\n\nsudo mv ./tent /usr/local/bin\n```\n\nNow the `tent` command should be available everywhere in your system.\n\n## Build From Source\n\nIf you're on a Fedora system, the following command should install the necessary development dependencies.\n\n```bash\nsudo dnf groupinstall \"Development Tools\" -y \u0026\u0026 sudo dnf install golang btrfs-progs-devel gpgme-devel device-mapper-devel -y\n```\n\nAnd on a Ubuntu system, the following command should install the necessary development dependencies.\n\n```bash\nsudo apt install build-essential golang-go libbtrfs-dev libgpgme-dev libdevmapper-dev -y\n```\n\nIf you're on a different system you, may look for equivalent package on the respective package repositories.\n\nNow build and install the application as follows:\n\n```bash\ngit clone https://github.com/fhsinchy/tent.git ~/tent\n\ncd ~/tent\n\nmake install\n```\n\n## Usage\n\nThe `tent` binary has following commands:\n\n* `tent start \u003cservice name\u003e` - starts a container for the given service\n* `tent stop \u003cservice name\u003e` - stops and removes a container for the given service\n* `tent list` - lists all running containers\n\nMost of the services in `tent` utilizes volumes for persisting data, so even if you stop a service, it's data will be persisted in a volume for later usage. These volumes can listed by executing `podman volume ls` and can be managed like any other podman volume.\n\n### Start a Service\n\nThe generic syntax for the `start` command is as follows:\n\n```bash\ntent start \u003cservice name\u003e\n\n## starts mysql and prompts you where necessary\ntent start mysql\n\n## starts redis and mongo and prompts you where necessary\ntent start redis mongo\n```\n\n### Start Service with Default Configuration\n\nThe `--default` flag for the `start` command can be used to skip all the prompts and start a service with default configuration\n\n```bash\ntent start \u003cservice name\u003e --default\n\n## starts mysql with the default configuration\ntent start mysql --default\n\n## starts redis and mongo with default configuration\ntent start redis mongo --default\n```\n\n### Stop a Service\n\nThe generic syntax for the `stop` command is as follows:\n\n```bash\ntent stop \u003cservice name\u003e\n\n## stops mysql and removes the container\n## prompts you if multiple containers are found\ntent stop mysql\n\n## stops all mysql containers and removes them\ntent stop mysql --all\n\n## stops redis and mongo then removes the containers.\n## prompts you if multiple containers are found for any of the given services.\ntent stop redis mongo\n\n## stops all redis and mongo conainers and then removes them\ntent stop redis mongo --all\n```\n\n### Stop all Services\n\nThe `--all` flag for the `stop` command can be used to stop and remove all running tent containers at once\n\n```bash\ntent stop --all\n```\n\n## Running Multiple Versions\n\nGiven all the services are running inside containers, you can spin up multiple versions of the same service as long as you're keeping the port different.\n\nRun `tent start mysql` twice; the first time, use the `--default` flag, and the second time, put `5.7` as tag and `3307` as host port.\n\nNow, if you run `tent list`, you'll see both services running at the same time.\n\n```bash\n+--------------+----------------+---------------+---------------+\n| CONTAINER              | Image               | PORTS          |\n+--------------+----------------+---------------+---------------+\n| tent-mysql-5.7-3307    | docker.io/mysql:5.7 | 3307-\u003e3306/tcp |\n| tent-mysql-latest-3306 | docker.io/mysql:5.7 | 3306-\u003e3306/tcp |\n+--------------+----------------+---------------+---------------+\n```\n\n## Container Management\n\nContainers started by `tent` are regular containers with some pre-set configurations. So you can use regular `podman` commands such as `ls`, `inspect`, `logs` etc on them. Although `tent` comes with a `list` command, using the `podman` commands will result in more informative results. The target of `tent` is to provide plug and play containers, not to become a full-fledged `podman` cli.\n\n## Todo\n\nAlthough `tent` is in a stable state right now, there things that I'll have to do. A tentative list is as follows:\n\n* [x] Set-up proper versioning\n* [ ] Write Tests (very important)\n\nThat's all for now, this list will certainly change as I keep going working on my project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffhsinchy%2Ftent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffhsinchy%2Ftent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffhsinchy%2Ftent/lists"}