Skip to main content
ember's start screen: the pixel EMBER: wordmark, version and environment info, the input bar and the key bar

✦ ember

A modern, beautiful interactive Python shell. IPython's power — magics, history, debugging, extensions — rebuilt around a calm terminal UI.

PyPI tests python license

See it in action

ember running in a terminal: cells with results and timing, %timeit, and a typed signature hint

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-level await, GUI event loops…
  • Runs IPython code. get_ipython(), IPython.display, custom magics and IPython extensions like line_profiler work 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

curl -fsSL https://raw.githubusercontent.com/arthurdaquinosilva/ember/main/install.sh | sh

The installer picks a suitable Python, puts ember in its own virtual environment (using pipx if you have it) and links the ember command into ~/.local/bin. Nothing is added to your projects' environments. Remove it any time with … | sh -s -- --uninstall.

Already a Python user? Install it yourself instead:

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.
  • !cmd streams 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.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ember-shell 0.2.4
File Size Uploaded
ember_shell-0.2.4.tar.gz 99.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ember-shell 0.2.4
File Interpreter ABI Platform
ember_shell-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 198.8 kB

Release files / ember_shell-0.2.4.tar.gz

Download URL ember_shell-0.2.4.tar.gz
Size 99.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ff8851e06805d7400ed1028341f090ea36fa18dba498831ccf93fae9ed35bc52
BLAKE2b-256 checksum
How to use checksums
53185a34711fee1d639f31292304371bc1f3125c673129b6e0a337c3ba678088
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 29, 2026.

Transparency log

Release files / ember_shell-0.2.4-py3-none-any.whl

Download URL ember_shell-0.2.4-py3-none-any.whl
Size 99.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1e9c9d74df8104187127f4b12371ce83490808e201e66c6f6356c82152dc7a9b
BLAKE2b-256 checksum
How to use checksums
20426d2f60339a74badccdafe59fcda113e0f44319c8f4b35842818fa3b6464a
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 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.4 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page