What am I looking at?
Tokens are the lexer output. These represent the atomic units of Python source code, tokenized before any meaning has been applied.
The AST (Abstract Syntax Tree) is the parser output. At this stage, the interpreter understands the shape of the program and what it's trying to do (call a function, define a variable, etc.), but it hasn't begun to actually execute those instructions.
Bytecode is the compiler output. This is a flat representation of instructions supported by the Virtual Machine. At this stage, the compiler understands locals versus globals and has turned control flow (loops, conditionals) into jump offsets.
These are the three stages before the code is actually run. To see what happens next, try running code in the Memphis REPL.
What is Ozark?
Ozark is a browser-based Python source code inspection tool.
It is built in React and makes calls into Rust functions which have been compiled to WebAssembly. That means the lexer, parser, and compiler running in your browser are the same ones used by Memphis itself.
Ozark reflects the kind of understanding I care about most: building confidence by seeing how a system works across every layer, from the ground up. That same instinct shapes my work with engineers in Rust and Python.