Skip to main content

Persona-Grata

Persona-Grata is a scaffolding utility that binds AI personas to harnesses to produce an embodied, functional agent. It helps users connect professional LLM orchestration harnesses with customized endpoints.

Install

Install via pipx, uv, or your other favorite package management tool:

pipx install persona-grata

Python 3.11 or newer is required. Install the harness you intend to run separately. For keyed agents, install and initialize a supported password manager: pass, gopass, or prs. For example, on Debian/Ubuntu:

sudo apt install pass gnupg

Keyless agents do not need a password manager.

Run

persona-grata and pg are the same command. With no arguments, they list registered agents. Creation is explicit and produces one agent, not every pairing of a persona and its harnesses:

pg --setup                   # Configure a manager before creating a keyed agent
pg --create kimi claude --name scout
pg --create ollama codex --name local_code --no-token

After setup, open a new shell or source your shell's startup file, then run the chosen name:

scout [arguments]

Use pg --setup to configure the store's password manager. Credential verification is optional; for keyed agents, --verify requests a live check that may incur provider charges. Setup does not prove that a server or harness accepts the generated configuration.

Overview: Agents, Personas, & Harnesses

We combine a persona (representing the mind and experience) with a harness (the mechanism used to impact the world) to yield an agent.

An agent requires not just the ability to think, but also the ability to act. A persona is that thinking part — its endpoint, models, parameters, and context. A harness supplies its toolsets and communication mechanisms. A dialect describes the wire protocol the two sides share.

Usage

Known Endpoints & Harnesses

Bundled presets supply configuration defaults, not a guarantee that every server implements every dialect or that every pairing has been tested against a live harness.

Endpoint for Service Persona
api.moonshot.ai:443 kimi
localhost:13305 lemonade
localhost:9931 llamacpp
localhost:1234 lmstudio
localhost:8000 local_8000
localhost:8080 local_8080
localhost:11434 ollama
api.minimax.io:443 minimax
api.ai.it.ufl.edu:443 navigator
Application/Tool Harness
Claude Code claude
OpenAI Codex CLI codex

Names & Paths

An agent's name is independent of its persona, harness, and directory. Several agents may use the same persona and harness. Without --name, creation uses <persona>_<harness> as its name and places it in <agent-store>/store/<creation-name>/. --path selects a different agent directory.

The registry maps each name to its absolute directory. Renaming an agent changes its name and wrapper, not its directory; no symlinks connect names to paths. Names are 1–64 ASCII letters, digits, and _, and cannot start with a digit. default and shell reserved words cannot be agent names.

Lifecycle

pg                         # List registered agents
pg scout                   # Show its stored agent document (read-only)
pg --update scout          # Regenerate an existing agent's configuration
pg --update scout --name explorer
pg --export explorer.cfg explorer
pg --remove explorer

--create, --update, --remove, --export FILE, and --setup are separate modes. Creation accepts a persona and harness, or an agent document; existing-agent operations select one registered name. Export writes a reusable, unfinished agent document, not a token or a resolved harness settings file.

For custom endpoints or models, write an agent document rather than defining a variant with CLI flags:

orion.cfg

agent<base.agent>:
  name: "orion"
  secret: None
  persona<base.persona>:
    name: "orion"
    desc: "Orion Toolkit"
    mind:
      endpoint: "https://api.cybertron.space"
      model_list: ["alpha-3-on"]
      model_active: "alpha-3-on"
  harness<claude.harness>: {}
pg --create orion.cfg

secret: None explicitly makes this example keyless. Remove that setting to use the store's configured manager, or supply an entry as described in the Custom Agent Guide. The shipped agents-example.yaml is also a single-agent yapyon document; copy it to a .cfg or .tmpl file before using it with the CLI.

Parameters Summary

Parameter Purpose
--create Create one agent from a persona/harness pair or agent document
--update Update an existing registered agent
--remove, -r Remove an agent's registration, wrapper, and generated files
--export FILE Export an agent document without installing it
--setup Configure the store's secret backend
--backend NAME Select pass, gopass, or prs during setup
--secret-root ROOT Set the manager-entry prefix during setup
--name NAME Choose a creation name or rename an existing agent
--path DIR Select the agent directory
--store DIR Select the agent-store root
--no-token Make the agent explicitly keyless
--token FILE Read a token from a supplied file and store it through the manager
--verify Request live credential verification for keyed agents; off by default
--yes Confirm removal without prompting
--no-wrapper Skip shell-wrapper installation
--force Allow export to replace an existing output file

--path is creation-only. Credential, verification, and wrapper flags apply to creation/update; --token and --no-token are mutually exclusive. Export selects an existing agent only, and cannot overwrite its installed <agent-directory>/agent.cfg. See pg --help for mode-specific restrictions. Removal deletes the entire registered agent directory, including files you added, and its wrapper. Shared components and password-manager entries are retained.

Agent Store & Configuration

The root is selected by --store, otherwise AGENT_STORE_DIR, then $XDG_CONFIG_HOME/agents, then ~/.config/agents. <agent-store>/agent_store.cfg contains store settings and the name-to-path registry. Installed agents have <agent-directory>/agent.cfg and <agent-directory>/harness/. Composed components used by agents are stored in <agent-store>/personas/, <agent-store>/harnesses/, <agent-store>/dialects/, and <agent-store>/secrets/; the entire bundled template library is not copied into the store.

Documents use yapyon (version 0.6.0 or newer within the 0.6 series), not YAML: quote strings, use None / True / False, and write references as y"{persona.mind.endpoint}". Named slots such as persona<kimi.persona> compose presets; (persona.mind.model_list) copies a whole value without converting it to text. Runtime supplies the agent directory and secret backend; agent documents cannot set agent.path.

Saved documents preserve unfinished slots and expressions, but their comments and layout are normalized. Unsafe deferred merges are refused rather than saved with different semantics. See the Config Reference Manual for fields, store layout, and migration.

Security

Tokens are held by the store's selected password manager, not copied into plaintext token files or .secret_path pointers. Generated wrappers fetch the key at launch; arrange for the manager to work without an unattended passphrase prompt. --token FILE is an input source, not a file-token backend. An explicit keyless agent neither fetches nor stores a key. If no secret setting or backend is configured at creation, keyless operation is saved and reported; configuring a backend later does not silently give that existing agent credentials. An explicit secret mapping requires a backend.

No live harness or paid-endpoint validation is implied by the bundled presets or offline tests.

License & Contributing

Persona-Grata is released under the GNU General Public License v3.0 or later; see LICENSE.md.

Contributions generated in whole or in part with AI tools are welcome, subject to the project's AI policy.

Metadata

Release files for persona-grata 0.0.5

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

Source distribution (sdist)

Source distribution for persona-grata 0.0.5
File Size Uploaded Provenance Actions
persona_grata-0.0.5.tar.gz 100.2 kB With provenance Details for persona_grata-0.0.5.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for persona-grata 0.0.5
File Interpreter ABI Platform Actions
persona_grata-0.0.5-py3-none-any.whl Python 3 none any Details for persona_grata-0.0.5-py3-none-any.whl

Total release size: 160.5 kB

Release files / persona_grata-0.0.5.tar.gz

Download URL persona_grata-0.0.5.tar.gz
Size 100.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5a0a613ca60f581a4a680a6002ee328a0f0ea3e54aa2ce803d9150b824a12051
BLAKE2b-256 checksum
How to use checksums
0d8c61b590c4add6db79f32b7cb5fc58d3c5a787f15f84a3963191d18bb77927
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Release files / persona_grata-0.0.5-py3-none-any.whl

Download URL persona_grata-0.0.5-py3-none-any.whl
Size 60.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ca20db07eba488fb46120b4bdcc350af6ce2aaf796846ff341e0eb308cf058a0
BLAKE2b-256 checksum
How to use checksums
7b1fa2e183b5fbd5b0572232d590a5e8ae480ff60faa4556c6e404b8865ab025
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

Security for persona-grata 0.0.5

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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for persona_grata-0.0.5.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 1, 2026.

Transparency log

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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