{"id":29097411,"url":"https://github.com/lambdaisland/nrepl-proxy","last_synced_at":"2025-08-09T03:43:45.532Z","repository":{"id":59445263,"uuid":"408765025","full_name":"lambdaisland/nrepl-proxy","owner":"lambdaisland","description":"Proxy for debugging nREPL interactions","archived":false,"fork":false,"pushed_at":"2024-07-08T06:26:44.000Z","size":20,"stargazers_count":21,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-31T01:11:27.949Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lambdaisland.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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":"2021-09-21T09:46:38.000Z","updated_at":"2025-04-30T03:58:15.000Z","dependencies_parsed_at":"2024-11-10T03:29:59.113Z","dependency_job_id":"3fd4867e-2226-47bb-8c6f-2197a3c7b0e4","html_url":"https://github.com/lambdaisland/nrepl-proxy","commit_stats":{"total_commits":11,"total_committers":2,"mean_commits":5.5,"dds":0.09090909090909094,"last_synced_commit":"733e022da765a7675a4750e3eb3a0b3a85956c29"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/lambdaisland/nrepl-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdaisland%2Fnrepl-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdaisland%2Fnrepl-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdaisland%2Fnrepl-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdaisland%2Fnrepl-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lambdaisland","download_url":"https://codeload.github.com/lambdaisland/nrepl-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdaisland%2Fnrepl-proxy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268688689,"owners_count":24291071,"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-08-04T02:00:09.867Z","response_time":79,"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":[],"created_at":"2025-06-28T13:42:17.582Z","updated_at":"2025-08-09T03:43:45.377Z","avatar_url":"https://github.com/lambdaisland.png","language":"Clojure","funding_links":["http://opencollective.com/lambda-island"],"categories":[],"sub_categories":[],"readme":"# lambdaisland/nrepl-proxy\n\n\u003c!-- badges --\u003e\n[![cljdoc badge](https://cljdoc.org/badge/com.lambdaisland/nrepl-proxy)](https://cljdoc.org/d/com.lambdaisland/nrepl-proxy) [![Clojars Project](https://img.shields.io/clojars/v/com.lambdaisland/nrepl-proxy.svg)](https://clojars.org/com.lambdaisland/nrepl-proxy)\n\u003c!-- /badges --\u003e\n\nProxy server for debugging nREPL\n\n## Usage\n\nRunning inside this project or in a project where lambdaisland.nrepl-proxy\nhas been added to deps.edn:\n```\nclojure -X lambdaisland.nrepl-proxy/start :port 1234 :attach 5678\n```\n\nRunning if from anywhere:\n```\nclojure -Sdeps '{:deps {com.lambdaisland/nrepl-proxy {:mvn/version \"0.2.8-alpha\"}}}' -X lambdaisland.nrepl-proxy/start :port 1234 :attach 5678\n```\n\nThis will listen for incoming connections on port 1234, and will connect through\nto an nREPL server listening on port 5678. When it gets a connection it prints\nout something like this:\n\n```\nnil ---\u003e 1 clone {}\nJ \u003c=== 1 #{:done} {:new-session \"002914a8-db79-408d-807a-c5b3955ab6f9\"}\nnil ---\u003e 2 clone {}\nX \u003c=== 2 #{:done} {:new-session \"6a7e7b99-1b8e-4008-bbe5-ddddf46672a9\"}\nY ---\u003e 3 describe {}\nY \u003c=== 3 #{:done} {:aux {:current-ns \"user\"}, :ops {:stdin {}, :add-middleware {}, :lookup {}, :swap-middleware {}, :sideloader-start {}, :ls-middleware {}, :close {}, :sideloader-provide {}, :load-file {}, :ls-sessions {}, :clone {}, :describe {}, :interrupt {}, :completions {}, :eval {}}, :versions {:clojure {:incremental 3, :major 1, :minor 10, :version-string \"1.10.3\"}, :java {:version-string \"17\"}, :nrepl {:incremental 0, :major 0, :minor 9, :version-string \"0.9.0\"}}}\nY ---\u003e 4 eval {:nrepl.middleware.print/buffer-size 4096, :file \"*cider-repl lambdaisland/nrepl-proxy:localhost:5424(clj)*\", :nrepl.middleware.print/quota 1048576, :nrepl.middleware.print/print \"cider.nrepl.pprint/pprint\", :column 1, :line 10, :code \"(clojure.core/apply clojure.core/require clojure.main/repl-requires)\", :inhibit-cider-middleware \"true\", :nrepl.middleware.print/stream? \"1\", :nrepl.middleware.print/options {:right-margin 80}}\nG ---\u003e 5 eval {:code \"(seq (.split (System/getProperty \\\"java.class.path\\\") \\\":\\\"))\"}\nY \u003c--- 4 #{:nrepl.middleware.print/error} #:nrepl.middleware.print{:error \"Couldn't resolve print-var cider.nrepl.pprint/pprint\"}\nY \u003c--- 4 #{} {:value \"nil\"}\nY \u003c--- 4 #{} {:ns \"user\"}\nY \u003c=== 4 #{:done} {}\n```\n\nThe initial letter indicates the session, arrows to the right are messages sent\nto the server, arrows coming back are responses. Responses marked as `:done` get\na thick arrow, `:error` responses get a `\u003c***` arrow.\n\nThen you get the message id, the `:op` for sent messages, or the `:status` flags\nfor returning messages, and then the map with other keys.\n\nThis is meant as a PoC for tooling that wants to make nREPL traffic\nintrospectable.\n\n\u003c!-- opencollective --\u003e\n## Lambda Island Open Source\n\n\u003cimg align=\"left\" src=\"https://github.com/lambdaisland/open-source/raw/master/artwork/lighthouse_readme.png\"\u003e\n\n\u0026nbsp;\n\nnrepl-proxy is part of a growing collection of quality Clojure libraries created and maintained\nby the fine folks at [Gaiwan](https://gaiwan.co).\n\nPay it forward by [becoming a backer on our Open Collective](http://opencollective.com/lambda-island),\nso that we may continue to enjoy a thriving Clojure ecosystem.\n\nYou can find an overview of our projects at [lambdaisland/open-source](https://github.com/lambdaisland/open-source).\n\n\u0026nbsp;\n\n\u0026nbsp;\n\u003c!-- /opencollective --\u003e\n\n\u003c!-- contributing --\u003e\n## Contributing\n\nEveryone has a right to submit patches to nrepl-proxy, and thus become a contributor.\n\nContributors MUST\n\n- adhere to the [LambdaIsland Clojure Style Guide](https://nextjournal.com/lambdaisland/clojure-style-guide)\n- write patches that solve a problem. Start by stating the problem, then supply a minimal solution. `*`\n- agree to license their contributions as MPL 2.0.\n- not break the contract with downstream consumers. `**`\n- not break the tests.\n\nContributors SHOULD\n\n- update the CHANGELOG and README.\n- add tests for new functionality.\n\nIf you submit a pull request that adheres to these rules, then it will almost\ncertainly be merged immediately. However some things may require more\nconsideration. If you add new dependencies, or significantly increase the API\nsurface, then we need to decide if these changes are in line with the project's\ngoals. In this case you can start by [writing a pitch](https://nextjournal.com/lambdaisland/pitch-template),\nand collecting feedback on it.\n\n`*` This goes for features too, a feature needs to solve a problem. State the problem it solves, then supply a minimal solution.\n\n`**` As long as this project has not seen a public release (i.e. is not on Clojars)\nwe may still consider making breaking changes, if there is consensus that the\nchanges are justified.\n\u003c!-- /contributing --\u003e\n\n\u003c!-- license --\u003e\n## License\n\nCopyright \u0026copy; 2021 Arne Brasseur and Contributors\n\nLicensed under the term of the Mozilla Public License 2.0, see LICENSE.\n\u003c!-- /license --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flambdaisland%2Fnrepl-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flambdaisland%2Fnrepl-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flambdaisland%2Fnrepl-proxy/lists"}