Metadata-Version: 2.5
Name: marshal-ledger
Version: 0.2.0
Summary: Marshal — a vendor-neutral, open-source ledger for enterprise AI agents.
Project-URL: Homepage, https://github.com/marshal-ledger/marshal
Project-URL: Documentation, https://github.com/marshal-ledger/marshal/tree/main/docs
Project-URL: Changelog, https://github.com/marshal-ledger/marshal/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/marshal-ledger/marshal/issues
Author: Marshal contributors
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: agent-registry,agentforce,ai-agents,audit,bedrock,copilot-studio,databricks,governance
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Quality Assurance
Classifier: Topic :: System :: Systems Administration
Requires-Python: >=3.10
Requires-Dist: pydantic>=2.6
Requires-Dist: pyyaml>=6.0
Provides-Extra: azure
Requires-Dist: azure-identity>=1.13; extra == 'azure'
Provides-Extra: dev
Requires-Dist: fastapi>=0.110; extra == 'dev'
Requires-Dist: httpx>=0.27; extra == 'dev'
Requires-Dist: jsonschema>=4.21; extra == 'dev'
Requires-Dist: psycopg[binary]>=3.1; extra == 'dev'
Requires-Dist: pyjwt[crypto]>=2.8; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: uvicorn>=0.29; extra == 'dev'
Provides-Extra: postgres
Requires-Dist: psycopg[binary]>=3.1; extra == 'postgres'
Provides-Extra: server
Requires-Dist: fastapi>=0.110; extra == 'server'
Requires-Dist: pyjwt[crypto]>=2.8; extra == 'server'
Requires-Dist: uvicorn>=0.29; extra == 'server'
Description-Content-Type: text/markdown

<img src="https://raw.githubusercontent.com/marshal-ledger/marshal/main/docs/assets/marshal-logo.svg" width="72" height="72" alt="Marshal logo">

# Marshal — an agent ledger

A vendor-neutral, open-source ledger for enterprise AI agents. Any format in, any format out, with versions, diffs, portability and audit across every platform.

Marshal reads the agent definitions teams already produce: Databricks bundles, Copilot Studio agents, Bedrock templates, Agentforce metadata, agent code and the open standards. It builds a normalized, versioned record of every agent: what model it asks for, what tools and data it can reach, and who it acts as. Every field says where its value came from, and nothing is guessed.

**Status:** pre-alpha.

## What it does

- **Inventory** of every agent across platforms, with versions, deployments, and each record's completeness.
- **Risk-ranked review:** pull requests that change an agent get a comment that lists permission escalations, new write tools and model changes first.
- **Drift and freshness:** compares what is live with what was shipped, and shows how recently each record was confirmed and by which channel.
- **Dependencies:** "who uses this tool, this knowledge source, this permission?" across every platform.
- **Translation** between formats, with a fidelity report computed by reading the result back.
- **Portability scores** for moving an agent to another platform, from a community-maintained capability matrix.
- **No shared secrets:** pipelines push records authenticated by their CI provider's OIDC token. Marshal never connects to agent platforms.

## Formats

| Source | Read | Write |
|---|---|---|
| Databricks Asset Bundles (Genie spaces, agent apps) | ✓ | |
| AWS CloudFormation and CDK (Bedrock Agents, AgentCore) | ✓ | Bedrock Agents |
| Microsoft Copilot Studio (agent workspaces, solutions) | ✓ | ✓ |
| Salesforce Agentforce (Agent Script, legacy metadata) | ✓ | Agent Script |
| Google ADK Agent Config | ✓ | ✓ |
| Vertex AI Agent Engine (saved API responses) | inventory | |
| Python agent code (OpenAI Agents SDK, LangChain/LangGraph, Google ADK, CrewAI, direct model API calls) | ✓ | |
| ADL, Open Agent Spec, AGNTCY OASF | ✓ | ✓ |
| Marshal file: a hand-written definition for agents no reader covers, recorded as attested | ✓ | ✓ |

## Try it

Build a demo from 28 public agents and browse it:

```console
$ pip install 'marshal-ledger[server]'
$ marshal demo
$ marshal web --db demo.sqlite
```

`marshal demo` downloads the agents' definitions from their public GitHub repositories, pinned to a commit.

Then on your own agents. See [Getting started](https://github.com/marshal-ledger/marshal/blob/main/docs/getting-started.md):

```console
$ marshal read path/to/bundle                        # print ledger records
$ marshal collect path/to/bundle --target prod --event shipped
$ marshal ls                                         # every agent, latest version, where it is shipped
$ marshal diff finance/invoice_agent                 # proposed against shipped, ranked by risk
$ marshal status finance/invoice_agent               # shipped vs live per environment, drift, freshness
$ marshal deps "*CheckWeather" --shipped             # who depends on this, and where it is live
$ marshal convert agent.adl.yaml --to agent-spec     # translate, with a fidelity report
$ marshal port finance/invoice_agent --to all        # portability to every platform
$ marshal web                                        # browse the store
```

`collect` writes to a local SQLite store (`marshal.sqlite`, or `--db` / `$MARSHAL_DB`). In a shared deployment, pipelines run `marshal push` or the [GitHub Action](https://github.com/marshal-ledger/marshal/blob/main/docs/github-action.md) against the [ingest API](https://github.com/marshal-ledger/marshal/blob/main/docs/ingest-server.md). Optional [scheduled workflows](https://github.com/marshal-ledger/marshal/blob/main/examples/scheduled/) export agents built in a web designer, such as Copilot Studio and Agentforce, and report drift from what was shipped.

## Documentation

- [Getting started](https://github.com/marshal-ledger/marshal/blob/main/docs/getting-started.md)
- [Design](https://github.com/marshal-ledger/marshal/blob/main/docs/design.md): the problem, architecture, security and network posture, roadmap
- [Ledger model v0](https://github.com/marshal-ledger/marshal/blob/main/docs/ledger-model.md): records, provenance, version hashing, the version store, risk ranking, freshness
- [Conversion and fidelity](https://github.com/marshal-ledger/marshal/blob/main/docs/conversion.md) and [Portability](https://github.com/marshal-ledger/marshal/blob/main/docs/portability.md)
- Formats: [Databricks](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/databricks.md), [CloudFormation](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/cloudformation.md), [Copilot Studio](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/copilot-studio.md), [Agentforce](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/agentforce.md), [ADK Agent Config](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/adk-config.md), [Vertex AI Agent Engine](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/vertex-agent-engine.md), [Python agent code](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/python.md), [ADL](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/adl.md), [Agent Spec](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/agent-spec.md), [OASF](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/oasf.md), [Marshal file](https://github.com/marshal-ledger/marshal/blob/main/docs/formats/marshal-file.md)
- [Platform exportability](https://github.com/marshal-ledger/marshal/blob/main/docs/platform-exportability.md): what each closed platform exposes
- [Ingest API](https://github.com/marshal-ledger/marshal/blob/main/docs/ingest-server.md), [GitHub Action](https://github.com/marshal-ledger/marshal/blob/main/docs/github-action.md), [Jenkins and Azure DevOps](https://github.com/marshal-ledger/marshal/blob/main/docs/other-ci.md) and [Deployment](https://github.com/marshal-ledger/marshal/blob/main/docs/deployment.md)
- [Security review](https://github.com/marshal-ledger/marshal/blob/main/docs/security-review.md): what is stored, authentication, network, supply chain, retention and audit, for security reviewers

## Development

```console
$ pip install -e '.[dev]'
$ python scripts/fetch_fixtures.py     # golden fixtures: real public agent definitions, pinned by commit
$ pytest
```

See [Contributing](https://github.com/marshal-ledger/marshal/blob/main/CONTRIBUTING.md). Golden fixtures are fetched rather than committed, so each file stays under its upstream license. After changing the model, regenerate the schema with `python scripts/generate_schema.py`. Report vulnerabilities as described in [Security](https://github.com/marshal-ledger/marshal/blob/main/SECURITY.md).

## License

Marshal is licensed under the [Apache License 2.0](https://github.com/marshal-ledger/marshal/blob/main/LICENSE).
