Skip to content

The Remote Provisioning Client (RPC) communicates with the Manageability Engine Interface (MEI) and Remote Provisioning Service (RPS) interfaces.

License

Notifications You must be signed in to change notification settings

device-management-toolkit/rpc-go

Remote Provisioning Client (RPC)

CodeQL Build Codecov OSSF-Scorecard Score Discord Docker Pulls

Disclaimer: Production viable releases are tagged and listed under 'Releases'. All other check-ins should be considered 'in-development' and should not be used in production

RPC is used for activation, deactivation, maintenance, and status of an AMT device The Remote Provisioning Client (RPC) is an application that assists with activation, configuration, and maintenance of for Intel® AMT devices. RPC provides source code that must be compiled into a binary to run or library for integration with other client applications.


For detailed documentation about Getting Started or other features of the Device Management Toolkit, see the docs.


Prerequisites

Build

Windows

As executable:

go build -o rpc.exe ./cmd/rpc/main.go

As Library:

go build -buildmode=c-shared -o rpc.dll ./cmd/rpc

Linux

As executable:

go build -o rpc ./cmd/rpc/main.go

As Library:

CGO_ENABLED=1 go build -buildmode=c-shared -o librpc.so ./cmd/rpc

Docker image

docker build -t rpc-go:latest .

Run

Install the executable on a target device and then run from a terminal/shell command line with adminstrator privileges.

For usage, call the executable with no additional parameters.

Configuration file

RPC can preload defaults from a YAML configuration file (default: config.yaml in the working directory or passed explicitly via --config <path>).

See config.sample.yaml for a fully documented example containing every command and flag. Typical workflow:

  1. Copy the sample: cp config.sample.yaml config.yaml (or on Windows copy config.sample.yaml config.yaml).
  2. Edit only the sections you need (e.g. set configure: sync-clock: password: or activation parameters).
  3. Run a command using the file:
rpc --config config.yaml configure sync-clock

CLI flags and environment variables always override values loaded from the file.

Sensitive values (passwords, tokens) can also be provided via environment variables (see flag env: tags in code) instead of storing in plaintext YAML.

Global AMT Password

You can now supply a single global AMT admin password once via either:

rpc --amt-password <pass> <command> ...

or environment variable:

set AMT_PASSWORD=<pass>   # Windows PowerShell
export AMT_PASSWORD=<pass> # Linux/macOS

All commands that require an AMT password will use this value automatically unless a per-command --password is explicitly provided (legacy behavior kept for backward compatibility). The sample config (config.sample.yaml) reflects this by using a top-level amt-password: key instead of repeating password: under each command section.

Windows

.\rpc

Linux

sudo ./rpc

Docker

$ docker run --rm -it --device /dev/mei0 rpc-go:latest

Dev tips for passing CI Checks

  • Ensure code is formatted correctly with gofumpt -l -w -extra ./
  • Ensure all unit tests pass with go test ./...
  • Ensure code has been linted with docker run --rm -v ${pwd}:/app -w /app golangci/golangci-lint:latest golangci-lint run -v

Additional Resources

About

The Remote Provisioning Client (RPC) communicates with the Manageability Engine Interface (MEI) and Remote Provisioning Service (RPS) interfaces.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages