Gateway Management
Start, stop, and monitor the Aleph Gateway server from the command line
The aleph-server binary manages the Aleph Gateway lifecycle. This page covers all commands related to starting, stopping, monitoring, and querying the server.
Starting the Gateway
Foreground Mode
aleph-server
# or explicitly:
aleph-server startThe server starts listening on the configured bind address and port (default 127.0.0.1:18790). Logs are printed to stdout.
Custom Bind Address and Port
aleph-server --bind 0.0.0.0 --port 9000| Flag | Default | Description |
|---|---|---|
--bind <ADDR> | 127.0.0.1 | Network interface to bind to. Use 0.0.0.0 for all interfaces. |
--port <PORT> | 18790 | WebSocket listen port |
--force | false | Start even if the port appears to be in use |
--max-connections <N> | 1000 | Maximum number of concurrent WebSocket connections |
With Configuration File
aleph-server -c ~/.aleph/config.tomlThe configuration file is TOML format and can specify agent, gateway, and control plane settings:
[agent.main]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
[gateway]
bind = "127.0.0.1"
port = 18790
[control_plane]
port = 18790With WebChat UI
If you have a WebChat frontend built as static files, serve it alongside the Gateway:
aleph-server --webchat-dir ./webchat/dist --webchat-port 8080| Flag | Description |
|---|---|
--webchat-dir <PATH> | Directory containing static HTML/JS/CSS files |
--webchat-port <PORT> | HTTP port for the WebChat server (defaults to same as --port) |
Daemon Mode
Run the Gateway as a background process using the --daemon (-d) flag. This is useful for long-running deployments.
Starting a Daemon
aleph-server -d --log-file ~/.aleph/gateway.log$ aleph-server -d --log-file ~/.aleph/gateway.log
# (process forks into background, parent exits immediately)| Flag | Default | Description |
|---|---|---|
--daemon / -d | false | Fork into background |
--pid-file <PATH> | ~/.aleph/gateway.pid | Location of the PID file |
--log-file <PATH> | — | Redirect stdout/stderr to this file. If omitted, output goes to /dev/null. |
The daemon writes its PID to the PID file. All subsequent stop and status commands use this file to locate the process.
Stopping a Daemon
aleph-server stopExpected output:
Sending SIGTERM to gateway process (PID 54321)
Gateway stopped successfullyThe stop command sends SIGTERM and waits up to 5 seconds for a graceful shutdown. If the process does not exit, it escalates to SIGKILL.
Checking Status
aleph-server statusPossible outputs:
Gateway is running (PID 54321)Gateway is not running (stale PID file for PID 54321)Gateway is not running (no PID file)For machine-readable output:
aleph-server status --json{
"running": true,
"pid": 54321
}Health Check
From the client CLI, verify that the Gateway is reachable:
aleph healthServer Status: ok
Timestamp: 2026-02-25T10:30:00ZThis sends a health JSON-RPC call over WebSocket. If the server is unreachable, you will see a connection error:
Error: Connection error: Connection refused (os error 61)To check a remote server:
aleph -s ws://192.168.1.50:18790 healthServer Information
Get detailed information about a running Gateway:
aleph info=== Aleph Gateway Server ===
Version: 0.1.0
Status: ok
Uptime: 2h 15m 30s
Available Providers:
✓ anthropic
✗ openaiThe info command queries both the health and providers.list RPC methods.
Gateway RPC Tool
The aleph-server gateway call command lets you invoke arbitrary JSON-RPC methods on a running Gateway. This is useful for debugging and scripting.
aleph-server gateway call <METHOD> [OPTIONS]| Flag | Short | Default | Description |
|---|---|---|---|
--params <JSON> | -p | — | JSON parameters to pass with the RPC call |
--url <URL> | — | ws://127.0.0.1:18790 | Gateway WebSocket URL |
--timeout <MS> | — | 30000 | Request timeout in milliseconds |
Examples
# Health check via raw RPC
aleph-server gateway call health
# Get full config as JSON
aleph-server gateway call config.get
# Call a method with parameters
aleph-server gateway call config.get -p '{"path": "general.language"}'
# Call with custom timeout
aleph-server gateway call agent.run \
-p '{"input": "Hello"}' \
--timeout 60000System Service Integration
macOS (launchd)
Create ~/Library/LaunchAgents/com.aleph.server.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.aleph.server</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/aleph-server</string>
<string>--daemon</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>launchctl load ~/Library/LaunchAgents/com.aleph.server.plist
launchctl start com.aleph.serverLinux (systemd)
Create /etc/systemd/system/aleph-server.service:
[Unit]
Description=Aleph AI Server
After=network.target
[Service]
Type=simple
User=aleph
ExecStart=/usr/local/bin/aleph-server
Restart=on-failure
Environment="ANTHROPIC_API_KEY=your-api-key"
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now aleph-server
sudo systemctl status aleph-serverTroubleshooting
Port Already in Use
# Find the process using the port
lsof -i :18790
# Kill it, then retry
kill <PID>
aleph-server startOr use --force to attempt binding anyway, and --port to choose a different port:
aleph-server --port 18790Stale PID File
If aleph-server status reports a stale PID file, the previous process exited without cleanup. Run stop to clear it:
aleph-server stop
# "Gateway is not running (stale PID file)"
# PID file is automatically removedConnection Refused from Client
Ensure the server is running and the URL matches:
# Check server status
aleph-server status
# Verify the port
aleph -s ws://127.0.0.1:18790 healthIf the server is binding to 127.0.0.1 and you are connecting from another machine, restart with --bind 0.0.0.0.
26.7.x Addendum
wizard.* RPC (no aleph wizard CLI subcommand)
The setup wizard is exposed as wizard.* JSON-RPC methods on the gateway (wizard.start / wizard.next / wizard.answer / wizard.cancel / wizard.status); the Panel invokes it from the post-install handshake window. Neither aleph nor aleph-server exposes a wizard CLI subcommand — the full 11-stage flow is Panel-driven.
aleph-server service Subcommand
26.7.1+: install / start / enable auto-start / uninstall system service (launchd / systemd-user / Task Scheduler).
aleph chat Enhancements
- Send message with
session_modefield chat.abortabort a runchat.history/chat.clear/chat.context_estimate/chat.rewind
aleph config Enhancements
New config sections: [gateway.tls] / trusted_proxy / session_mode / exec_tier / [sandbox.command_policy] / [tools] defer_mcp_tools / enable_tool_search / [[hook]] / [[mcp.servers]] / [[plugin.marketplace]] / [projects] / [runtimes] / [voice].
aleph channels Enhancements
aleph channels start telegram / discord / imessage. channels.set_agent now must specify an existing agent.
aleph-server prompt-size
R9 prompt-scaffolding size check — src/thinker/prompt_contract.rs scaffold_bytes_ratchet measured.
Full RPC ~265
26.7.x the gateway exposes ~265 RPC methods — see Gateway Methods Reference.
See Also
- Setup Wizard (
wizard.*RPC, Panel-driven) — full 11 stages - CLI Commands Reference — full command
- Configuration — full
config.tomlfield