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 (e.g., Claude Code and the Codex CLI) with customized endpoints.

Install

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

pipx install persona-grata

Run

Run it directly:

persona-grata <persona> [harness]*

Examples

To install a persona for the official kimi servers and use it with Claude Code:

persona-grata kimi claude

If you have custom endpoints or other settings, create and run with an agent file:

persona-grata custom_agents.yaml

Read more about configurations in the Custom Agents Guide.


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.

...but what does that actually mean?

An agent is an entity that can act on the world around it - it has a model of its universe, an inference-based (data-derived) decision-making process, a set of actions, and some knowledge of the results of its actions (see also The Craik Model of Intelligence.) An agent requires not just the ability to think, but also the ability to act.

A persona is that thinking part of an agent - i.e., its 'mind' (endpoint, model, & parameters) and 'experiences' (system prompt, context, etc.)

To interact with the world, we can use a harness (sometimes called an orchestrator) to provide toolsets and communication mechanisms; these include Claude Code, Codex CLI, Goose, & many others.

By combining a persona with a harness, we get the fully embodied agent.


Usage

The utility reads agent definitions from a provided YAML file (which describes how personas connect to harnesses) and configures your local environment. The sample agents-example.yaml file can serve as a starting point; the claude and codex profiles are 'ready' to go and do not require modification.

Known Endpoints & Harnesses

Persona-Grata comes with "out of the box" support for the following endpoints and harnesses; for each endpoint, a default persona is derived:

Endpoint Personas: kimi, minimax, navigator

Coding Harnesses: claude, codex

Setup an Agent

To setup an agent from a persona and harness, run persona-grata <persona> [harness]*:

persona-grata kimi

Sets up kimi for all known harnesses

persona-grata minimax claude codex

Sets up minimax for use with Claude Code and Codex CLI

If you need a more customized solution, an agent definition file provides additional flexibility:

agents.yaml

personas:
  orion:
    persona_desc: "Orion Toolkit"
    mind:
      endpoint: "https://api.cybertron.space"
      model: "alpha-3-on"

Then, run:

persona-grata agents.yaml orion claude

Setup the custom persona (Orion Toolkit) with Claude Code.

Or, to install all agents and harnesses, run without persona and/or harness names:

persona-grata agents.yaml

Setup every persona in the file with all known harnesses.

Interaction

The script automatically adds a shell wrapper to your .bashrc or .zshrc. After running setup and sourcing your config (source ~/.bashrc) or opening a new terminal, you can launch the agent:

<persona>-<harness> [arguments]

Agent Configuration & Templates

Definitions are managed in an agent YAML file. It describes one or more personas and/or harnesses. Persona-Grata supports a dynamic variable resolution system via {{variable}} syntax.

  • Context Lookup: Resolves variables defined in current context (e.g., {{pid}}, {{path}}).
  • Hierarchical References: Absolute references to any value in agents.yaml via dot-notation (e.g., {{personas.orion.mind.model}}).
  • Reserved Identifiers: {{__PARENT__}} resolves to the immediate parent node in the configuration tree and {{__KEY__}} to a node's own key, so {{__PARENT__.__KEY__}} in a persona definition yields that persona's ID.
  • Serializers: a reference may end in __AS_JSON__() or __AS_TOML__() to render a whole subtree as a harness config file (e.g., content: "{{config_store.__AS_JSON__()}}").

Environment variables ($FOO, ${FOO}) are also substituted, in a single pass, before the file is parsed.

For more about templates & configuration, see the Config Reference Manual.

Security

To prevent secret leakage:

  • API tokens are stored in files with 0600 permissions.
  • The utility handles tokens by path, avoiding printing secrets to logs or transcripts.
  • A .secret_path file is created in the persona's home directory containing the path to the token for discovery by other tools.

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.

Download files

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

Source Distribution

persona_grata-0.0.1.tar.gz (42.9 kB view details)

Uploaded Source

Built Distribution

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

persona_grata-0.0.1-py3-none-any.whl (32.6 kB view details)

Uploaded Python 3

File details

Details for the file persona_grata-0.0.1.tar.gz.

File metadata

  • Download URL: persona_grata-0.0.1.tar.gz
  • Upload date:
  • Size: 42.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for persona_grata-0.0.1.tar.gz
Algorithm Hash digest
SHA256 b915de73b843fd9c1baa2e17b77a174308ff9d8d4cd205cb91349daf75d7f986
MD5 b48d4ac274b4d9ff0f38d746b587e27e
BLAKE2b-256 7f2be745fc2793c234dfc9dc4eca53b35082ac0e0b035d46b7563657a0ee1792

See more details on using hashes here.

File details

Details for the file persona_grata-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: persona_grata-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 32.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for persona_grata-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 73962e076e24451e5a0942c094a82a1d291f207c1db693713905877f3d8828a3
MD5 ccc36cc6086eccc229076fb9abf84ba1
BLAKE2b-256 dff1fd0bef9c205470777c0302962c2cfa4c95c13e619ecabea613b88592d000

See more details on using hashes here.

Supported by

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