$npx -y skills add TerminalSkills/skills --skill activepiecesBuild workflow automations with Activepieces. Use when a user asks to self-host a Zapier alternative, automate workflows with a visual builder, create no-code integrations, or set up open-source business automation.
| 1 | # Activepieces |
| 2 | |
| 3 | ## Overview |
| 4 | |
| 5 | Activepieces is an open-source workflow automation platform — the newest Zapier/n8n alternative. Visual builder, 200+ integrations, code steps, branching, loops, and webhooks. Self-hosted for free with unlimited flows. |
| 6 | |
| 7 | ## Instructions |
| 8 | |
| 9 | ### Step 1: Self-Host |
| 10 | |
| 11 | ```yaml |
| 12 | # docker-compose.yml — Activepieces with PostgreSQL and Redis |
| 13 | services: |
| 14 | activepieces: |
| 15 | image: activepieces/activepieces:latest |
| 16 | ports: ["8080:80"] |
| 17 | environment: |
| 18 | AP_ENGINE_EXECUTABLE_PATH: dist/packages/engine/main.js |
| 19 | AP_POSTGRES_DATABASE: activepieces |
| 20 | AP_POSTGRES_HOST: postgres |
| 21 | AP_POSTGRES_PORT: "5432" |
| 22 | AP_POSTGRES_USERNAME: activepieces |
| 23 | AP_POSTGRES_PASSWORD: activepieces |
| 24 | AP_REDIS_HOST: redis |
| 25 | AP_ENCRYPTION_KEY: your-32-char-encryption-key-here |
| 26 | AP_JWT_SECRET: your-jwt-secret-here |
| 27 | AP_FRONTEND_URL: https://auto.example.com |
| 28 | |
| 29 | postgres: |
| 30 | image: postgres:16 |
| 31 | environment: |
| 32 | POSTGRES_DB: activepieces |
| 33 | POSTGRES_USER: activepieces |
| 34 | POSTGRES_PASSWORD: activepieces |
| 35 | volumes: [pgdata:/var/lib/postgresql/data] |
| 36 | |
| 37 | redis: |
| 38 | image: redis:7-alpine |
| 39 | |
| 40 | volumes: |
| 41 | pgdata: |
| 42 | ``` |
| 43 | |
| 44 | ### Step 2: Code Step |
| 45 | |
| 46 | ```typescript |
| 47 | // Inside Activepieces Code step |
| 48 | export const code = async (inputs) => { |
| 49 | const { data } = inputs |
| 50 | return { |
| 51 | processed: data.items.map(item => ({ |
| 52 | name: item.name.toUpperCase(), |
| 53 | total: item.price * item.quantity, |
| 54 | })), |
| 55 | grandTotal: data.items.reduce((sum, i) => sum + i.price * i.quantity, 0), |
| 56 | } |
| 57 | } |
| 58 | ``` |
| 59 | |
| 60 | ### Step 3: Custom Piece (Integration) |
| 61 | |
| 62 | ```typescript |
| 63 | // pieces/my-app/src/index.ts — Build custom integration |
| 64 | import { createPiece } from '@activepieces/pieces-framework' |
| 65 | import { newOrderTrigger } from './triggers/new-order' |
| 66 | import { createInvoiceAction } from './actions/create-invoice' |
| 67 | |
| 68 | export const myApp = createPiece({ |
| 69 | displayName: 'My App', |
| 70 | auth: PieceAuth.SecretText({ displayName: 'API Key' }), |
| 71 | triggers: [newOrderTrigger], |
| 72 | actions: [createInvoiceAction], |
| 73 | }) |
| 74 | ``` |
| 75 | |
| 76 | ## Guidelines |
| 77 | |
| 78 | - Self-hosted: completely free, unlimited flows and executions. |
| 79 | - Cloud: free tier with 1,000 tasks/month. |
| 80 | - Newer than n8n — cleaner UI, growing fast, but fewer integrations. |
| 81 | - TypeScript-first code steps and custom pieces. |