Jitter
Jitter is an experiment in what it would look like to work in a programming language that enables you to interactively lay down the train tracks in front of you as you're going.
Instead of figuring out everything in advance and running it later, just litter your program with
NotImplementedErrors or call functions that don't even exist yet, and instead of letting your program crash, Jitter
will handle these cases at runtime by allowing you to implement the function just in time. So, rather than these
situations being the end of the road leading to some uncrecoverable crash, you can just lay down some more track in
front of you and keep on keepin on!
CoRecursive Programming Language Jam Submission
This project is my submission to a 2 week (1 week planning - 1 week implementation) programming language jam hosted in the CoRecursive Slack Community. Don't expect this to be a fully fledged, bulletproof project.
Design
Before
If you have functions like:
def foo():
print("In foo")
bar()
def bar():
print("In bar")
raise NotImplementedError("Oh no, this function's not implemented yet!")
and a program like this:
if __name__ == "__main__":
foo()
normally, you'd run into a crash, something like:
In foo
In bar
Traceback (most recent call last):
File "/Users/jasonsteving/Projects/PLJam/ex.py", line 10, in <module>
foo()
File "/Users/jasonsteving/Projects/PLJam/ex.py", line 3, in foo
bar()
File "/Users/jasonsteving/Projects/PLJam/ex.py", line 7, in bar
raise NotImplementedError("Oh no, this function's not implemented yet!")
NotImplementedError: Oh no, this function's not implemented yet!
:(
After
With Jitter, you can simply wrap your program like:
if __name__ == "__main__":
with Jitter():
foo()
and now, any time a NotImplementedError is reached, Jitter will automatically handle the error, pausing execution and asking you for a (re-)implementation of the offending function (potentially using LLM code-generation). Then, once you've given it the valid implementation, Jitter will edit the source code in place to replace the bad implementation with your new implementation, and then by way of stack inspection, Jitter will literally resume your program from where it left off, but this time using the new given implementation.
This idea is repeatable within a given session, so you can incrementally build out your program, laying one more piece of track in front of you at a time so that the program never dies just because something wasn't yet implemented yet.
Stretch Goal Idea
In the future, I may extend this to handle NameError, e.g:
File "/Users/jasonsteving/Projects/PLJam/ex.py", line 2, in foo
bar()
^^^
NameError: name 'bar' is not defined
to give you a chance to implement the non-existent function and keep going.
Install Using UV
Install Jitter using the below command:
$ uv add jitter-llm --optional cli
If you don't want to be able to autogenerate scaffolding for programs that can be implemented via Jitter, drop the --optional cli args.
Auto-Generate Scaffolding for Programs to Try Out Jitter
The fastest way to get started with Jitter and get a feel for it is to run something like:
$ mkdir -p "sample/text_box_repl"
$ uv run jitter --output_dir "sample/text_box_repl" --desc "A repl that echoes but allows users to choose the shape of the boxes"
Claude Code will then go off and generate the scaffolding for the program you described, leaving all the implementations as raise NotImplementedError("...") so you can implement the detailed behavior using Jitter. Btw, you may ask yourself "why not just have Claude Code go and implement the full implementation for me then? Why use Jitter at all?"...I encourage you to try out both! Try just giving Claude Code the exact same one liner prompt directly, letting it run in auto-accept-edits mode, and see if it produces something you're happy with! In my experience I've actually been surprised that Jitter actually seems to do a better job of building out the program more efficiently than Claude Code on its own, but hey, this is all an experiment.
Metadata
Release files for jitter-llm 0.3.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jitter_llm-0.3.2.tar.gz | 37.7 kB | With provenance | Details for jitter_llm-0.3.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jitter_llm-0.3.2-py3-none-any.whl | Python 3 | none | any | Details for jitter_llm-0.3.2-py3-none-any.whl |
Total release size: 85.5 kB
Release files / jitter_llm-0.3.2.tar.gz
| Download URL | jitter_llm-0.3.2.tar.gz |
|---|---|
| Size | 37.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f8736b48ee8d52909724b2f93b9873b66287ad48d0fda205e13ce62741d3e518
|
|
BLAKE2b-256 checksum How to use checksums |
79f2f67dde1326e7cae46a01bdf34eef495e25b99d2d7f8748ef54c87deb4f16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 15, 2025.
Transparency logRelease files / jitter_llm-0.3.2-py3-none-any.whl
| Download URL | jitter_llm-0.3.2-py3-none-any.whl |
|---|---|
| Size | 47.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
73ac6ee759b032869d7a748bd6ab3aedf49043691dfdc642f67b9243479d520d
|
|
BLAKE2b-256 checksum How to use checksums |
28c31262c5093c681982b6dab3005977c16d7256a29fe32165f7dce42cc2015b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 15, 2025.
Transparency logSecurity for jitter-llm 0.3.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for jitter_llm-0.3.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 15, 2025.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.