✦ ember
A modern, beautiful interactive Python shell. IPython's power — magics, history, debugging, extensions — rebuilt around a calm terminal UI.
See it in action
Why ember
- Readable sessions. Every cell is a block: your code, its output on a rail, and a footer with status, time, result type and
Out[N]. - Help while you type. Completions with type icons, and live signatures with declared and inferred types —
greet(name: str, times: int = 1) -> str— even for functions without annotations. - Everything you use IPython for. 85 magics,
obj?,!shell, session history in SQLite,%autoreload,%debug,%timeit,%prun, top-levelawait, GUI event loops… - Runs IPython code.
get_ipython(),IPython.display, custom magics and IPython extensions likeline_profilerwork unchanged. - Feels good. Paste code straight from docs (
>>>prompts are stripped), Shift+Enter for new lines, vi or emacs keys, three themes, two layouts.
Install
pipx install ember-shell # the `ember` command everywhere, isolated from your projects
pip install ember-shell # or into the current environment
The package is ember-shell on PyPI; the command is ember. To try the latest unreleased code: pip install git+https://github.com/arthurdaquinosilva/ember.git.
Then run ember. Requires Python 3.10+ on macOS or Linux.
Tip: ember runs code with the Python it's installed into. To work with a project's packages, install ember inside that project's virtual environment.
Quick tour
> import json
> data = {"name": "ember", "tags": ["repl", "python"]}
> data? # inspect any object (?? shows the source)
> json.*load*? # wildcard name search
> files = !ls # shell output as a list with .grep() / .fields()
> %timeit sorted(range(1000))
> %history -g json # search history across sessions
> %xmode verbose # tracebacks with local variables
> %debug # debugger on the last error (or breakpoint() in your code)
> %help # every key, syntax and magic
| Enter | run the cell (adds a newline while a block is unfinished) |
| Shift+Enter · Alt+Enter · Ctrl+J | insert a newline |
| Tab / Shift+Tab | complete · indent / dedent |
| → | accept the grey suggestion from history |
| ↑ ↓ · Ctrl+R | history · search history |
| Ctrl+O | edit the cell in $EDITOR |
| Ctrl+C · Ctrl+D | clear input / interrupt · exit |
Shift+Enter needs a terminal that reports modified keys (iTerm2, WezTerm, Ghostty, kitty, xterm; inside tmux set extended-keys on). Alt+Enter and Ctrl+J work everywhere.
Documentation
| Guide | What's inside |
|---|---|
| Features | The interface, input syntax, display, errors & debugging, history, shell, GUI and completion |
| Magic reference | All 85 magics with options (generated from the code) |
| Configuration | config.toml, layouts and themes, profiles, startup files, command-line options |
| IPython compatibility | get_ipython(), custom magics, extensions, display protocol, what's different |
| Releasing | How versions are published to PyPI |
Command line
ember # interactive
ember script.py args… # run a file (-i to stay interactive afterwards)
ember -m package.module # run a module
ember -c "print('hi')" # run a command
ember --profile work --vi --theme nebula --no-startup
Development
git clone https://github.com/arthurdaquinosilva/ember.git && cd ember
python -m venv .venv && .venv/bin/pip install -e '.[dev]'
.venv/bin/python -m pytest # unit tests
.venv/bin/python scripts/gen_magic_docs.py # regenerate docs/magics.md
.venv/bin/python scripts/screenshot.py # re-record docs/assets/demo.svg
ember is built on prompt_toolkit (input and layout), Rich (output), Jedi (completion and signatures) and Pygments (highlighting).
Known limits
- Terminal only — no Jupyter kernel; images (
Image,SVG,%matplotlib inline) show a placeholder. !cmdstreams through a pipe, so fully interactive programs (vim, less) should run outside ember.- With the real IPython installed, ember leaves it untouched, so libraries calling IPython's own
get_ipython()see no shell.
License
MIT © Arthur D'Aquino
Metadata
Release files for ember-shell 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ember_shell-0.2.3.tar.gz | 97.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ember_shell-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 196.7 kB
Release files / ember_shell-0.2.3.tar.gz
| Download URL | ember_shell-0.2.3.tar.gz |
|---|---|
| Size | 97.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c4ffdea284be36b71a5c0f65cb0695421d3338bfcea65553754a24706b33ee17
|
|
BLAKE2b-256 checksum How to use checksums |
eaaa7928a8cbb6477f45d4861cc0812e70e4e176f02f8d6f0f7115bf1d361cdc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 21, 2026.
Transparency logRelease files / ember_shell-0.2.3-py3-none-any.whl
| Download URL | ember_shell-0.2.3-py3-none-any.whl |
|---|---|
| Size | 99.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
72d693e75bb2a4038b21abf7e3c043616e7294e3756eeed549ca03713e4240b1
|
|
BLAKE2b-256 checksum How to use checksums |
b5bcbd987999cf428762c7cb5c3e4568e4991bc9061e048b954e337eb32c538e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Sep 21, 2026.
Transparency log