{"id":20747125,"url":"https://github.com/stalwartlabs/cli","last_synced_at":"2026-04-27T09:04:31.396Z","repository":{"id":352264192,"uuid":"1207656981","full_name":"stalwartlabs/cli","owner":"stalwartlabs","description":"Stalwart Command Line Interface","archived":false,"fork":false,"pushed_at":"2026-04-25T06:00:55.000Z","size":131,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-25T08:02:25.622Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stalwartlabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSES/AGPL-3.0-only.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"open_collective":"stalwart","github":"stalwartlabs","ko_fi":null,"patreon":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2026-04-11T08:10:37.000Z","updated_at":"2026-04-25T06:00:41.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/stalwartlabs/cli","commit_stats":null,"previous_names":["stalwartlabs/cli"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/stalwartlabs/cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stalwartlabs%2Fcli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stalwartlabs%2Fcli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stalwartlabs%2Fcli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stalwartlabs%2Fcli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stalwartlabs","download_url":"https://codeload.github.com/stalwartlabs/cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stalwartlabs%2Fcli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32329485,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"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":["cli","mail","server"],"created_at":"2024-11-17T08:11:34.253Z","updated_at":"2026-04-27T09:04:31.364Z","avatar_url":"https://github.com/stalwartlabs.png","language":"Rust","funding_links":["https://opencollective.com/stalwart","https://github.com/sponsors/stalwartlabs"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://stalw.art\"\u003e\n    \u003cimg src=\"./img/logo-red.svg\" height=\"150\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003e\n  Stalwart CLI\n\u003c/h3\u003e\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/stalwartlabs/cli/actions/workflows/release.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/stalwartlabs/cli/release.yml?style=flat-square\" alt=\"continuous integration\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://www.gnu.org/licenses/agpl-3.0\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-AGPL_v3-blue.svg?label=license\u0026style=flat-square\" alt=\"License: AGPL v3\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://stalw.art/docs/install/get-started\"\u003e\u003cimg src=\"https://img.shields.io/badge/read_the-docs-red?style=flat-square\" alt=\"Documentation\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://mastodon.social/@stalwartlabs\"\u003e\u003cimg src=\"https://img.shields.io/mastodon/follow/109929667531941122?style=flat-square\u0026logo=mastodon\u0026color=%236364ff\u0026label=Follow%20on%20Mastodon\" alt=\"Mastodon\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://twitter.com/stalwartlabs\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/stalwartlabs?style=flat-square\u0026logo=x\u0026label=Follow%20on%20Twitter\" alt=\"Twitter\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://discord.com/servers/stalwart-923615863037390889\"\u003e\u003cimg src=\"https://img.shields.io/discord/923615863037390889?label=Join%20Discord\u0026logo=discord\u0026style=flat-square\" alt=\"Discord\"\u003e\u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://www.reddit.com/r/stalwartlabs/\"\u003e\u003cimg src=\"https://img.shields.io/reddit/subreddit-subscribers/stalwartlabs?label=Join%20%2Fr%2Fstalwartlabs\u0026logo=reddit\u0026style=flat-square\" alt=\"Reddit\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\nA schema-driven command line tool for administering [Stalwart Mail and Collaboration Server](https://stalw.art) over its JMAP API.\n\nThe tool fetches the server's schema on first use and derives every command, validation rule, and rendered view from it. The same binary works against any compatible Stalwart deployment without recompilation.\n\n## Overview\n\n| | |\n|---|---|\n| `describe` | Inspect objects, fields, enums, filters, and sort options exposed by the server. |\n| `get` / `query` | Fetch a single object or list / filter many. |\n| `create` / `update` / `delete` | Single-object mutations. |\n| `apply` | Apply a JSON plan of bulk creates, updates, and destroys (intended for Ansible, Terraform, NixOS, Pulumi, and CI/CD pipelines). |\n| `snapshot` | Export live server state as an `apply`-ready JSON plan. Useful for backups, cross-environment promotion, and round-trip disaster-recovery rehearsals. |\n\nOutput is human-friendly by default (sectioned, with color when stdout is a TTY) and switches to compact JSON or NDJSON for machine consumption.\n\n## Install\n\n```sh\n# macOS / Linux\ncurl --proto '=https' --tlsv1.2 -LsSf \\\n  https://github.com/stalwartlabs/cli/releases/latest/download/stalwart-cli-installer.sh | sh\n\n# Homebrew\nbrew install stalwartlabs/tap/stalwart-cli\n\n# Windows\npowershell -ExecutionPolicy Bypass -c \"irm https://github.com/stalwartlabs/cli/releases/latest/download/stalwart-cli-installer.ps1 | iex\"\n\n# npm\nnpm install -g @stalwartlabs/cli\n\n# From source\ncargo install --path .\n```\n\nA signed `.msi` is also published with each release.\n\n## Quick start\n\n```sh\nexport STALWART_URL=https://mail.example.com\nexport STALWART_USER=admin\nexport STALWART_PASSWORD='changeme'\n\nstalwart-cli describe                       # list every available object\nstalwart-cli describe domain                # full schema for one object\nstalwart-cli query domain                   # default columns\nstalwart-cli get domain \u003cid\u003e                # full object\nstalwart-cli create domain --field name=example.com --field isEnabled=true\nstalwart-cli update domain \u003cid\u003e --field description='Primary'\nstalwart-cli delete domain --ids \u003cid\u003e\nstalwart-cli apply --file plan.json         # bulk apply\nstalwart-cli snapshot Tenant Domain \\        # export state as an apply plan\n    --output backup.json\n```\n\n## Documentation\n\nFull documentation, including the bulk-apply file format, JSON Schema, and integration guides for Ansible / Terraform / NixOS / Pulumi / CI:\n\n**[stalw.art/docs/management/cli](https://stalw.art/docs/management/cli/overview)**\n\n## License\n\nThis project is dual-licensed under the **GNU Affero General Public License v3.0** (AGPL-3.0; as published by the Free Software Foundation) and the **Stalwart Enterprise License v1 (SELv1)**:\n\n- The [GNU Affero General Public License v3.0](./LICENSES/AGPL-3.0-only.txt) is a free software license that ensures your freedom to use, modify, and distribute the software, with the condition that any modified versions of the software must also be distributed under the same license. \n- The [Stalwart Enterprise License v1 (SELv1)](./LICENSES/LicenseRef-SEL.txt) is a proprietary license designed for commercial use. It offers additional features and greater flexibility for businesses that do not wish to comply with the AGPL-3.0 license requirements. \n\nEach file in this project contains a license notice at the top, indicating the applicable license(s). The license notice follows the [REUSE guidelines](https://reuse.software/) to ensure clarity and consistency. The full text of each license is available in the [LICENSES](./LICENSES/) directory.\n\n## Copyright\n\nCopyright (C) 2020, Stalwart Labs LLC\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstalwartlabs%2Fcli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstalwartlabs%2Fcli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstalwartlabs%2Fcli/lists"}