https://github.com/itential/ipctl
💻 Itential Platform CLI
https://github.com/itential/ipctl
cli go itential oss terminal
Last synced: 3 months ago
JSON representation
💻 Itential Platform CLI
- Host: GitHub
- URL: https://github.com/itential/ipctl
- Owner: itential
- License: gpl-3.0
- Created: 2025-02-04T22:16:15.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-03-20T14:19:05.000Z (4 months ago)
- Last Synced: 2026-03-21T06:39:00.150Z (4 months ago)
- Topics: cli, go, itential, oss, terminal
- Language: Go
- Homepage:
- Size: 6.64 MB
- Stars: 0
- Watchers: 4
- Forks: 2
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Notice: NOTICE
- Agents: AGENTS.md
- Cla: CLA.md
Awesome Lists containing this project
README
# 💻 ipctl
A CLI for managing Itential Platform servers — get, create, import, export, and copy 35+ resource types from the command line.

## Quick Start
### Install
Download the latest release for your platform from the [releases page](https://github.com/itential/ipctl/releases):
```bash
# Linux x64
curl -LO https://github.com/itential/ipctl/releases/latest/download/ipctl-linux-x86_64.tar.gz
tar -xzf ipctl-linux-x86_64.tar.gz
sudo mv ipctl /usr/local/bin/
```
Build from source
```bash
git clone https://github.com/itential/ipctl.git && cd ipctl
make build
./bin/ipctl --version
```
### Configure
Create `~/.platform.d/config.toml` with a server profile:
```toml
["profile default"]
host = "platform.example.com"
port = 443
use_tls = true
username = "admin"
password = "your-password"
```
### Use

## Features
| Feature | Description |
|---------|-------------|
| **Resource CRUD** | Get, create, update, and delete 35+ resource types |
| **Import / Export** | Move assets via local directories or Git repositories with SSH auth |
| **Multi-Instance** | Named profiles for managing multiple Platform servers |
| **Authentication** | OAuth2 client credentials or basic auth with TLS |
| **Output Formats** | Human-readable tables, JSON, YAML, or custom Go templates |
| **Cross-Environment** | Copy automations, workflows, and assets between servers |
## Configuration
`ipctl` loads configuration from `~/.platform.d/config` by default. Supports INI, YAML, TOML, and JSON formats (auto-detected by file extension).
### Profile Options
| Option | Description | Default |
|--------|-------------|---------|
| `host` | Platform server hostname | `localhost` |
| `port` | Server port (0 = auto from `use_tls`) | `0` |
| `use_tls` | Enable TLS connection | `true` |
| `verify` | Verify TLS certificates | `true` |
| `username` | Basic auth username | - |
| `password` | Basic auth password | - |
| `client_id` | OAuth2 client ID | - |
| `client_secret` | OAuth2 client secret | - |
| `timeout` | Request timeout in seconds (0 = disabled) | `0` |
Authentication requires either `username`/`password` or `client_id`/`client_secret`.
### Environment Variables
Override any profile value with `IPCTL_PROFILE__`:
```bash
export IPCTL_PROFILE_PROD_PASSWORD=secret
ipctl get projects --profile prod
```
### Precedence
CLI flags > environment variables > config file > defaults
See the [Configuration Reference](docs/configuration-reference.md) for complete details including multi-format examples.
## Supported Resources
| Category | Resources |
|----------|-----------|
| **Automation Studio** | projects, workflows, automations, templates, transformations, jsonforms |
| **Admin** | accounts, groups, roles, adapters, integrations, prebuilts, tags |
| **Configuration Manager** | devices, device-groups, configuration-parsers, gctrees |
| **Lifecycle Manager** | models |
See the [Command Quick Reference](docs/commands-quick-reference.md) for the full matrix of supported operations per resource.
## Usage Examples
Working with projects
```bash
ipctl get projects
ipctl describe project "My Project"
ipctl create project "New Project" --description "Project description"
ipctl delete project "Old Project"
ipctl export project "My Project" \
--repository git@github.com:org/repo.git \
--branch main
```
Working with automations
```bash
ipctl get automations
ipctl describe automation "Deploy Config" --output json
ipctl import automation \
--repository https://github.com/org/automations.git \
--reference v1.0.0
ipctl copy automation "Deploy Config" --from dev --to staging
```
Working with adapters
```bash
ipctl get adapters
ipctl describe adapter "ServiceNow"
ipctl start adapter "ServiceNow"
ipctl stop adapter "ServiceNow"
ipctl restart adapter "ServiceNow"
```
Output formats

## Documentation
- [Configuration Reference](docs/configuration-reference.md) — profile options, formats, environment variables
- [Command Quick Reference](docs/commands-quick-reference.md) — operations matrix per resource
- [API Command Reference](docs/api-command-reference.md) — detailed API command docs
- [Working with Repositories](docs/working-with-repositories.md) — Git-based import/export
- [Logging Reference](docs/logging-reference.md) — log levels, JSON output, sensitive data redaction
- [Running from Source](docs/running-from-source.md) — development setup
## Contributing
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, branch conventions, and the pull request process.
All contributors must sign the [Contributor License Agreement](CLA.md) before contributions can be merged.
## License
This project is licensed under the [GNU General Public License v3.0](LICENSE).
## Support
- [GitHub Issues](https://github.com/itential/ipctl/issues)
- [Itential Documentation](https://docs.itential.com)