portrayal.dev

Contributing

Built in the open. Come and help.

Every device in the library arrived as a pull request, and the next one can be yours. You do not need to be a maintainer, know the schema by heart, or ask permission first. A switch you use every day, a fix to a port label, or a question about the format all count. Pull requests and issues are welcome from anyone.

Add a device

Model hardware you know from its datasheet and installation guide. Two Claude skills walk you through it, or you can follow the same steps by hand.

How to add a device

Request a device

Want something in the library but cannot build it yourself? Ask, by GitHub issue or by email. No GitHub account needed.

How to request one

Fix or improve the tools

The compiler, the schemas and the kit all take pull requests. Found something wrong in a drawing, or on this site? Tell us; that is a contribution too.

Report a tooling bug · Report a drawing defect

Add a device

Two skills, from a pile of PDFs to a merged device.

The repository ships two skills for Claude Code. They carry the same method a person follows, gate for gate, so an agent and a human reach the same standard. Open the repository in Claude Code and ask it to model the device; the skills load when the task matches.

  1. Claim it

    Open a device request and say you are modeling it, so two people do not build the same switch in the same week.

  2. Gather the sources: portrayal-vendor-intake

    Finds the datasheet, the hardware guide and the vendor's images, stages them outside the repository, converts the PDFs into figures, and writes down what it found and what it could not find. Vendor material never gets committed.

  3. Model it: portrayal-model-device

    Builds the device.yaml in the order the panel is manufactured (the faces, the holes, the printing, then the parts seated in the holes), with a check at each stage.

  4. Compare it, then open the pull request

    Put the render beside the reference at matched scale and say what it showed. That sentence goes in the pull request, and it is the difference between finished and merely lint-clean.

Prefer to do it by hand? Everything the skills do is written down for a person first. Start with CONTRIBUTING.md, which is sized to fit in an afternoon for a device whose parts already exist, then the modeling guide.

What you need: Python 3.12, macOS or Linux, and a browser. Claude Code is optional.

Stuck? Open an issue and ask. Questions about the format itself are welcome, and a half-finished device with a question attached is a better start than no device at all.

Request a device

Cannot build it yourself? Ask.

Tell us the vendor and model and any public sources you know of: a datasheet, an installation guide, a product page. If you have the hardware in hand, say so; photographs and measurements help a lot.

On GitHub

Open a device request. It is public, so anyone who needs the same device can add their support, anyone looking for something to model can pick it up, and you can follow along as it is built.

Open a device request

By email

No GitHub account? No problem. Send the same details to the address below and we will file the request on GitHub for you, where others can add their support.

requests@portrayal.dev

How a request gets built. We model devices with AI, and every model costs real money in inference. So when we build a request ourselves, it moves up our list in one of two ways:

  • It has support. Other people need it too. A thumbs-up on the GitHub issue counts, and the requests with the most support get built first.
  • The cost is covered. Tick "I'm open to paying to have this built" on the request, or say so in your email, and you will get a private estimate before anything is agreed. It depends on the device: a switch whose parts are already in the library is quick, and a modular chassis that needs a new catalog of line cards is not.

Without either, a request stays open at a lower priority. It is not closed, and anyone in the community can pick it up and build it in the meantime.

Support the project

Buy the project a coffee.

Portrayal is free and stays free. If it saved you an afternoon and you would like to say thanks, a tip helps cover the AI inference that goes into modeling devices, for everyone's requests. It is separate from RocNet Supply's sponsorship of the project, and it does not buy a particular device; for that, see requesting one.