Skip to main content

posit-cli

A friendly command-line interface for Posit products, in the spirit of gh.

$ posit connect login https://connect.example.com             # OAuth, tokens in your OS keyring
$ posit connect api v1/user -q .username                      # gh-api-style raw request
$ posit connect deploy streamlit ./my-app                     # everything rsconnect can do

This project is in early-stage development and so far only supports Posit Connect's APIs.

Installation

posit-cli isn't on PyPI yet. Install the latest version straight from GitHub with uv:

uv tool install git+https://github.com/posit-dev/posit-cli.git

If you authenticate to GitHub over SSH, use the git+ssh:// form instead (uv requires the git@ username):

uv tool install git+ssh://git@github.com/posit-dev/posit-cli.git

Either way this puts the posit executable on your PATH. To upgrade later, run uv tool upgrade posit-cli. See uv's Git authentication docs for tokens and other hosts.

Getting started

1. Log in. Point posit at your Connect server and authenticate. This runs an OAuth 2.1 flow in your browser and saves the tokens in your OS keyring, so you only do it once per server:

$ posit connect login https://connect.example.com

2. Try a request. Confirm you're connected by asking Connect who you are:

$ posit connect api v1/user -q .username

3. Deploy something. Anything rsconnect can deploy, posit can too:

$ posit connect deploy streamlit ./my-app

That's it — from here, explore posit connect --help for the full command set.

Authentication

posit connect login runs an OAuth 2.1 flow and stores tokens in your OS keyring; posit connect api and the deploy commands reuse those credentials automatically (including token refresh). You can also point at a server ad hoc with --server/CONNECT_SERVER and --api-key/CONNECT_API_KEY.

posit connect api

A gh api-style raw REST client, authenticated with your saved credentials. PATH is relative to the Connect API root (the /__api__ prefix is added for you):

$ posit connect api v1/user                          # GET, pretty-printed JSON
$ posit connect api v1/user -q .username             # filter with a jq expression
$ posit connect api "v1/content?limit=3" -q '.[].name'

-q/--jq runs the response through jq, like gh api --jq: string results print unquoted, one per line.

-i/--include prepends the HTTP status line and response headers to the output (handy for inspecting rate limits, request IDs, or the server version):

$ posit connect api v1/user -i

--paginate (GET only) follows Connect's pagination and prints all pages' results combined. It handles both of Connect's pagination styles — the cursor style (e.g. v1/audit_logs) and the page-number style (e.g. v1/users, v1/groups) — and leaves unpaginated endpoints unchanged:

$ posit connect api v1/users --paginate -q 'length'   # count every user

PATH may also be a full URL on the configured server — convenient for pasting a paging.next link straight back in. A URL for a different host is rejected.

Query parameters vs. request body

Like gh api, -f/-F fields default to a POST request body (adding any field flips the method to POST unless you pass -X). To send query parameters on a read, put them in the path or force GET:

$ posit connect api "v1/users?page_size=5"   # query params in the path
$ posit connect api v1/users -X GET -f page_size=5          # or force GET
$ posit connect api v1/content -f name=my-app              # POST body (creates content)

posit connect *

posit wraps rsconnect-python: it re-exposes the full rsconnect command set under posit connect, in addition to the api utility.

Using posit with Claude Code

This repo ships a skill (at skills/posit-cli/) that teaches coding agents to drive posit — auth, posit connect api, and deploys. Install it with the skills CLI:

npx skills add posit-dev/posit-cli

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

posit_cli-0.1.0.tar.gz (68.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

posit_cli-0.1.0-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file posit_cli-0.1.0.tar.gz.

File metadata

  • Download URL: posit_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 68.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for posit_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1244624ab0cb5d1386c05fa034cf156fde1c550f5474e1953dfd907372ede81e
MD5 7e89fb79c8cdf53172aee8b7a4329374
BLAKE2b-256 348a7f5cb60d5b18aa45081c3d183c6cc725fb303c588cd63fc9e905fd4ba551

See more details on using hashes here.

Provenance

The following attestation bundles were made for posit_cli-0.1.0.tar.gz:

Publisher: release.yaml on posit-dev/posit-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file posit_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: posit_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for posit_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a3f25938f73e5811e7bfb38e9524d72f4a2ef0f5020b4ba450074de844801586
MD5 5c97dc62c781c8cd4384520bb944e9c6
BLAKE2b-256 58c9516816e3188c73ac871415d64bc94f865f6e5af8dbbfbe0c1a997e9f1c39

See more details on using hashes here.

Provenance

The following attestation bundles were made for posit_cli-0.1.0-py3-none-any.whl:

Publisher: release.yaml on posit-dev/posit-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.1

2 files

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page