Website: officer.openpit.dev
Contact: info@openpit.dev.
Pit Officer lets you manage trading accounts, set risk limits, connect to brokers, and send orders from a web panel. The OpenPit risk engine checks each order before Officer sends it through a trading connection. You can also use Officer from trading software or AI agents.
Watch the video guide or follow the steps below. The quickstart covers stopping, ports and troubleshooting.
Install Docker, then run:
docker run -d --name pit-officer --restart unless-stopped -p 127.0.0.1:8787:8787 -v pit-officer-data:/data ghcr.io/openpitkit/officer:latestOpen http://127.0.0.1:8787. latest is the newest release; your data stays
in the pit-officer-data volume. Back up before every upgrade, and regularly,
from Service > Database > Database backup > Export in the panel.
To upgrade an installed Officer, see Upgrade Officer.
edge is the current development build, for quick tests only. Its data is
disposable. Stop the release container first, then use the same volume:
docker stop pit-officer
docker run -d --name pit-officer-edge --restart unless-stopped -p 127.0.0.1:8787:8787 -v pit-officer-data:/data ghcr.io/openpitkit/officer:edgeOn its first start, the panel asks whether to copy the release data or start empty. It never changes the release database. See Trying the development build.
Prerequisites: a C toolchain, which the OpenPit Go binding requires through
cgo; Go; and Node and npm for the dashboard bundle. Tool versions are pinned in
.github/ci-versions.env; just ensure-node installs the pinned Node into
.tmp/node.
From the repository root, build the dashboard before the binary so Go embeds the compiled assets:
npm --prefix web ci
npm --prefix web run build
CGO_ENABLED=1 go build -ldflags "-X go.openpit.dev/officer/framework/backend.buildCommit=$(git rev-parse HEAD)" -o pit-officer ./cmd/pit-officerOn Windows with PowerShell, set CGO_ENABLED=1 in your shell, build with
go build -ldflags "-X go.openpit.dev/officer/framework/backend.buildCommit=$(git rev-parse HEAD)" -o pit-officer.exe ./cmd/pit-officer, and run ./pit-officer.exe.
A locally built binary behaves like edge: its first serve asks which
database to use, and it never changes the release database. Make that
choice before running mcp.
Pit Officer is a single binary with four subcommands: serve, mcp,
dashboard, healthcheck. After building it, run from the repository root:
./pit-officer serve # serve the dashboard, REST API, and HTTP MCP
./pit-officer dashboard # in another terminal, open the running instance
./pit-officer mcp # alternatively, run a local stdio MCP serverThe subcommands, environment variables, flags, and authorization model are in the configuration reference. See the API notes for REST and MCP integration.
To build and run a local container image with the settings in
docker-compose.yml:
. ./.github/ci-versions.env
docker build --build-arg GO_VERSION="$CI_GO" --build-arg OFFICER_COMMIT="$(git rev-parse HEAD)" -t pit-officer:local .
docker compose upJust provides a quicker alternative to the manual steps above. The recipes also require Python 3; the full check additionally uses golangci-lint and Semgrep, as described in the development notes.
just frontend-ci-install # npm ci in web/ from the committed lockfile
just build # build the SPA, then the pit-officer binary
just run-serve # build and serve
just dashboard # open the running instance in the browser
just run-mcp # build and run a local stdio MCP server
just docker-build # build the pit-officer:local container image
just check # format checks, linters, Semgrep, tests, frontend bundlesComposing your own Officer from the importable packages, building against a local Pit checkout, and the debug variants are covered in the development notes.
Apache License 2.0. See LICENSE.