{"id":21313996,"url":"https://github.com/octopusdeploy/octopustentacle","last_synced_at":"2025-10-18T03:49:42.380Z","repository":{"id":37867050,"uuid":"91411586","full_name":"OctopusDeploy/OctopusTentacle","owner":"OctopusDeploy","description":"| Public |  The secure, lightweight, cross-platform agent for Octopus Server which turns any computer into a worker or deployment target for automated deployments and operations runbooks.","archived":false,"fork":false,"pushed_at":"2025-07-04T09:02:04.000Z","size":58646,"stargazers_count":15,"open_issues_count":68,"forks_count":21,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-07-04T10:19:54.142Z","etag":null,"topics":["agent","deploy","devops","octopus","public"],"latest_commit_sha":null,"homepage":"https://octopus.com","language":"C#","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/OctopusDeploy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-05-16T03:48:23.000Z","updated_at":"2025-06-25T03:21:08.000Z","dependencies_parsed_at":"2023-12-20T11:20:46.549Z","dependency_job_id":"282bc359-cf5b-4967-8e7c-7473ae09c8c1","html_url":"https://github.com/OctopusDeploy/OctopusTentacle","commit_stats":null,"previous_names":[],"tags_count":1826,"template":false,"template_full_name":null,"purl":"pkg:github/OctopusDeploy/OctopusTentacle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OctopusDeploy%2FOctopusTentacle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OctopusDeploy%2FOctopusTentacle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OctopusDeploy%2FOctopusTentacle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OctopusDeploy%2FOctopusTentacle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OctopusDeploy","download_url":"https://codeload.github.com/OctopusDeploy/OctopusTentacle/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OctopusDeploy%2FOctopusTentacle/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264923080,"owners_count":23683716,"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":["agent","deploy","devops","octopus","public"],"created_at":"2024-11-21T18:09:40.228Z","updated_at":"2025-10-18T03:49:42.292Z","avatar_url":"https://github.com/OctopusDeploy.png","language":"C#","readme":"# Tentacle\n\nTentacle is the secure, lightweight, cross-platform agent for [Octopus Server](https://github.com/OctopusDeploy/OctopusDeploy) which turns any computer into a worker or deployment target for automated deployments and operations runbooks.\n\n![Tentacles Everywhere](https://user-images.githubusercontent.com/1627582/92418318-430ed000-f1aa-11ea-8a46-6d6763feef3a.png)\n\n## Code of Conduct\n\nThis project and everyone participating in it is governed by the [Octopus Deploy Code of Conduct](https://github.com/OctopusDeploy/.github/blob/main/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior using the instructions in the code of conduct.\n\n## Did you find a bug?\n\nIf the bug is a security vulnerability in Octopus Deploy, please refer to our [security policy](https://github.com/OctopusDeploy/.github/blob/main/SECURITY.md).\n\nSearch our [public Issues repository](https://github.com/OctopusDeploy/Issues) to ensure the bug was not already reported.\n\nIf you're unable to find an open issue addressing the problem, please follow our [support guidelines](https://github.com/OctopusDeploy/.github/blob/main/SUPPORT.md).\n\n## Contributing\n\n### Issues, Pull Requests, and Release Notes\n\n:+1::tada: First off, thanks for your contribution to Tentacle! :tada::+1:\n\nPlease [create a new issue](https://github.com/OctopusDeploy/OctopusTentacle/issues/new) for each bug fix or enhancement. [Issues in this repository](https://github.com/OctopusDeploy/OctopusTentacle/issues) are automatically used to create release notes for [releases](https://github.com/OctopusDeploy/OctopusTentacle/releases).\n\nPlease ensure every commit that hits `main` links either to an issue directly, or to a PR that in turn links to an issue. Please use the [appropriate keywords to close issues](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword). Doing so will ensure that your changes are available for users to download via the [Downloads](https://octopus.com/downloads/tentacle) page.\n\nIf you don't use a keyword, even if your changes are merged into main and a new version created, it will not appear on the Downloads page.\n\nPlease see [How to Raise a Meaningful Change](docs/meaningful-change.md) for a step-by-step guide.\n\n### Build, Test, and Delivery\n\nWe use the [Octopus Tentacle project in our private TeamCity server](https://build.octopushq.com/project/OctopusDeploy_OctopusTentacle) for automated build and test reporting status changes to pull requests.\n\nWe use the [Octopus Tentacle project in our private Octopus server](https://deploy.octopus.app/app#/Spaces-1/projects/octopus-tentacle) to deploy releases of Tentacle.\n\nDeployments happen automatically - a merge to `main` will trigger a build and a deployment - continuous delivery for the win!\n\nFor internal developers, on closing an issue, ReleaseBot will ask you for release notes.\nFor external developers, or if ReleaseBot fails for some reason, please add a comment to the issue `Release note: XXXX` to ensure release notes are generated correctly.\n\nAn easy way to find the code associated with a particular version of Tentacle is to check out the [tags](https://github.com/OctopusDeploy/OctopusTentacle/tags). \n\n#### Incrementing Major Versions\n\nTo increment a major version, make an empty commit with the commit message `+semver: major`. This is a special instruction to GitVersion.\n\n```\ngit commit --allow-empty -m \"+semver: major\"\n```\n\nFor further details refer to [Tentacle Rollout](docs/rollout.md).\n\n### Bundling Tentacle with Octopus Server\n\nWe bundle Tentacle inside Octopus Server to make it super duper easy to keep Tentacle updated across entire fleets of customer installations. Choosing the version of Tentacle to bundle inside Octopus Server is currently a manual process.\n\nTo include a new version into the next Octopus Server release, update the [reference in Octopus.Server.csproj](https://github.com/OctopusDeploy/OctopusDeploy/blob/master/source/Octopus.Server/Octopus.Server.csproj#L36). This is how we guarantee the version of Tentacle we bundle is also the version we use for all the end to end tests.\n\n## Debugging\n\nIn most scenarios, Tentacle is simple to debug:\n\n1. Just like a customer, set up an instance of Tentacle and connect it to an Octopus Server\n2. Start Tentacle using the debugger in your development environment of choice, using the `Tentacle.exe run --instance=YOUR_INSTANCE_NAME` command\n\nIf you need to set up Tentacle, Halibut and Octopus Server for local development, refer to the [Local Development chain docs](https://github.com/OctopusDeploy/Halibut/blob/152535a0a8052ddf85c4a8f9b11375d0adc6fe3b/docs/local-build-chain.md) in the Halibut repository.\n\n## Debugging in WSL (Windows Subsystem for Linux )\n\nCurrently we can only debug netcore apps running in WSL from VSCode, Visual Studio and Rider dont seem to have good working solutions\n\n- Install VSCode\n- Install Remote Dev pack for VSCode https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack\n- Open a WSL VSCode session https://code.visualstudio.com/docs/remote/wsl#_getting-started\n- Install C# extension, Even if this extension is already installed, this will need to be done within a WSL session as the extension binaries are platform specific.\n- Open the Tentacle repository folder in VSCode and create a debug profile (https://code.visualstudio.com/docs/editor/debugging) example `.vscode/launch.json` file:\n\n```\n{\n    // Use IntelliSense to learn about possible attributes.\n    // Hover to view descriptions of existing attributes.\n    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"Tentacle Run command\",\n            \"type\": \"coreclr\",\n            \"request\": \"launch\",\n            \"preLaunchTask\": \"build\",\n            \"program\": \"${workspaceFolder}/source/Octopus.Tentacle/bin/net8.0/Tentacle.dll\",\n            \"args\": [\"run\"],\n            \"cwd\": \"${workspaceFolder}/source/Octopus.Tentacle\",\n            \"console\": \"internalConsole\",\n            \"stopAtEntry\": false\n        },\n        {\n            \"name\": \".NET Core Attach\",\n            \"type\": \"coreclr\",\n            \"request\": \"attach\",\n            \"processId\": \"${command:pickProcess}\"\n        }\n    ]\n}\n```\n\n- Make sure the build task (in `.vscode/tasks.json`) specifies the target framework, by including `--framework=net8.0` as a build arg, otherwise VSCode will attempt to build for all frameworks in the csproj and fail on full .Net framework. the build task should look similar to:\n\n```\n{\n    \"label\": \"build\",\n    \"command\": \"dotnet\",\n    \"type\": \"process\",\n    \"args\": [\n        \"build\",\n        \"--framework=net8.0\",\n        \"${workspaceFolder}/source/Octopus.Tentacle/Octopus.Tentacle.csproj\",\n        \"/property:GenerateFullPaths=true\",\n        \"/consoleloggerparameters:NoSummary\"\n    ],\n    \"problemMatcher\": \"$msCompile\"\n}\n```\n\n## Debugging the Kubernetes Agent Tentacle\n\nThe Kubernetes Agent Tentacle is more complex to debug, as it normally runs inside a Kubernetes Pod. To debug it locally, you can run the `setup-k8s-agent-for-local-debug.sh` script in the root of this repo which will guide you through the process of installing a specially configured kind cluster, deploying the agent to it and then scaling back the installed agent so you can run a local copy to take it's place.\n\nNOTE: This script has only been tested on MacOS so far and requires Docker Desktop, Kubectl, Go CLI and Kind to be installed. It is also only for the Kubernetes Agent Tentacle running as a Deployment Target, not as a Worker.\n\n## Additional Resources\n\n- Scripts to help with manual testing can be found in [./testing](./testing/README.md).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctopusdeploy%2Foctopustentacle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foctopusdeploy%2Foctopustentacle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foctopusdeploy%2Foctopustentacle/lists"}