- name
- base44-cli
- description
- The base44 CLI is used for EVERYTHING related to base44 projects: resource configuration (entities, backend functions, ai agents), initialization and actions (resource creation, deployment). This skill is the place for learning about how to configure resources. When you plan or implement a feature, you must learn this skill
- metadata
- {"sourcePackage":{"name":"base44","version":"0.0.50"}}
# Base44 CLI
Create and manage Base44 apps (projects) using the Base44 CLI tool.
## ⚡ IMMEDIATE ACTION REQUIRED - Read This First
This skill activates on ANY mention of "base44" or when a `base44/` folder exists. **DO NOT read documentation files or search the web before acting.**
**Your first action MUST be:**
1. Check if `base44/config.jsonc` exists in the current directory
2. If **NO** (new project scenario):
- This skill (base44-cli) handles the request
- Guide user through project initialization
- Do NOT activate base44-sdk yet
3. If **YES** (existing project scenario):
- Transfer to base44-sdk skill for implementation
- This skill only handles CLI commands (login, deploy, entities push)
## Critical: Local Installation Only
NEVER call `base44` directly. The CLI is installed locally as a dev dependency and must be accessed via a package manager:
- `npx base44 <command>` (npm - recommended)
- `yarn base44 <command>` (yarn)
- `pnpm base44 <command>` (pnpm)
WRONG: `base44 login`
RIGHT: `npx base44 login`
## MANDATORY: Authentication Check at Session Start
**CRITICAL**: At the very start of every AI session when this skill is activated, you MUST:
1. **Check authentication status** by running:
```bash
npx base44 whoami
```
2. **If the user is logged in** (command succeeds and shows an email):
- Continue with the requested task
3. **If the user is NOT logged in** (command fails or shows an error):
- **STOP immediately**
- **DO NOT proceed** with any CLI operations
- **Ask the user to login manually** by running:
```bash
npx base44 login
```
- Wait for the user to confirm they have logged in before continuing
**This check is mandatory and must happen before executing any other Base44 CLI commands.**
## Overview
The Base44 CLI provides command-line tools for authentication, creating projects, managing entities, and deploying Base44 applications. It is framework-agnostic and works with popular frontend frameworks like Vite, Next.js, and Create React App, Svelte, Vue, and more.
## When to Use This Skill vs base44-sdk
**Use base44-cli when:**
- Creating a **NEW** Base44 project from scratch
- Initializing a project in an empty directory
- Directory is missing `base44/config.jsonc`
- User mentions: "create a new project", "initialize project", "setup a project", "start a new Base44 app"
- Deploying, pushing entities, or authenticating via CLI
- Working with CLI commands (`npx base44 ...`)
**Use base44-sdk when:**
- Building features in an **EXISTING** Base44 project
- `base44/config.jsonc` already exists
- Writing JavaScript/TypeScript code using Base44 SDK
- Implementing functionality, components, or features
- User mentions: "implement", "build a feature", "add functionality", "write code"
**Skill Dependencies:**
- `base44-cli` is a **prerequisite** for `base44-sdk` in new projects
- If user wants to "create an app" and no Base44 project exists, use `base44-cli` first
- `base44-sdk` assumes a Base44 project is already initialized
**State Check Logic:**
Before selecting a skill, check:
- IF (user mentions "create/build app" OR "make a project"):
- IF (directory is empty OR no `base44/config.jsonc` exists):
→ Use **base44-cli** (project initialization needed)
- ELSE:
→ Use **base44-sdk** (project exists, build features)
## Project Structure
A Base44 project combines a standard frontend project with a `base44/` configuration folder:
```
my-app/
├── base44/ # Base44 configuration (created by CLI)
│ ├── config.jsonc # Project settings, site config
│ ├── .types/ # Auto-generated TypeScript types (created by `types generate`)
│ │ └── types.d.ts # Module augmentation for @base44/sdk
│ ├── entities/ # Entity schema definitions
│ │ ├── task.jsonc
│ │ └── board.jsonc
│ ├── functions/ # Backend functions (optional); automations live in function.jsonc
│ │ └── my-function/
│ │ ├── function.jsonc
│ │ └── index.ts
│ ├── agents/ # Agent configurations (optional)
│ │ └── support_agent.jsonc
│ └── connectors/ # OAuth connector configurations (optional)
│ └── googlecalendar.jsonc
├── src/ # Frontend source code
│ ├── api/
│ │ └── base44Client.js # Base44 SDK client
│ ├── pages/
│ ├── components/
│ └── main.jsx
├── index.html # SPA entry point
├── package.json
└── vite.config.js # Or your framework's config
```
**Key files:**
- `base44/config.jsonc` - Project name, description, site build settings
- `base44/entities/*.jsonc` - Data model schemas (see Entity Schema section)
- `base44/functions/*/function.jsonc` - Function config and optional `automations` (CRON, simple triggers, entity hooks)
- `base44/agents/*.jsonc` - Agent configurations (optional)
- `base44/.types/types.d.ts` - Auto-generated TypeScript types for entities, functions, and agents (created by `npx base44 types generate`)
- `base44/connectors/*.jsonc` - OAuth connector configurations (optional)
- `src/api/base44Client.js` - Pre-configured SDK client for frontend use
**config.jsonc example:**
```jsonc
{
"name": "My App", // Required: project name
"description": "App description", // Optional: project description
"entitiesDir": "./entities", // Optional: default "entities"
"functionsDir": "./functions", // Optional: default "functions"
"agentsDir": "./agents", // Optional: default "agents"
"connectorsDir": "./connectors", // Optional: default "connectors"
"site": { // Optional: site deployment config
"installCommand": "npm install", // Optional: install dependencies
"buildCommand": "npm run build", // Optional: build command
"serveCommand": "npm run dev", // Optional: local dev server
"outputDirectory": "./dist" // Optional: build output directory
}
}
```
**Config properties:**
| Property | Description | Default |
|----------|-------------|---------|
| `name` | Project name (required) | - |
| `description` | Project description | - |
| `entitiesDir` | Directory for entity schemas | `"entities"` |
| `functionsDir` | Directory for backend functions | `"functions"` |
| `agentsDir` | Directory for agent configs | `"agents"` |
| `connectorsDir` | Directory for connector configs | `"connectors"` |
| `site.installCommand` | Command to install dependencies | - |
| `site.buildCommand` | Command to build the project | - |
| `site.serveCommand` | Command to run dev server | - |
| `site.outputDirectory` | Build output directory for deployment | - |
## Installation
Install the Base44 CLI as a dev dependency in your project:
```bash
npm install --save-dev base44
```
**Important:** Never assume or hardcode the `base44` package version. Always install without a version specifier to get the latest version.
Then run commands using `npx`:
```bash
npx base44 <command>
```
**Note:** All commands in this documentation use `npx base44`. You can also use `yarn base44`, or `pnpm base44` if preferred.
## Available Commands
### Authentication
| Command | Description | Reference |
| --------------- | ----------------------------------------------- | ------------------------------------------- |
| `base44 login` | Authenticate with Base44 using device code flow | [auth-login.md](references/auth-login.md) |
| `base44 logout` | Logout from current device | [auth-logout.md](references/auth-logout.md) |
| `base44 whoami` | Display current authenticated user | [auth-whoami.md](references/auth-whoami.md) |
### Project Management
| Command | Description | Reference |
|---------|-------------|-----------|
| `base44 create` | Create a new Base44 project from a template | [create.md](references/create.md) ⚠️ **MUST READ** |
| `base44 link` | Link an existing local project to Base44 | [link.md](references/link.md) |
| `base44 eject` | Download the code for an existing Base44 project | [eject.md](references/eject.md) |
| `base44 dashboard open` | Open the app dashboard in your browser | [dashboard.md](references/dashboard.md) |
### Deployment
| Command | Description | Reference |
|---------|-------------|-----------|
| `base44 deploy` | Deploy all resources (entities, functions, agents, connectors, auth config, and site) | [deploy.md](references/deploy.md) |
### Entity Management
| Action / Command | Description | Reference |
| ---------------------- | ------------------------------------------- | --------------------------------------------------- |
| Create Entities | Define entities in `base44/entities` folder | [entities-create.md](references/entities-create.md) |
| `base44 entities push` | Push local entities to Base44 | [entities-push.md](references/entities-push.md) |
| RLS Patterns | Row-level security examples and operators | [rls-examples.md](references/rls-examples.md) ⚠️ **READ FOR RLS** |
#### Entity Schema (Quick Reference)
ALWAYS follow this exact structure when creating entity files:
**File naming:** `base44/entities/{kebab-case-name}.jsonc` (e.g., `team-member.jsonc` for `TeamMember`)
**Schema template:**
```jsonc
{
"name": "EntityName",
"type": "object",
"properties": {
"field_name": {
"type": "string",
"description": "Field description"
}
},
"required": ["field_name"]
}
```
**Field types:** `string`, `number`, `integer`, `boolean`, `array`, `object`, `binary`
**String formats:** `date`, `date-time`, `time`, `email`, `uri`, `hostname`, `ipv4`, `ipv6`, `uuid`, `file`, `regex`, `richtext`
**For enums:** Add `"enum": ["value1", "value2"]` and optionally `"default": "value1"`
**Entity names:** Must be alphanumeric only (pattern: `/^[a-zA-Z0-9]+$/`)
For complete documentation, see [entities-create.md](references/entities-create.md).
### Function Management
| Action / Command | Description | Reference |
| ------------------------- | --------------------------------------------- | ------------------------------------------------------- |
| Create Functions | Define functions in `base44/functions` folder | [functions-create.md](references/functions-create.md) |
| Configure Automations | CRON, simple triggers, entity hooks in `function.jsonc` | [automations.md](references/automations.md) |
| `base44 functions deploy [names...] [--force]` | Deploy local functions (and automations) to Base44; optionally target specific functions or prune removed ones | [functions-deploy.md](references/functions-deploy.md) |
| `base44 functions delete <names...>` | Delete one or more deployed functions from Base44 | [functions-delete.md](references/functions-delete.md) |
| `base44 functions list` | List all deployed functions on Base44 remote | [functions-list.md](references/functions-list.md) |
| `base44 functions pull [name]` | Pull deployed functions from Base44 to local files | [functions-pull.md](references/functions-pull.md) |
### Agent Management
GitHubで見る