Set up Makeships Inventory
Install Inventory in your own cloud, add your warehouses, items and opening stock, then connect it to your store and to Procurement so sales, deliveries and reorders flow on their own.
- Time
- About 20 minutes to install, plus time to load items and count stock
- Local ports
- App 4200 · Postgres 5434
- Who does what
- A developer installs; your team does the first-run setup in the app.
Before you start
Node.js 20.9+
22 LTS recommended, with npm
Postgres 16
Docker Compose starts one locally; use a managed Postgres in production
A domain on HTTPS
e.g. inventory.example.com
Optional
An AI Gateway key for the AI agents (not needed on Vercel)
For your developer
Install
- 1
Get the code and create the settings file
Copy the example settings and fill them in (table below). Generate NEXTAUTH_SECRET with openssl rand -base64 32.
cd humlens/apps/humlens-inventory cp .env.example .env - 2
Start the database and create the tables
Docker Compose starts Postgres on port 5434.
docker compose up -d npm install npx prisma migrate deploy - 3
Run it
Inventory opens at http://localhost:4200. npm run seed loads a demo team; skip it in production.
npm run dev - 4
Deploy to production
The self-host stack builds the image, runs migrations in a one-off container, then starts the app with Postgres. On a plain Node host, npm run build and npm start do the same.
cp .env.selfhost.example .env docker compose -f docker-compose.selfhost.yml up -d --build
For your developer
Settings
These go in the .env file, or your host's secret manager in production.
| Setting | Needed | What it is |
|---|---|---|
| DATABASE_URL | Required | Postgres connection string |
| NEXTAUTH_URL, APP_URL, NEXT_PUBLIC_APP_URL | Required | Inventory's public address |
| NEXTAUTH_SECRET | Required | Random string for sign-in sessions |
| CONNECTIONS_SECRET | Recommended | Encrypts the Procurement key saved in Settings › Integrations. Falls back to NEXTAUTH_SECRET. |
| HUMLENS_SSO_SECRET | When connected | The same 32+ character random value in every connected app, so people move between apps without signing in again. |
| NEXT_PUBLIC_HUMLENS_INVENTORY_URL, …_PROCUREMENT_URL, …_COMMERCE_URL | When connected | Each app's public address. Apps with an address appear as links in the menu. |
| DISABLE_SCHEDULER | Serverless only | Turns off the built-in background jobs; run npm run agent-scheduler from a cron instead. |
| AI_GATEWAY_API_KEY | Optional | Enables the AI agents |
| AGENT_MAX_AUTO_REORDER_AMOUNT | Recommended | Hard ceiling on what an AI agent may reorder on its own |
For your team
First-run setup
Done in the app's own screens, in this order. No code involved.
- 01
Create your account and team
Sign up
The person who creates the team is its Owner.
- 02
Add warehouses
Warehouses
Create at least one and mark one as the default.
- 03
Add items
Items
Use the same SKUs as your store. Set cost price, reorder point, reorder quantity and a preferred supplier with its lead time.
- 04
Record opening stock
Stock levels › Record movement
Record what you actually hold, per item and warehouse.
- 05
Invite your team
Settings › Members & invitations
Warehouse managers run receiving, transfers and counts; staff record day-to-day movement; auditors can only read.
- 06
Set the AI agent policy
Settings › AI agent policy
Decide what the agents may do on their own and what waits for a person.
Commerce · Inventory · Procurement
Connect the apps
Inventory sits between the store and Procurement. Keys act as the person who created them, so create them as an Owner or Admin who'll stay.
- 1
Give the store a key
Settings › API keys
Create a key named "Store" and paste it into the store under Connect › Integrations › Operations.
- 2
Give Procurement a key
Settings › API keys
Create a key named "Procurement" and paste it into Procurement under Settings › Integrations.
- 3
Connect to Procurement
Settings › Integrations
Paste Procurement's address and a key created there, then Test and connect. Keep Send low-stock reorders to Procurement on.
Setting up all three? Do them in this order: Commerce, Inventory, then Procurement, and connect them last.
Check it works
- You can sign in and see your warehouses and items.
- Stock levels shows on hand, reserved and available for each item.
- Settings › Integrations shows Procurement connected and Store notifications: Working.
- Recording a few units updates the store's stock within seconds.
- AI Agent Activity › Run reorder & dead-stock check raises one request in Procurement for items at their reorder point.
Troubleshooting
A red banner says updates couldn't be delivered
Open Settings › Integrations, fix the cause shown (often a revoked key), then press Retry now.
Keys under Integrations show "unreadable"
CONNECTIONS_SECRET or NEXTAUTH_SECRET changed. Enter the keys again.
No reorder suggestions appear
Items need about two weeks of sales history. Set a preferred supplier so its lead time is used.
Store notifications never shows as Working
Press Sync now in the store; its Inventory key must belong to an Owner or Admin.
Going live
- Fresh random NEXTAUTH_SECRET and CONNECTIONS_SECRET, never committed.
- npm run build runs on every deploy (it applies migrations).
- On serverless hosting, DISABLE_SCHEDULER=1 and a cron running npm run agent-scheduler.
- Daily database backups, with a restore tested once.
- No demo data (npm run seed) in production.
Rather have us set it up?
Our team can install Inventory in your AWS, GCP or Azure account and configure it with you.
Other setup guides