pks

stable

Single-operator toolbelt for running AI coding agents across devcontainers, cloud VMs, credentials, and issue trackers — one .NET global tool.

Author: Poul Kjeldager
Usage: pks <command> [options]
Platform: linuxmacoswindows
Category: infrastructure

Examples

$ dotnet tool install -g pks-cli

Install pks as a .NET global tool

$ pks claude

Spawn a devcontainer and attach a Claude Code session

$ pks vm init

Provision a cloud VM and register it as an SSH target

$ pks agentics runner start

Run the self-hosted Agentics job runner

$ pks claude limits

Report session and week usage limits as structured data

$ pks brain refresh

Rebuild the personal brain from Claude session history

pks is a .NET 10 command-line application, built on Spectre.Console.Cli and shipped as the pks-cli package. It is the connective tissue for running AI coding agents somewhere other than your laptop.

Overview

pks is a single binary that spans the whole loop an operator runs: scaffold a project, give an agent a runtime, put that runtime on a machine, hand it credentials, feed it work items, watch what it did, and collect what it produced. The command surface is broad on purpose — 57 top-level groups — because each step of that loop otherwise needs a different vendor CLI.

  • Agent runtimes. Launch Claude Code, Codex, or a provider-neutral in-process agent, locally or inside a container on a remote host.
  • Machines. Provision Azure and Scaleway VMs, boot Firecracker microVMs, and drive devcontainers over SSH.
  • Credentials. Sign in once to Azure, Azure AI Foundry, GitHub, Azure DevOps, Jira, Google, and Scaleway, then let every other command reuse that login.
  • Work and output. Pull tickets, submit assembly-line tasks, query telemetry, and generate speech, images, and transcripts.

Install

Two routes ship the same command surface. Route A needs the .NET 10 SDK; route B needs only Node 18 or newer and carries a self-contained binary per platform. The commands are identical on Linux, macOS, and Windows.

A — .NET global tool (canonical):

dotnet tool install -g pks-cli
dotnet tool update -g pks-cli               # stable channel
dotnet tool update -g pks-cli --prerelease  # daily channel

B — npm, no .NET required:

npm install -g @pks-cli/cli

The platform binary (@pks-cli/cli-linux-x64, @pks-cli/cli-osx-arm64, @pks-cli/cli-win-x64, and the rest) resolves through optionalDependencies, so the install line does not change per operating system.

Confirm the install:

pks --version

You should see the current version printed — 6.20.1 at the time of writing. After the first install, pks update handles upgrades and detects which of the two routes you used.

How it fits together

Every command reads from one config root: $HOME/.pks-cli on Linux and macOS, C:\Users\<user>\.pks-cli on Windows. Sign-in commands such as pks azure init, pks foundry init, and pks github init write credentials there, and everything else reads them back. A second, repo-local folder, .pks/, holds per-project state such as the project identity and generated agent definitions. The two are separate and both load-bearing.

The agent-runtime commands build on the machine commands rather than duplicating them. pks vm init provisions a box and registers it as a named SSH target. pks devcontainer spawn, pks claude, and pks vibecast then address that target by name, ship the project's .devcontainer to it, and attach an interactive session inside the resulting container. Sensitive steps — remote spawn, VM power operations, outbound SSH, self-update — pass through a two-factor action guard you configure with pks actions after enrolling a factor with pks authenticator init.

  • On your machine: login state, project scaffolding, and local analytics over Claude Code session transcripts.
  • On someone else's machine: the containers, microVMs, and runners doing the work, reached over SSH.

Command families

The 57 groups fall into seven families. Each group has its own page.

Core lifecycle and CLI plumbing

Scaffolding a project and managing pks itself.

GroupWhat it does
pks initScaffold a new project from a NuGet devcontainer template and optionally spawn it.
pks execLaunch any tool that speaks the PKS_DISCOVERY contract, injecting a chosen LLM provider.
pks updateUpdate the CLI on the stable or daily channel, per detected install method.
pks reportFile a GitHub issue with version, environment, and local usage stats attached.
pks statusRender the system-status dashboard.
pks deployRender the deployment-flow demo.

AI agents, agent runtimes, and MCP

Getting a coding agent running, wiring it to a model, and connecting it to the Assembly Line Platform.

GroupWhat it does
pks claudeSpawn Claude Code in a devcontainer or inline, point it at non-Anthropic backends, and analyse local usage.
pks agentRun a one-shot, provider-neutral coding-agent loop, or register the session with Agent Share.
pks agenticsLog in to agentics.dk, run the self-hosted job runner, and submit assembly-line tasks.
pks codexRun the upstream Codex CLI against an Azure AI Foundry deployment with no request translation.
pks opencodeRun OpenCode on a configured model provider — one command, no proxy, no config file. GLM 5.2 on Scaleway by default, Kimi K3 on Moonshot via --model kimi-k3.
pks mcpServe the CLI's own capabilities to a Model Context Protocol client over stdio or HTTP.
pks hooksRegister pks as the handler for Claude Code lifecycle hooks, including a lint gate on stop.
pks brainBuild a personal knowledge base from your Claude Code session history.
pks marketplaceRegister and curate Claude Code plugin marketplaces.
pks shareLog this host into an Agent Share server over OIDC.
pks vibecastSpawn a remote devcontainer and drop into a vibecast session inside it.
pks prdScaffold, validate, and template product requirements documents.

Machines, microVMs, and remote development environments

Where the agents actually run.

GroupWhat it does
pks devcontainerAuthor, validate, spawn, connect to, and destroy devcontainers, locally or over SSH.
pks vmProvision, start, stop, inspect, and destroy the Azure and Scaleway VMs that host containers.
pks scheduleConfigure a VM's daily start, daily shutdown, and idle-shutdown watchdog.
pks firecrackerBootstrap and run a Firecracker microVM job runner for isolated execution.
pks sshManage named SSH targets and a pks-held encrypted key store behind the action guard.
pks rsyncRegister rsync backup targets such as a NAS or a remote host.
pks tailscaleStore a Tailscale auth key and join preferences for VM enrollment.
pks scalewayAuthenticate against Scaleway with a static API key pair.

Cloud identity, secrets, and signing

The credential backbone the rest of the tool draws on.

GroupWhat it does
pks azureSign in to Azure, pick a subscription, and review Cost Management spend and credit balance.
pks foundryAuthenticate to Azure AI Foundry, select deployments, mint tokens, and run the local token proxy.
pks googleRegister and validate a Google AI Studio API key for image generation.
pks moonshotRegister and validate a Moonshot API key for running Kimi K3 through pks opencode.
pks ms-graphAuthenticate to Microsoft Graph through the device-code flow for mailbox access.
pks authenticatorEnrol and inspect the local time-based one-time password second factor.
pks actionsChoose which sensitive actions demand that second factor.
pks certCreate, inspect, export, and remove pks-held code-signing certificates.
pks signSign a Windows artifact unattended, on a workstation or inside a CI job container.

Source control, work tracking, and delivery targets

Where work comes from and where it ships.

GroupWhat it does
pks githubAuthenticate to GitHub and run the devcontainer-backed self-hosted Actions runner.
pks adoAuthenticate to Azure DevOps and run the git credential proxy for containers.
pks jiraBrowse Jira issue trees and export selected tickets to markdown and JSON.
pks confluenceSync Confluence pages to local markdown in a git-tracked workspace and push edits back.
pks gitAnswer Git's askpass prompts with a fresh Azure DevOps token.
pks registryStore container-registry credentials for the job containers a runner spawns.
pks coolifyRegister Coolify instances so the runner can match repos to applications and inject deploy variables.
pks toolsGenerate the tool-registry pages that publish commands to agentics.dk.

Storage, data, and observability

Moving bytes and reading back what happened.

GroupWhat it does
pks storageList, browse, and sync files against authenticated share providers, with a consent gate on writes.
pks fileshareAuthenticate a file-share provider and report its connection state.
pks appinsightsChoose the Application Insights resource that telemetry queries run against.
pks otelQuery exceptions, requests, logs, and dependency spans from that resource.
pks emailExport Microsoft Graph mail to a dated tree of markdown files with attachments.

Content, media, and writing

Producing artifacts once the work is done.

GroupWhat it does
pks writingDanish-first terminology lint, rubric scoring, and a portable writer profile.
pks personaScore content against reader-archetype personas on rubric-driven metrics.
pks voicePush-to-talk dictation backed by Azure AI Foundry Speech.
pks transcribeTranscribe an audio or video file with a cloud or an on-device engine.
pks ttsGenerate speech from text or SSML, optionally rendering an audio-reactive video.
pks imageGenerate or edit an image through a Google AI or Azure AI Foundry model.
pks promptwallRender a prompt from your Claude Code session history as a shareable card.
pks modelDownload, update, and remove the on-device models the voice commands use.

Defaults

SettingValue
Config root (Linux, macOS)$HOME/.pks-cli
Config root (Windows)C:\Users\<user>\.pks-cli
Global settings and most tokens~/.pks-cli/settings.json
Per-project state<repo>/.pks/
Console log levelWarning
Update channelprompted on the first pks update, then stored

Note. Access and refresh tokens for GitHub, Azure, Azure DevOps, Foundry, Microsoft Graph, Scaleway, Tailscale, Google, and Jira are written to settings.json as plaintext. Only the SSH-key, certificate, and Agent Share stores are encrypted at rest.

No environment variable moves the config root. Individual features read their own variables — AGENTICS_SERVER, ANTHROPIC_BASE_URL, OTEL_EXPORTER_OTLP_ENDPOINT, PKS_DEBUG, and others — each documented on the configuration page.

Next steps

Subcommands

pks actions

stable

Choose which sensitive pks operations demand a TOTP code before they run, from an interactive checkbox list backed by a local policy file.

pks actions

pks ado

beta

Authenticate pks against Azure DevOps with OAuth2 and PKCE, then run a local git-proxy so devcontainers push and pull without holding a token.

pks ado <command> [options]

Agent

stable

Run a one-shot LLM coding agent from the pks CLI, or enroll the current session as a shareable agent that people and other agents can send work to.

pks agent <prompt> [options]

3 subcommands

pks agentics

stable

Log in to agentics.dk, turn a machine into a self-hosted Assembly Line runner, and file tasks onto an assembly line from a CI/CD pipeline.

pks agentics <command> [options]

4 subcommands

pks appinsights

stable

Point pks otel at an Azure Application Insights resource by signing in with Azure AD, picking a resource, and verifying the connection is live.

pks appinsights <command> [options]

pks aspire

beta

Start a .NET Aspire AppHost with its declared parameters already resolved from what you are signed in to, instead of pasting endpoints and keys into prompts.

pks aspire <run|init> [options] [-- <apphost args>]

pks authenticator

stable

Enroll and check the local TOTP second factor that gates sensitive pks actions, with full command reference and troubleshooting.

pks authenticator <command>

pks azure

stable

Sign in to Azure with a browser-based OAuth2 PKCE flow, pick a subscription, and view Cost Management spend and sponsorship credit balance.

pks azure <command> [options]

pks brain

stable

Turn your own Claude Code session history into a searchable personal knowledge base — ingest, extract, synthesize, and render a wiki plus ADRs.

pks brain <command> [options]

14 subcommands

pks cert reference

beta

Command reference for pks cert — create, list, inspect, export, and remove the pks-held code-signing certificates that pks sign uses to sign Windows artifacts.

pks cert <command> [options]

pks claude

stable

Launch Claude Code in a devcontainer, inline, or against Foundry and Scaleway models, and analyse your local session transcripts for cost, pace, and quota.

pks claude <command> [options]

9 subcommands

pks CLI reference

stable

Every command in the pks CLI in one index — 57 groups spanning agents, machines, cloud identity, delivery, storage, observability, and media.

pks <command> [options]

pks codex

stable

Run the real OpenAI Codex CLI against an Azure AI Foundry deployment through a local token-refreshing passthrough, with no request translation.

pks codex [subcommand] [options]

7 subcommands

The pks mental model

stable

How pks is organized: seven command families, the operator-console mental model, where state and credentials live, and the conventions every group repeats.

pks configuration and state reference

stable

Where pks keeps config, state, and credentials on each OS, the complete environment-variable table, per-provider login flows, global options, and logging.

pks <command> [options]

Confluence page sync

beta

Two-way sync between Confluence pages and local markdown, tracked in a private git workspace, with checkout, commit, and staged delete.

pks confluence <command> [options]

Consent

stable

Out-of-band approval for scoped, irreversible actions — a caller files a request, a human approves it elsewhere, and the resulting grant is bound to an exact target list.

pks consent <command> [options]

pks coolify

stable

Register Coolify instances so the self-hosted runner can auto-match a repo and branch to a deployable application and inject deploy credentials into CI jobs.

pks coolify <command> [url]

pks deploy

stable

Reference for pks deploy, a cosmetic Spectre.Console demo of a deployment flow with no build, registry push, or cluster call behind it.

pks deploy [options]

pks devcontainer

stable

Author, validate, spawn, and tear down VS Code devcontainers — locally or over SSH — from one command group in the pks CLI.

pks devcontainer <command> [options]

7 subcommands

pks email

beta

Export an Outlook or Exchange mailbox via Microsoft Graph into a date-organized tree of Markdown files with frontmatter and saved attachments.

pks email export [options]

pks entra

beta

Create or adopt an Entra ID app registration, keep its client secret in the encrypted store, and bind it into a run without anybody pasting a guid.

pks entra app <init|list|forget> [options]

pks exec

beta

Run a companion tool through pks-cli's discovery contract, wiring in Azure AI Foundry, Gemini, or OpenAI-compatible provider credentials automatically.

pks exec [options] <EXECUTABLE> [ARGS...]

pks fileshare

beta

Authenticate a machine against Azure Files via OAuth PKCE and check connection status, the setup half of the pair with pks storage.

pks fileshare <command>

pks firecracker

beta

Bootstrap a Linux host, smoke-test a boot, and run a daemon that executes ALP assembly-line jobs inside isolated Firecracker microVMs.

pks firecracker <command> [options]

pks foundry

stable

Sign in to Azure AI Foundry once, pick a resource and model deployments, then hand short-lived tokens to every pks command that needs them.

pks foundry <command> [options]

7 subcommands

pks git

stable

The pks git askpass helper answers Git's GIT_ASKPASS credential prompts for Azure DevOps remotes using pks's stored ADO OAuth token.

pks git askpass [prompt] [options]

pks github

stable

Authenticate pks with GitHub and run a self-hosted Actions runner that builds a fresh devcontainer for every queued workflow job.

pks github <command> [options]

4 subcommands

pks google

stable

Register and inspect the Google AI Studio API key that `pks image` and `pks promptwall` use for Gemini-based image generation.

pks google <command> [options]

pks hooks

beta

Wire pks into Claude Code's hook system: register handlers for seven lifecycle events and block a turn from ending when your lint command fails.

pks hooks <command> [options]

4 subcommands

pks image

stable

Generate or edit an image from a text prompt via Google AI Studio (Gemini/Imagen) or Azure AI Foundry (gpt-image/dall-e), auto-resolved from the model name.

pks image [prompt] [options]

pks init

stable

Scaffold a new agentic devcontainer project from a NuGet template, then optionally spawn the resulting devcontainer locally or on a remote SSH target.

pks init [PROJECT_NAME] [options]

Install pks

stable

Install the pks CLI as a .NET global tool or an npm-wrapped self-contained binary on Linux, macOS, or Windows, then verify, pin, update, and remove it.

dotnet tool install -g pks-cli

pks jira

stable

Authenticate pks against Jira Cloud or Server/Data Center, browse a project's issue tree interactively, and export selected issues to local markdown and JSON.

pks jira <command> [options]

pks marketplace

stable

Register Claude Code plugin marketplaces from a URL or GitHub repo, curate which plugins are enabled, and feed the result into a managed-settings.json.

pks marketplace <command> [options]

6 subcommands

pks mcp

beta

Run pks-cli as a stdio or HTTP Model Context Protocol server so an AI client can call its deploy, agent, swarm, and reporting tools directly.

pks mcp [options]

pks model

stable

Downloads, installs, and manages the local on-device AI models that pks voice and pks transcribe use for offline speech-to-text work.

pks model list | pks model <name> {init|status|update|remove}

pks moonshot

stable

Register a Moonshot API key so pks opencode can launch OpenCode on Kimi K3 — validated before it is stored, reused process-locally.

pks moonshot <command> [options]

pks ms-graph

stable

Authenticate pks-cli against Microsoft Graph via OAuth2 device code flow and store the tokens that `pks email export` uses to read your mailbox.

pks ms-graph <command> [options]

pks opencode

stable

Run OpenCode on a configured model provider — one command, no proxy, no config file. GLM 5.2 on Scaleway by default, Kimi K3 on Moonshot one --model away.

pks opencode [ARGS] [--model <id>] [--provider <id>]

pks otel

stable

Query exceptions, requests, structured logs, and dependency spans from Azure Application Insights in your terminal, without opening the Azure Portal.

pks otel <command> [options]

4 subcommands

pks persona

stable

Define reader personas, validate the persona library, and score markdown content against rubric-driven metrics with pks persona — the full command reference.

pks persona <command> [options]

pks prd

beta

Scaffold, inspect, and validate Product Requirements Documents from the command line — six subcommands that write and check docs/PRD.md.

pks prd <command> [options]

7 subcommands

pks promptwall

stable

Turn a prompt from a local Claude Code session transcript into a branded 1200x1200 social-media image via the Google AI Gemini image model.

pks promptwall [options]

Quickstart: install pks and run your first commands

stable

Install the pks CLI, verify it runs, then get three real results locally — Claude Code cost analysis, a searchable session brain, and a writing lint pass.

dotnet tool install -g pks-cli && pks claude usage

pks registry

stable

Store container-registry credentials on a self-hosted runner host so CI job containers can authenticate to a private registry without secrets in workflow YAML.

pks registry <command> [hostname]

4 subcommands

pks report

stable

Package a bug report, feature request, or question into a GitHub issue with CLI version, environment, and telemetry details pre-filled automatically.

pks report [MESSAGE] [options]

pks rsync

stable

Register rsync backup targets — a NAS, a home server, or any remote host reachable over SSH — as prerequisite setup for pks claude backup.

pks rsync <command>

pks scaleway

stable

Store a Scaleway API key pair so pks vm can provision, start, and stop Scaleway GPU instances under a default project and zone.

pks scaleway <command> [options]

pks schedule

beta

Interactive wizard that sets daily auto-start, daily auto-shutdown, and idle-shutdown timing on a tracked Azure VM in a single confirmed batch.

pks schedule

pks share

stable

Log a machine into an Agent Share server via OIDC PKCE loopback login, the one-time prerequisite before pks agent register can mint an agent inbox.

pks share <command>

pks sign

beta

Sign a Windows artifact (MSIX, EXE, DLL, or MSI) with a pks-held code-signing certificate, unattended, from a developer machine or a CI job container.

pks sign <input> [options]

pks ssh

stable

Register remote hosts as named SSH targets, hold their private keys encrypted, and route every outbound connection through the pks action guard.

pks ssh <command> [options]

6 subcommands

pks status

stable

Render a mocked system-status dashboard with Spectre.Console — a demo of the CLI's grid and live-panel rendering, not a real infrastructure check.

pks status [options]

Storage

stable

Browse and sync file-share storage from any authenticated pks provider, with uploads gated behind an interactive confirmation.

pks storage <command> [options]

pks tailscale reference

stable

Store a Tailscale auth key and join preferences that `pks vm tailscale` reads to join a provisioned VM to your tailnet over SSH.

pks tailscale init

pks tools reference

stable

Reference for pks tools publish, which reflects over ToolRegistryExport-tagged pks commands and regenerates their agentics.dk/tools Markdown docs.

pks tools publish

pks transcribe

beta

Transcribe an audio or video file to text with heypoul and Azure AI Foundry Speech, or with a local on-device model, in one non-interactive pass.

pks transcribe <file> [options]

pks tts

beta

Generate an MP3 from text or SSML via Azure AI Foundry / Azure Speech, with an optional audio-reactive MP4 rendered through ffmpeg.

pks tts [text] [options]

pks update

stable

Check nuget.org for a newer pks-cli release, show a current-to-latest diff, and apply it using whichever mechanism matches how this pks binary was installed.

pks update [--self]

pks vibecast

stable

Spawn or reattach to a devcontainer on a remote SSH target and drop into an interactive vibecast broadcast session inside it, including Vibegame matches.

pks vibecast [PROJECT_PATH] [options]

pks vm

stable

Provision, connect to, monitor, schedule, and destroy Azure or Scaleway VMs used as remote devcontainer and GPU hosts, with SSH keys and 2FA handled.

pks vm <command> [options]

7 subcommands

pks voice

beta

Push-to-talk voice dictation for pks: hold a key to speak, release to inject the transcript, powered by the heypoul binary and Azure AI Foundry Speech.

pks voice <command> [options]

pks writing

stable

Danish-first writing linter, agent-driven rubric scoring, sentence-level naturalness rewrites, and a portable writer profile that moves between machines.

pks writing <command> [options]

6 subcommands