HTTP Server
Start the server
There are two ways to start the server:
CLI
Use the cocoindex server command. See more options in the CLI.
- Default bind address: 127.0.0.1:49344 (only exposed locally for safety)
- Override if you need to expose to all IPs (example:
0.0.0.0:49344)
# Start on the default local address (127.0.0.1:49344)
cocoindex server path/to/app.py
# Expose to all interfaces and allow CocoInsight
cocoindex server path/to/app.py -a 0.0.0.0:49344 -ci
# Add a custom CORS origin or allow a local frontend port
cocoindex server path/to/app.py \
-c https://example.com \
-cl 3000
Flags of interest:
-a,--address <IP:PORT>: Bind address (defaults to 127.0.0.1:49344)-ci,--cors-cocoindex: Allowhttps://cocoindex.io(CocoInsight) to access the server-c,--cors-origin <ORIGINS>: Comma-separated list of allowed origins-cl,--cors-local <PORT>: Allowhttp://localhost:<PORT>-L,--live-update: Enable live updates while the server is running
Python API
You can also start the server programmatically via the API.
from cocoindex import start_server, settings
server_settings = settings.ServerSettings(
# Default: "127.0.0.1:49344" — local only for safety
address="127.0.0.1:49344",
# Allow CocoInsight front-end
cors_origins=["https://cocoindex.io"],
)
start_server(server_settings)
To expose to all IPs:
server_settings = settings.ServerSettings(
address="0.0.0.0:49344",
)
start_server(server_settings)
What the server provides today
-
CocoInsight access: Enable with CLI
-ci, or by API setServerSettings.cors_originsto"https://cocoindex.io". Then openhttps://cocoindex.io/cocoinsightand point it to your server address. It'll talk to CocoIndex internal REST APIs exposed through/cocoindex/api. The internal API is mainly designed for CocoInsight to use today, is subject to change and not considered as stable. -
Live updates from the CLI: When running with
-L, the server performs live updates while it’s up. It's doing same thing ascocoindex update -Lwhile the HTTP server is running. -
Health check:
GET /healthzresponds withapplication/json:status: always"ok"when healthyversion: the build-time package version (e.g.,"0.3.5")
Example response:
{"status":"ok","version":"0.3.5"}