{"id":15516221,"url":"https://github.com/dippynark/kubecast","last_synced_at":"2025-06-14T19:34:58.829Z","repository":{"id":105104820,"uuid":"120087781","full_name":"dippynark/kubecast","owner":"dippynark","description":"Monitor exec sessions in your cluster","archived":false,"fork":false,"pushed_at":"2018-10-08T07:50:15.000Z","size":5571,"stargazers_count":19,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-23T03:33:30.625Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Elm","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dippynark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2018-02-03T12:10:29.000Z","updated_at":"2021-09-04T03:39:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"74d07967-4749-4767-bba8-dae8823622c3","html_url":"https://github.com/dippynark/kubecast","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dippynark/kubecast","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dippynark%2Fkubecast","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dippynark%2Fkubecast/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dippynark%2Fkubecast/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dippynark%2Fkubecast/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dippynark","download_url":"https://codeload.github.com/dippynark/kubecast/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dippynark%2Fkubecast/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259870917,"owners_count":22924592,"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":[],"created_at":"2024-10-02T10:06:10.425Z","updated_at":"2025-06-14T19:34:58.807Z","avatar_url":"https://github.com/dippynark.png","language":"Elm","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kubecast\n\nThe Kubernetes apiserver supports [auditing](https://kubernetes.io/docs/tasks/debug-application-cluster/audit/). Operators can use this feature to see whenever a client uses `kubectl exec` to gain access to a container. One issue with this is that operators cannot see what a client actually types during the session which reduces their ability to audit effectively.\n\nkubecast fills in this missing information and allows operators to see exactly what was typed during any shell session. kubecast does this by injecting a small eBPF program on every node which is triggered whenever a TTY is written to. These writes are then submitted to userspace, grouped into sessions and streamed to a central server in the [asciicast](https://github.com/asciinema/asciinema/blob/develop/doc/asciicast-v2.md) format so that they can be played back in real time.\n\n## Warning \n\nThis project is strictly alpha and kubecast injects code that is run in kernel space. Although this code runs on an in-kernel VM and should be safe, there can be performance implications - use at your own risk!\n\n### Prerequisites\n\n- Kernel version 4.8 or above\n\n### Build\n\n```\napt-cache search linux-image\napt-get install linux-image-4.15.0-1019-gcp\n# reboot\napt-get install linux-headers-`uname -r`\nmake\nmake docker_push\n```\n\n### Run\n\n```\ngcloud container clusters create kubecast --image-type UBUNTU\n```\n\n### Debug\n\nThe generated object file can be viewed using `llvm-objdump`\n\n```\nllvm-objdump -S ./bpf/bpf_tty.o\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdippynark%2Fkubecast","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdippynark%2Fkubecast","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdippynark%2Fkubecast/lists"}