{"id":44917702,"url":"https://github.com/txpipe/pix","last_synced_at":"2026-02-18T02:36:27.608Z","repository":{"id":39979462,"uuid":"444288459","full_name":"txpipe/pix","owner":"txpipe","description":"Cardano NFT Generator CLI","archived":false,"fork":false,"pushed_at":"2022-05-20T04:08:10.000Z","size":247,"stargazers_count":30,"open_issues_count":5,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-03-03T21:43:48.683Z","etag":null,"topics":["cardano","cli","nft","nft-generator","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/txpipe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-04T04:47:15.000Z","updated_at":"2023-01-13T21:42:15.000Z","dependencies_parsed_at":"2022-07-16T16:30:31.297Z","dependency_job_id":null,"html_url":"https://github.com/txpipe/pix","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/txpipe/pix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fpix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fpix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fpix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fpix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/txpipe","download_url":"https://codeload.github.com/txpipe/pix/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/txpipe%2Fpix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29566410,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T00:47:08.760Z","status":"online","status_checked_at":"2026-02-18T02:00:09.468Z","response_time":162,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cardano","cli","nft","nft-generator","rust"],"created_at":"2026-02-18T02:36:27.545Z","updated_at":"2026-02-18T02:36:27.595Z","avatar_url":"https://github.com/txpipe.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pix\n\nA CLI for managing NFT projects\n\n**Table of Contents**\n\n- [Features](#features)\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Simple Mode](#simple-mode)\n  - [Advanced Mode](#advanced-mode)\n- [Config](#config)\n  - [Example](#example)\n  - [Types](#types)\n\n## Features\n\n- Generate unique NFTs from attribute files\n- Layer ordering defined in the config\n- Output rarity data\n- Sets (groups of the same layers with different image files)\n- Conditional Layer Rendering (based on sets or traits within a previous layer)\n- Starting count at 1 or 0\n- Simple or Advanced rarity configurations\n- Integrates with [nft maker](https://nft-maker.io)\n  - generate metadata template\n  - upload collections\n\n## Installation\n\nFor now pix needs to be built from source.\n\n- install [rustup.rs](https://rustup.rs)\n- `git clone https://github.com/3based/pix.git`\n- `cd pix`\n- `cargo install --path .`\n\n\u003e If you decide to make code changes to customize it to your needs you'll have to re-run `cargo install --path .`\n\n## Usage\n\n```\nUSAGE:\n    pix \u003cSUBCOMMAND\u003e\n\nOPTIONS:\n    -h, --help    Print help information\n\nSUBCOMMANDS:\n    auth        Provide your NFT Maker API Key to use globally\n    clean       Clean the output directory\n    gen         Generate an NFT collection\n    help        Print this message or the help of the given subcommand(s)\n    metadata    Output metadata template that can be uploaded to nft-maker.io\n    new         Create a new project\n    upload      Upload an NFT collection to nft-maker.io\n```\n\n### Simple Mode\n\nIn simple mode, you have some base folder for your images defaulted to `images/`. Then in there you have a folder for each layer who's names match the layers provided in the `pix.json` file.\n\nThen within the layer folders you need to have your trait files organized into **rarity folders**.\n\n```\nimages/\n|__ambience/\n     |__common/\n     |    |__trait.png\n     |__uncommon/\n     |__rare/\n     |__mythical/\n     |__legendary/\n```\n\nThese have their numeric weights defaulted like so:\n\n- common: 70\n- uncommon: 50\n- rare: 20\n- mythical: 10\n- legendary: 5\n\n### Advanced Mode\n\nThis mode works much more like what people are used to in hashlips. In advanced mode, you have some base folder for your images defaulted to `images/`. Then in there you have a folder for each layer who's names match the layers provided in the `pix.json` file.\n\nUnlike simple mode, the trait files live in the layer folders and **NOT** within rarity folders. From there you must provide the rarity with a special suffix in the trait file names.\n\nThis is the pattern: `name#WEIGHT.png`\n\n```\nimages/\n|__ambience/\n     |__trait#30.png\n```\n\n\u003e how dos the pix.json tolerance margin works?\n\nThis is a number that the tool uses to decide when to stop trying to make unique combinations. The program essentially loops continuously trying to make as many combinations as specified in the `pix.json` file and stops looping when that amount is reached or when the failure tolerance is reached. Without the tolerance number the program could potentially loop infinitely.\n\n## Config\n\nThere needs to be a config file at the root of a project.\n\n### Example\n\n```json\n{\n  \"policy_id\": \"123\",\n  \"name\": \"BasedBear\",\n  \"display_name\": \"Based Bear\",\n  \"mode\": \"simple\",\n  \"start_at_one\": false,\n  \"amount\": 10000,\n  \"tolerance\": 50,\n  \"path\": \"images\",\n  \"sets\": [\n    {\n      \"name\": \"Head\",\n      \"amount\": 20\n    },\n    {\n      \"name\": \"Mohawk\",\n      \"amount\": 20\n    }\n  ],\n  \"layers\": [\n    { \"name\": \"background\" },\n    {\n      \"name\": \"eyes\",\n      \"exclude_if_sets\": [\"Mohawk\"],\n      \"exclude_if_traits\": [\n        { \"layer\": \"background\", \"traits\": [\"clouds\", \"cardano\"] }\n      ]\n    },\n    { \"name\": \"Base\" },\n    { \"name\": \"Stitch Color\" },\n    { \"name\": \"belly\", \"none\": 80 },\n    { \"name\": \"forehead\", \"none\": 60 },\n    { \"name\": \"Stuffing\" }\n  ],\n  \"extra\": {\n    \"twitter\": \"https://twitter.com/_3based\",\n    \"website\": \"https://3based.com\",\n    \"copyright\": \"2022 3Based\",\n  },\n  \"nft_maker\": {\n    \"network\": \"mainnet\",\n    \"apikey\": \"\",\n    \"nft_project_id\": 0\n  }\n}\n```\n\n### Types\n\n```\n{\n    policy_id?: string,\n    name: string,\n    display_name?: string,\n    mode: \"simple\" | \"advanced\",\n    start_at_one?: true,\n    amount: integer,\n    tolerance: integer,\n    path: string,\n    sets?: { name: string, amount: integer }[],\n    layers: {\n      name: string,\n      none?: integer,\n      exclude_if_sets?: string[],\n      exclude_if_traits?: {\n        layer: string,\n        traits: string[]\n      }[]\n    }[],\n    extra: Json,\n    nft_maker?: {\n        network: string,\n        apikey: string,\n        nft_project_id: integer\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftxpipe%2Fpix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftxpipe%2Fpix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftxpipe%2Fpix/lists"}