Files
chatmail-core/deltachat-rpc-server
holger krekel e88c7f88ee feat: report ready/init_error on startup via JSON-RPC notification
Why:
When the deltachat-rpc-server encounters a fatal error during early startup
(e.g., when the accounts directory is invalid, a file instead of a dir, or
otherwise inaccessible), it exits. The Python RPC client previously lacked
a structured way to wait for the server to be fully initialized or to
detect early startup failures gracefully. This led to hanging tests or
obscure broken pipe errors rather than clear initialization errors.

How:
- The RPC server now sends a JSON-RPC notification on stdout at startup:
  - "ready" with core_version, server_path, and accounts_dir on success
  - "init_error" with error message if accounts directory initialization fails
- The Python RPC client reads the first line from stdout to ensure the server is ready.
- The Python client raises JsonRpcError on init_error, enabling early
  failure detection and fast-failing rather than stalling.
- Added tests to ensure the client fails immediately on invalid dirs.
2026-02-24 17:30:07 +01:00
..
2026-02-17 13:28:19 +00:00

Delta Chat RPC server

This program provides a JSON-RPC 2.0 interface to DeltaChat over standard I/O.

Install

To download binary pre-builds check the releases page. Rename the downloaded binary to deltachat-rpc-server and add it to your PATH.

To install from source run:

cargo install --git https://github.com/chatmail/core/ deltachat-rpc-server

The deltachat-rpc-server executable will be installed into $HOME/.cargo/bin that should be available in your PATH.

Usage

To use just run deltachat-rpc-server command. The accounts folder will be created in the current working directory unless DC_ACCOUNTS_PATH is set:

export DC_ACCOUNTS_PATH=$HOME/delta/
deltachat-rpc-server

The common use case for this program is to create bindings to use Delta Chat core from programming languages other than Rust, for example:

  1. Python: https://pypi.org/project/deltachat-rpc-client/
  2. Go: https://github.com/deltachat/deltachat-rpc-client-go/

Run deltachat-rpc-server --version to check the version of the server. Run deltachat-rpc-server --openrpc to get OpenRPC specification of the provided JSON-RPC API.