Skip to main content

city-cli

Ship agents into Milano Agentic City — harness on, GCP off your laptop.

Install once, then scaffold an agent, run it locally, and publish it through the City Deploy API (ADR-010). Human output is colored for a terminal; --json stays machine-plain.

Requirements

  • Python 3.12+
  • For live deploy: Deploy API URL (see below)

Install

pipx install city-cli
# or
uv tool install city-cli
# or
pip install city-cli

This provides the city command. It depends on city-sdk for the Market facade and harness types.

Live city (remote Deploy API)

CITY_PLATFORM_URL defaults to https://deploy.projectnandaitaly.ai. CITY_DEPLOY_URL is an alias. No export is required for the live city.

city login                    # opens a link; sign in to City Hall, the terminal finishes → ~/.config/city/teams/<roster>/
city init agent demo          # creates ./demo/ with the template (no secrets inside)
cd demo
# edit card.yaml role if needed (cup|facility|mmg|b2b)
city card validate
city deploy --promote
city status agent:t07/demo

Team session + controller key live under $XDG_CONFIG_HOME/city/teams/<team>/ (or $CITY_HOME/teams/<team>/). Set CITY_CREDENTIALS=project only when you need a project-local .city/ override (CI).

Per-command override:

city --api-url https://deploy.projectnandaitaly.ai status agent:t07/demo

JSON for scripting:

city --json status agent:t07/demo

Local kit (in-process Deploy)

Use --api-url local (or CITY_PLATFORM_URL=local / CITY_DEPLOY_URL=local) for an in-process Deploy service (init, dev, offline checks).

city --api-url local init agent demo
cd demo
city --api-url local dev
city --api-url local conform --profile fast

Commands (overview)

Command Purpose
city login Like gcloud auth login: the CLI listens on 127.0.0.1, opens a City Hall link, and the browser redirects back once you are signed in — no code to confirm (ADR-029, PKCE). The roster team comes from the browser. --no-browser prints a code to approve on another device. Optional --team only asserts a private expectation (mismatch never names the other team). --api-url local requires --team and self-approves.
city keys init Escape hatch: regenerate controller key + register public key
city init agent <name> Create <name>/ from a starter template (--template cup|facility|mmg|b2b); agent type is card.yaml role
city card validate Validate card.yaml against the MHM card schema (base roles only)
city dev One local need through the harness
city conform Conformance suite (--profile full|fast, or --url)
city deploy Upload + pipeline; rejects non-base role before build (--promote, --runtime)
city promote / rollback / status / retire Lifecycle
city secrets set / city scale / city llm key rotate Ops
city compliance / city verify Receipts and offline verify

License

Proprietary — Project NANDA Italy / Milano Agentic City event kit.

Metadata

Release files for city-cli 0.9.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for city-cli 0.9.14
File Size Uploaded Provenance
city_cli-0.9.14.tar.gz 62.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for city-cli 0.9.14
File Interpreter ABI Platform
city_cli-0.9.14-py3-none-any.whl Python 3 none any Details

Total release size: 147.4 kB

Release files / city_cli-0.9.14.tar.gz

Download URL city_cli-0.9.14.tar.gz
Size 62.2 kB
Tags Source
SHA-256 checksum
How to use checksums
af7a9316e4c7ce9f1ef519e04dc37f28448f5e9a3eaf8f15b374456217e3424c
BLAKE2b-256 checksum
How to use checksums
c5f7290091a29fd93385fcf1f1d6f8cbc2d7356dc0d3f9d5c816844da30588c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / city_cli-0.9.14-py3-none-any.whl

Download URL city_cli-0.9.14-py3-none-any.whl
Size 85.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
610ae37fc6c02e8ed3f8f51aa40b3f1c9fdaf0f577a2ff87b5eecd64eee0ce4a
BLAKE2b-256 checksum
How to use checksums
a11d0b8ea1872ef6605db435206d636942a825af428cad225bdab9216af6932d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for city-cli 0.9.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page