{"id":15151891,"url":"https://github.com/elastic/apm-agent-ocaml","last_synced_at":"2025-09-29T22:31:08.499Z","repository":{"id":41981751,"uuid":"298031778","full_name":"elastic/apm-agent-ocaml","owner":"elastic","description":"Elastic OCaml APM provides an OCaml library for uploading traces, transactions and errors to Elastic APM.","archived":true,"fork":false,"pushed_at":"2024-08-08T20:57:54.000Z","size":142,"stargazers_count":15,"open_issues_count":0,"forks_count":4,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-09-22T23:03:23.885Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"OCaml","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/elastic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-23T16:36:50.000Z","updated_at":"2024-08-09T14:46:22.000Z","dependencies_parsed_at":"2022-08-12T01:20:25.552Z","dependency_job_id":null,"html_url":"https://github.com/elastic/apm-agent-ocaml","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fapm-agent-ocaml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fapm-agent-ocaml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fapm-agent-ocaml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fapm-agent-ocaml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elastic","download_url":"https://codeload.github.com/elastic/apm-agent-ocaml/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219874705,"owners_count":16554609,"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-09-26T15:40:21.806Z","updated_at":"2025-09-29T22:31:08.175Z","avatar_url":"https://github.com/elastic.png","language":"OCaml","funding_links":[],"categories":["\u003ca name=\"OCaml\"\u003e\u003c/a\u003eOCaml"],"sub_categories":[],"readme":"# OCaml agent for Elastic APM\n\n\u003cp align=\"center\"\u003e\n  \u003cimg\n    alt=\"Test and Build OCaml APM Client\"\n    src=\"https://github.com/elastic/apm-agent-ocaml/actions/workflows/build-client.yml/badge.svg\" /\u003e\n\u003c/p\u003e\n\n## Dev setup\n\nClone\n\n```bash\ngit clone git@github.com:elastic/apm-agent-ocaml.git\ncd apm-agent-ocaml\n```\n\nSetup OCaml environment\n\n```bash\nopam switch create . 4.13.1\nopam install ocamlformat ocamlformat-rpc ocaml-lsp-server\n```\n\nYou can run a build in watch mode so new changes are automatically detected and\nrebuilt. In a terminal, in or outside of your editor:\n\n```bash\ndune build -w\n```\n\nTests can also be run in watch mode with expectation tests automatically\ncapturing changes in output! This gives an almost magical experience where test\nresults update as new tests are written _and_ as the library itself evolves.\n\n```bash\ndune test -w --auto-promote\n```\n\nIf you don't have it installed already, watch mode needs `fswatch` which can be\ninstalled via `brew` on macOS:\n\n```bash\nbrew install fswatch\n```\n\nIf you're using vscode, install the OCaml Platform plugin by OCaml Labs. The\nOCaml plugin should automatically detect the local opam switch you just created.\nIf you setup format on save in the editor it will automatically format new\nchanges via the LSP server to conform to the project's standard formatting.\n\nYou should now be ready to work on the OCaml Elastic APM agent!\n\n### Running the examples locally\n\n* Install docker + docker compose\n* `docker compose build ocaml-base`\n* `docker compose build`\n* `docker compose up -d`\n\nOnce docker compose up finishes the following endpoints will be available:\n\n* http://localhost:5601 -\u003e Kibana\n* http://localhost:4000 -\u003e [OCaml hello-world example](./example/1-hello-opium)\n* http://localhost:4001 -\u003e [OCaml example that talks to a python service](./example/3-polyglot-services/ocaml)\n* http://localhost:5000 -\u003e [Python flask application](./example/3-polyglot-services/python)\n* http://localhost:4003 -\u003e [OCaml example that talks to postgres](./example/2-database-ocaml)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felastic%2Fapm-agent-ocaml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felastic%2Fapm-agent-ocaml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felastic%2Fapm-agent-ocaml/lists"}