{"id":41605164,"url":"https://github.com/answerdotai/ipymini","last_synced_at":"2026-02-21T23:07:32.537Z","repository":{"id":334263600,"uuid":"1140477236","full_name":"AnswerDotAI/ipymini","owner":"AnswerDotAI","description":"Experimental mini python jupyter kernel","archived":false,"fork":false,"pushed_at":"2026-01-27T07:27:40.000Z","size":517,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-29T05:50:30.810Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","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/AnswerDotAI.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-23T10:28:33.000Z","updated_at":"2026-01-27T07:17:29.000Z","dependencies_parsed_at":"2026-01-27T14:00:33.054Z","dependency_job_id":null,"html_url":"https://github.com/AnswerDotAI/ipymini","commit_stats":null,"previous_names":["answerdotai/ipymini"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/AnswerDotAI/ipymini","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnswerDotAI%2Fipymini","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnswerDotAI%2Fipymini/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnswerDotAI%2Fipymini/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnswerDotAI%2Fipymini/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AnswerDotAI","download_url":"https://codeload.github.com/AnswerDotAI/ipymini/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AnswerDotAI%2Fipymini/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28880823,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T10:31:27.438Z","status":"ssl_error","status_checked_at":"2026-01-29T10:31:01.017Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":"2026-01-24T11:07:40.594Z","updated_at":"2026-02-21T23:07:32.525Z","avatar_url":"https://github.com/AnswerDotAI.png","language":"Python","readme":"# ipymini\n\n🛑 **WARNING** This is a very early, very experimental, purely research project for now. Have fun playing with it, but don't expect it to work, or be supported, or to still exist next week. Perhaps it'll turn out to be useful, and we'll invest in it and maintain it, in which case we'll remove this warning. If you play with it and find issues, have improvement ideas, etc, we're keen to hear, and to research together!\n\n`ipymini` is a **Python-only** Jupyter kernel for Python with a small, readable codebase and strong IPython parity.\n\nThe design goal is: **a small, readable, testable kernel** with **first‑class IPython behavior**.\n\nThis was almost entirely implemented by AI, and no human currently fully understands all the generated code, so please be very careful, because we don't actually know what this code does. The AI closely referenced the `ipykernel`, `xeus`, `xeus-python`, and `jupyter_kernel_test` projects during development. So all credit for this project belongs to the authors of those packages, and to authors of the excellent documentation and specifications referred to (e.g DAP spec; JEPs; etc) - but of course all blame for mistakes is entirely our/AI's fault.\n\n---\n\n## What we’ve aimed to do\n\n- Implement a full Jupyter kernel in pure Python.\n- Match `ipykernel` behavior where it matters (IOPub ordering, message shapes, history, inspect, etc.).\n- Use IPython instead of re‑implementing Python semantics.\n- Expand protocol‑level tests (IOPub, interrupts, completions, etc.) to approach upstream parity.\n\n---\n\n## Requirements\n\n- Python 3.11+ recommended (we test with 3.12)\n- `jupyter_client`, `jupyter_core`, `ipython`, `pyzmq`\n\nIf you need system ZMQ libs on macOS:\n\n```\nbrew install libzmq\n```\n\n---\n\n## Install (editable)\n\nFrom the repo root:\n\n```\npip install -e .\n```\n\nOptional test deps:\n\n```\npip install -e \".[test]\"\n```\n\n## Installing the kernel spec\n\nYou have a few options:\n\n### Option A: Use the built-in installer\n\n```\npython -m ipymini install --user\n```\n\nOr install into the current environment:\n\n```\npython -m ipymini install --sys-prefix\n```\n\nAfter either option, you should see it in:\n\n```\njupyter kernelspec list\n```\n\n### Option B: Install the spec into your user Jupyter dir\n\n```\njupyter kernelspec install --user /path/to/ipymini/share/jupyter/kernels/ipymini\n```\n\n### Option C: Use the repo’s `JUPYTER_PATH`\nSet `JUPYTER_PATH` to include the repo’s `share/jupyter`:\n\n```\nexport JUPYTER_PATH=/path/to/ipymini/share/jupyter:$JUPYTER_PATH\n```\n\n---\n\n## Running manually\n\n`ipymini` is a normal Jupyter kernel executable. It expects a connection file:\n\n```\npython -m ipymini -f /path/to/connection.json\n```\n\n(When run via Jupyter, that file is created and passed automatically.)\n\n---\n\n## Configuring env and working directory\n\nFor per-launch configuration, rely on the kernel launcher:\n\n- **KernelManager**: pass `env` and `cwd` to `start_kernel(...)`.\n- **Kernelspec**: add an `\"env\"` dict to `share/jupyter/kernels/ipymini/kernel.json` for static defaults.\n\nExample (KernelManager):\n\n```\nfrom jupyter_client import KernelManager\n\nkm = KernelManager(kernel_name=\"ipymini\")\nkm.start_kernel(env={\"MY_FLAG\": \"1\"}, cwd=\"/path/to/workdir\")\n```\n\nOptional env flags:\n- `IPYMINI_STOP_ON_ERROR_TIMEOUT`: seconds to keep aborting queued executes after an error (default 0.0).\n\n---\n\n## Developer guide\n\nSee `DEV.md`.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanswerdotai%2Fipymini","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanswerdotai%2Fipymini","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanswerdotai%2Fipymini/lists"}