kalup

Introduction

Kalup keeps a HubSpot portal's configuration in TypeScript files, and gives your app its types from the same files

Kalup keeps a HubSpot portal's configuration (objects, property groups, properties and custom object schemas) in TypeScript files in your repository. The same files give your app its types, so a renamed property or a removed option fails at compile time instead of in production.

Start here

You areRead
New to KalupGetting started, then How Kalup works
An admin looking after one portal, alone or with an agentOne admin, one portal, then Working with AI agents
A developer with a sandbox, production and CISandbox, production and CI, Config files, Types and codecs
An agency setting up many client portalsAgencies and blueprints
An AI agentWorking with AI agents, JSON output, Exit codes, Errors

What this version does

Version 0.1.0 reads and writes properties and property groups on standard and custom objects. Custom object schemas are read and compared, not written. Pipelines, custom object schema writes and association labels are next. The pull, plan, apply and drift workflow passed live runs on a HubSpot developer test account; other account types are not verified yet, so start on a test account or sandbox. Every command but apply only reads a portal.

CommandWhat it does
kalup initCreate kalup.config.ts and pin the first target, offline
kalup pullRead a target and write hubspot/objects/*.ts
kalup validateCheck the config files and report every issue, offline
kalup irPrint the IR document derived from the config files
kalup fmtRewrite the config files in canonical form
kalup statusShow each target: key, portal check, account, scopes
kalup compareCompare config, a target or a snapshot with another
kalup planShow what apply would change on a target
kalup snapshotSave one read of a target, with what it covered
kalup docsWrite a Markdown data dictionary of the config or a snapshot
kalup applyApply a reviewed plan to its target
kalup rmTake a property or group out of config and write its tombstone
kalup state rebuildReport what a portal holds against its state, and with --write replace the state file
kalup target rebindPoint a target at a recreated test portal or sandbox
kalup addWrite a blueprint into the config files
kalup blueprint upgradeMerge a new version of a blueprint and keep the client's changes

apply needs one approval: a person at a terminal, --yes for a small safe change on an unprotected target, or --approve from a reviewed CI job. Every delete needs the person. An edit made in the HubSpot UI is held, not reverted: see Drift.

Every command takes --json and prints one envelope/1 document, with fixed exit codes.

The docs

Docs as Markdown

Every page is also served as plain Markdown, for agents and scripts:

URLReturns
/docs/<page>.md, for example /docs/commands/pull.mdOne page as Markdown
/docs/<page> with the header Accept: text/markdownThe same Markdown
/llms.txtAn index of every page with its title and URL
/llms-full.txtEvery page in one file

Packages

PackageWhat it is
kalupThe CLI, binary kalup. A dev tool: install it with npm install -D kalup
@kalup/coreWhat your config files and app import: builders, codecs, InferProperties, defineConfig and defineRemoved. No dependencies, no network, no file system. Your app imports it at run time: install it with npm install @kalup/core

Kalup is an independent open-source project maintained by Scopious. It is not affiliated with, endorsed by, or sponsored by HubSpot, Inc. HubSpot is a registered trademark of HubSpot, Inc.

On this page