Skip to content

Contributing

Contributions happen in crsdk/alpha-sdk-api. The REST server, the OpenAPI specification and this documentation site all live in that one repository, so a change to an endpoint updates the implementation, the contract and the docs in the same commit.

  1. Clone the repository

    Terminal window
    git clone https://github.com/crsdk/alpha-sdk-api.git
  2. Download the Camera Remote SDK from Sony

    Accept the licence on the official Sony download page, then place it with the crsdk CLI — it extracts the SDK into the right layout for you:

    Terminal window
    crsdk install --zip /path/to/CrSDK.zip
  3. Install build prerequisites

    CMake and a C++ toolchain. JSON is vendored in api/server/third_party/jsoncpp, and OpenSSL was deliberately removed, so there are no other runtime dependencies to install.

  4. Build the server

    Terminal window
    crsdk build
  5. Run it

    Terminal window
    ./CameraWebApp

    Then confirm it is alive:

    Terminal window
    curl http://localhost:8080/api/server/status

shared/core/ holds Sony’s stock SDK sample helpers, fetched locally and not tracked here. Never edit them. The REST server’s own device logic is MIT code under api/server/src/device/, and that is where changes belong.

CI enforces this on the public repository: a job fails the build if any SDK source, SDK binary, or compiled artefact is committed.

  • No Sony SDK files, SDK binaries, build folders, camera media or local credentials are added.
  • The OpenAPI contract and the implementation agree — a new endpoint is not done until api/openapi.yaml describes it.
  • If api/openapi.yaml changed: the docs under site/src/content/docs/ were updated in the same PR, and crsdk gen:mcp was run and committed (a multi-step tool also gets a hand-written composite in mcp/src/tools/). CI’s spec-docs-sync and mcp jobs enforce this. See the alpha-sdk-sync-artifacts skill.
  • The change is backwards-compatible — no removed/renamed/retyped spec elements or tightened validation (or it carries an approved breaking-change plan).
  • Unit and static checks pass; relevant end-to-end checks from docs/TESTING.md were run, or skipped with a stated reason.
  • Hardware-dependent behaviour lists camera model, firmware, connection mode and SDK version. “Works on my camera” is not a test note.
  • Any model-specific claim is backed by the SDK documentation or the camera help guides — not inferred from one body.