Skip to content

Loom make targets

llms.txt lists every page for a coding agent.

Loom’s makefiles (backend/makefile, shared/makefile at v1.9.0) carry the operator tasks you run against a deployment. loomster has a verb for each one, usually a chant Op. Coming from Loom’s SAM deploy maps the deploy targets. Where Loom reads etc/environment.sh, loomster resolves the same inputs from the deployment itself: names from the naming helper, ids from stack outputs. You pass only what loomster can’t know, such as a memory id.

Anything that touches the database runs as a one-off ECS task of the live backend: same image, task role, environment and network as the service. The database stays private, and its credentials never reach your shell.

Loom targetloomsterOpGated
make migrate (migrate-db + fix-sequences)just import-sqlite <loom.db>loom-import-sqliteYes, never over MCP
make fix-sequencesjust fix-sequencesloom-fix-sequencesNo
make reset-dbjust reset-dbloom-reset-dbYes, never over MCP
make refresh-modelsBump the Loom pin (see below)none
make agentcore.credentials.listjust credentialsloom-credentialsNo
make agentcore.credentials.delete-alljust credentials-delete (owned-only)loom-credentials-deleteYes, never over MCP
make agentcore.memory.listjust memoryloom-memoryNo
make agentcore.memory.getjust memory get <memory-id>loom-memoryNo
make agentcore.memory.recordsjust memory records <memory-id> <actor-id>loom-memoryNo
make agentcore.memory.records-by-namespacejust memory records-by-namespace <memory-id> <namespace>loom-memoryNo
make agentcore.memory.extraction-jobsjust memory extraction-jobs <memory-id>loom-memoryNo
make cognito.set-passwordsLOOM_COGNITO_PASSWORD=... just set-passwords [alice,bob]loom-cognito-set-passwordsNo, never over MCP
make cognito.get-client-idjust cognito-client-idnone
make cognito.get-tokensjust cognito-tokennone
make ecs.init, make agentcore.initjust bootstraploom-bootstrapNo
make ec2 + make tunneljust tunnel-host, then just tunnel (guide)loom-tunnel-hostNo
make ci-roleNot ported (see below)

A gated Op takes a snapshot or prints its plan first, then stops at its gate with exit 3. Approve it and run the same verb again:

just reset-db # snapshot, then exit 3
chant approve loom-reset-db approve-loom-reset-db
just reset-db # wipes the schema, rolls the backend

“Never over MCP” means a coding agent connected to chant’s MCP server can’t run the Op or approve its gate. People run it with chant run and chant approve.

Importing a SQLite Loom. make migrate copies ./loom.db into LOOM_DATABASE_URL from your laptop. loomster uploads the file to the deployment’s artifact bucket, imports it from a backend task inside the VPC, runs fix_sequences.py, and deletes the upload. Like upstream, each table it copies replaces that table’s rows. Set LOOM_IMPORT_SKIP_EXISTING=1 to keep tables that already have data.

Restore doesn’t need fix-sequences. loom-restore restores an RDS snapshot or point in time, and that carries the sequences along with the data. loom-fix-sequences is for rows loaded some other way.

reset-db. Upstream’s reset_db.py asks for “yes” on stdin and prints the whole database URL, password included. The Op runs the same DROP SCHEMA public CASCADE without either: its gate is the confirmation, and it takes a snapshot first. It then rolls the backend so init_db() recreates the tables. Run npm run seed afterwards. Loom’s AWS resources (agent runtimes, credential providers) survive the reset. Remove them first, by deleting the agents in the UI and running just credentials-delete, or they’re orphaned.

credentials delete-all is owned-only. Upstream deletes every OAuth2 credential provider in the account. Loom names providers loom-<agent>-<agent id>-<kind>, with no deployment marker, so that would also delete another Loom instance’s providers. loom-credentials-delete deletes only the providers this Loom’s database records: the same set Loom removes when it deletes an agent, plus API-key providers for LiteLLM. loom-teardown runs the same delete before it removes the stacks. just credentials shows both the account-wide list and the owned list.

Memory inspection uses the AWS CLI. Upstream runs Python helpers from a backend virtualenv. loom-memory makes the same calls with aws and jq, so you don’t need a venv.

set-passwords takes a user list. Upstream hard-codes its 22 demo users. loomster creates no users unless you opt in (demoSeed on loom-cognito), so name the users with LOOM_COGNITO_USERS. Leave it unset to cover every user still in FORCE_CHANGE_PASSWORD. The password reaches the AWS CLI through a temporary file, so it never shows up in the process list.

cognito-token signs in as a throwaway admin. Upstream signs in as admin with a password from etc/environment.sh. just cognito-token creates (or recreates) an e2e-validator user in the admin groups, completes the MFA setup when the pool requires MFA (LOOM_COGNITO_MFA=ON), and prints its access token. Run just cognito-token --delete when you’re done. It works on every tier, since every tier has the user app client.

refresh-models. Loom’s model catalog (etc/models.json) is part of the image. On ECS the Settings refresh can’t write it: the file is root-owned, the backend runs as a non-root user, and every task has its own copy anyway. The list updates when you bump the Loom pin (scripts/vendor-loom.sh), which rebuilds the image with that release’s catalog. See the upgrade guide.

ci-role. shared/makefile deploys a CI role from P_CI_ROLE_TEMPLATE, but Loom doesn’t ship that template. loomster’s generated pipelines use their own OIDC role setup (CI providers).