Skip to content

CLI Reference

Ember ships a CLI accessible as ember after pip install ember-api.

bash
ember --help

ember new

Scaffold a new project directory.

bash
ember new <name> [--port PORT]
FlagDefaultDescription
namerequiredDirectory name and project name
--port8000Default port written into main.py

Example:

bash
ember new myapi --port 9000
cd myapi
ember dev

ember dev

Run a development server — single worker, debug logging enabled.

bash
ember dev [--host HOST] [--port PORT] [--app MODULE:ATTR]
FlagDefaultDescription
--host127.0.0.1Bind address
--port8000Bind port
--appauto-detectApp location (module:attr)

Auto-detection order: main:appapp:appapplication:app.

Example:

bash
ember dev --port 9000
ember dev --app src.main:app

ember build

Compile Cython hot-path extensions in-place. Must be run from the repo root (where setup.py lives).

bash
ember build [--clean] [--jobs N]
FlagDefaultDescription
--cleanoffRemove .so, .c, build/ before compiling
--jobs Ncpu countParallel compiler processes

Example:

bash
# First-time build
ember build

# Clean rebuild (after upgrading Cython)
ember build --clean --jobs 4

What gets compiled:

ModuleFile
HTTP protocol (llhttp)ember/protocol/cprotocol.pyx
Router + LRU cacheember/router/router.pyx
Request + Streamember/request/request.pyx
Responseember/response/response.pyx
Headersember/headers/headers.pyx
SSE writerember/ai/sse/sse_writer.pyx
Token bucketember/ai/ratelimit/token_bucket.pyx

ember routes

Inspect all registered routes for the app.

bash
ember routes [--app MODULE:ATTR]

Example output:

METHOD     PATH                                          HANDLER
────────────────────────────────────────────────────────────────────────────────
DELETE     /tasks/{task_id}                              delete_task
GET        /                                             index
GET        /health                                       health
GET        /tasks                                        list_tasks
GET        /tasks/{task_id}                              get_task
POST       /tasks                                        create_task
POST       /v1/chat                                      chat   [AI/SSE]
PUT        /tasks/{task_id}                              update_task

Routes marked [AI/SSE] are ai_route() endpoints.


ember start

Run the production server — multi-process, no debug output.

bash
ember start [--host HOST] [--port PORT] [--workers N] [--app MODULE:ATTR]
FlagDefaultDescription
--host0.0.0.0Bind address
--port8000Bind port
--workerscpu_count + 2Worker processes
--appauto-detectApp location

Example:

bash
ember start --workers 8 --port 80
ember start --app api.main:app --workers $(nproc)

ember version

bash
ember version
# Ember 0.1.0

App Spec (--app)

All commands that accept --app use the module:attr format:

bash
ember dev --app main:app           # from ./main.py, object named app
ember dev --app src.server:create  # from ./src/server.py, callable
ember start --app mypackage.main:application

The module is imported relative to the current working directory.

Released under the MIT License.