{"id":13511506,"url":"https://github.com/containers/conmon","last_synced_at":"2026-02-12T19:04:58.493Z","repository":{"id":34148291,"uuid":"144288854","full_name":"containers/conmon","owner":"containers","description":"An OCI container runtime monitor.","archived":false,"fork":false,"pushed_at":"2025-05-02T08:43:51.000Z","size":874,"stargazers_count":440,"open_issues_count":54,"forks_count":135,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-05-02T09:45:49.545Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/containers.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.txt","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-08-10T13:21:43.000Z","updated_at":"2025-05-02T08:42:38.000Z","dependencies_parsed_at":"2024-06-05T02:33:28.728Z","dependency_job_id":"e73e2a35-80dd-4c99-9be8-a2abeb8929f7","html_url":"https://github.com/containers/conmon","commit_stats":{"total_commits":405,"total_committers":57,"mean_commits":7.105263157894737,"dds":0.5209876543209877,"last_synced_commit":"a58206d4371ca9cf87cbf63322fed07b30835b96"},"previous_names":[],"tags_count":50,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fconmon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fconmon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fconmon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fconmon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/containers","download_url":"https://codeload.github.com/containers/conmon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254079834,"owners_count":22011267,"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-08-01T03:00:52.534Z","updated_at":"2026-02-12T19:04:58.488Z","avatar_url":"https://github.com/containers.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# conmon\n\nAn OCI container runtime monitor.\n\nConmon is a monitoring program and communication tool between a\ncontainer manager (like [Podman](https://podman.io/) or\n[CRI-O](https://cri-o.io/)) and an OCI runtime (like\n[runc](https://github.com/opencontainers/runc) or\n[crun](https://github.com/containers/crun)) for a single container.\n\nUpon being launched, conmon (usually) double-forks to daemonize and detach from the\nparent that launched it. It then launches the runtime as its child. This\nallows managing processes to die in the foreground, but still be able to\nwatch over and connect to the child process (the container).\n\nWhile the container runs, conmon does two things:\n\n  - Provides a socket for attaching to the container, holding open the\n    container's standard streams and forwarding them over the socket.\n  - Writes the contents of the container's streams to a log file (or to\n    the systemd journal) so they can be read after the container's\n    death.\n\nFinally, upon the containers death, conmon will record its exit time and\ncode to be read by the managing programs.\n\nWritten in C and designed to have a low memory footprint, conmon is\nintended to be run by a container managing library. Essentially, conmon\nis the smallest daemon a container can have.\n\nIn most cases, conmon should be packaged with your favorite container\nmanager. However, if you'd like to try building it from source, follow\nthe steps below.\n\n## Dependencies\n\nThese dependencies are required for the build:\n\n### Fedora, CentOS, RHEL, and related distributions:\n\n``` shell\nsudo yum install -y \\\n  gcc \\\n  git \\\n  glib2-devel \\\n  glibc-devel \\\n  libseccomp-devel \\\n  systemd-devel \\\n  make \\\n  pkgconfig \\\n  runc\n```\n\n### Debian, Ubuntu, and related distributions:\n\n``` shell\nsudo apt-get install \\\n  gcc \\\n  git \\\n  libc6-dev \\\n  libglib2.0-dev \\\n  libseccomp-dev \\\n  pkg-config \\\n  make \\\n  runc\n```\n\n## Build\n\nOnce all the dependencies are installed:\n\n``` shell\nmake\n```\n\nThere are three options for installation, depending on your environment.\nEach can have the PREFIX overridden. The PREFIX defaults to `/usr/local`\nfor most Linux distributions.\n\n  - `make install` installs to `$PREFIX/bin`, for adding conmon to the\n    path.\n  - `make podman` installs to `$PREFIX/libexec/podman`, which is used to\n    override the conmon version that Podman uses.\n  - `make crio` installs to `$PREFIX/libexec/crio`, which is used to\n    override the conmon version that CRI-O uses.\n\nNote, to run conmon, you'll also need to have an OCI compliant runtime\ninstalled, like [runc](https://github.com/opencontainers/runc) or\n[crun](https://github.com/containers/crun).\n\n## Testing\n\nOnce you have successfully built `conmon`, run the tests using:\n\n``` shell\nmake test\n```\n\nNote that you'll also need the `bats` and `socat` packages install if not\npresent.\n\n## Static build\n\nIt is possible to build a statically linked binary of conmon by using\nthe officially provided\n[nix](https://nixos.org/nixos/packages.html?attr=conmon\u0026channel=unstable\u0026query=conmon)\npackage and the derivation of it [within this repository](nix/). The\nbuilds are completely reproducible and will create a x86\\_64/amd64\nstripped ELF binary for [glibc](https://www.gnu.org/software/libc).\n\n### Nix\n\nTo build the binaries by locally installing the nix package manager:\n\n``` shell\nnix build -f nix/\n```\n\n### Ansible\n\nAn [Ansible Role](https://github.com/alvistack/ansible-role-conmon) is\nalso available to automate the installation of the above statically\nlinked binary on its supported OS:\n\n``` shell\nsudo su -\nmkdir -p ~/.ansible/roles\ncd ~/.ansible/roles\ngit clone https://github.com/alvistack/ansible-role-conmon.git conmon\ncd ~/.ansible/roles/conmon\npip3 install --upgrade --ignore-installed --requirement requirements.txt\nmolecule converge\nmolecule verify\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Fconmon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontainers%2Fconmon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Fconmon/lists"}