EMO by Agentic-dev
צוות של סוכני AI משלך, במחשב שלך, על מנוי Claude שלך: צ'אט, משימות, אישורים, משרד חי, תהליכים, מוח שני, תוצרים, תצוגות, ריצות וטוקנים, פעילות ויומן, הגדרות. חבילות נוספות (מדליקים במרכז): שיווק (סרטונים, לוח פרסומים, תגובות אוטומטיות) ולקוחות.
התקנה (למשתמש)
הדף המלא, עם לשונית לכל מחשב: https://<המרכז>/install.html (hub/public/install.html). צריך Node 20 ומעלה ומנוי Claude (Max). ואז שורה אחת שמתקינה ומפעילה:
| מחשב | השורה |
|---|---|
| Windows (PowerShell) | $env:Path = [Environment]::GetEnvironmentVariable('Path','Machine') + ';' + [Environment]::GetEnvironmentVariable('Path','User'); npm.cmd install -g @agentic-dev.ai/emo; & (Join-Path (npm.cmd prefix -g) 'emo.cmd') |
| Mac (Terminal, Node מהאתר) | sudo npm install -g @agentic-dev.ai/emo && emo |
| Linux (Node דרך nvm) | npm install -g @agentic-dev.ai/emo && emo |
ב-Windows השורה טוענת מחדש את ה-PATH (חלון שנפתח לפני Node) ומריצה את npm.cmd, כך שלא צריך לשנות את ה-ExecutionPolicy. emo מתקינה Claude Code אם חסר (ב-Mac וב-Linux, כשאין הרשאה לתיקייה הגלובלית של npm: המתקין של Claude לתיקיית הבית), מכניסה אותך לחשבון Claude (פעם אחת), מפעילה את EMO ופותחת את המסך. במסך נכנסים עם גוגל או עם מייל וסיסמה: רק מייל שנמצא ברשימת המשתמשים של Agentic-dev נכנס.
תוכנות עזר (lib/tools.mjs): ffmpeg, ffprobe ו-yt-dlp יורדות לבד ל-EMO_HOME/bin כמה שניות אחרי שהשרת עולה, בגרסה של המחשב (Windows, Mac, Linux), והתיקייה הזו נכנסת ראשונה ל-PATH של השרת ושל הסוכנים. ffmpeg שכבר מותקן במחשב משמש כמו שהוא. yt-dlp תמיד שלנו ומתעדכן לבד כל 3 ימים. הורדה שנכשלה לא עוצרת את EMO: הגדרות ← כללי ← "תוכנות עזר" ← "נסה שוב". EMO_NO_TOOLS=1 מכבה.
emo הפעלה (ופתיחת המסך)
emo stop עצירה
emo status רץ או לא, גרסה, איפה הנתונים
emo logs הלוג האחרון
emo doctor בדיקה: Node, Claude Code, כניסה, תיקייה, תוכנות עזר, מרכז
emo login כניסה מחדש ל-Claude
emo update עדכון לגרסה האחרונה
emo autostart on עולה לבד בכל כניסה למחשב (Windows: משימה מתוזמנת, Mac: LaunchAgent, Linux: שירות systemd של המשתמש, ובלעדיו autostart של שולחן העבודה)
הנתונים שלך (סוכנים, שיחות, מפתחות) נמצאים ב-~/EMO (אפשר לשנות עם EMO_HOME). הקוד לא מכיל שום דבר אישי, והחבילה חתומה: קובץ שהשתנה עוצר את ההפעלה.
קוד ונתונים
- הקוד = התיקייה הזאת (הריפו או חבילת npm). אין בה שום דבר אישי.
- הנתונים =
EMO_HOME(ברירת מחדל~/EMO): הסוכנים, השיחות, התהליכים, המוח, המפתחות (.env), קובצי המצב (state/), תוצרים ולוגים. הפריסה המלאה ב-lib/home.mjs. - ההגדרות =
EMO_HOME/config.json: שם המשתמש ומינו, שותף, החברות (אחת או יותר) והתיקיות שלהן, דומיינים פנימיים, תיקיות שיווק וכספים, אתרים. השדות מתוארים בתוךdefaults/config.json. - התקנה ריקה מקבלת רק את EMO (המנהל), עם סקילי הבסיס, בלי צוות, תהליכים או זיכרון. את הצוות בונים איתו בשיחה.
- קליטה: בצ'אט הריק הראשון EMO מציע "בוא נתחיל": היכרות (שם, העסק), חיבורים (גוגל, וואטסאפ, קול) והסוכן הראשון עם משימה קטנה. המצב ב-
EMO_HOME/state/onboarding.json; הסקיליםonboarding-first-stepsו-onboarding-connectionsמגיעים עם החבילה ומתרעננים בכל עדכון. כל דף מציג שורת הסבר אחת בביקור הראשון. - דיווח על תקלה: בהגדרות (או כשאומרים ל-EMO שמשהו לא עובד): המילים של המשתמש + גרסה, מערכת והלוג האחרון, בלי תוכן שיחות. נשמר ב-
outputs/דיווחים/ונשלח למרכז (לשונית "דיווחים" בדף הניהול). - חיבורים: דף ההגדרות הוא המקום היחיד: קטלוג מובנה (מפתח + "בדוק חיבור" + אילו סוכנים), חשבונות גוגל בכפתור, ו"יכולת מותאמת" לכל שרת MCP אחר. הסוכנים רואים רק את זה (
strictMcpConfig); המתג "מחברי claude.ai" (config.claudeConnectors) נותן להם גם את המחברים של חשבון Claude במחשב. - חבילות =
modules.json: אילו דפים, נתיבים וחיבורים כל חבילה פותחת. חיבורים =connectors.json: הקטלוג של דף ההגדרות. - המרכז = פרויקט Firebase (
hub.jsonהציבורי, החוקים ודף הניהול ב-hub/): כניסה, רשימת המשתמשים והחבילות של כל אחד.node hub/deploy.mjs <projectId>מעלה אותו. - כתובת מרחוק: בהגדרות → "כתובת מרחוק" כל התקנה מבקשת שם ומקבלת
https://<שם>-emo.<הדומיין של המרכז>שמוביל למחשב שלה (תעלה של Cloudflare,lib/remote.mjs; cloudflared יורד ל-EMO_HOME/binכשחסר). נכנסים מהטלפון עם חשבון הגוגל של המרכז (דרךlogin.htmlשל המרכז) או עם סיסמה (/auth/setup). ההקצאה רצה במחשב של מנהל המרכז:node tools/remote-admin.mjs(התעודה של cloudflared + מפתח חשבון שירות ב-EMO_HOME/state/hub-admin-key.json). הדומיין ב-hub/public/remote.json. המסמך:docs/superpowers/specs/2026-10-31-remote-address-design.md.
הרצה בפיתוח
npm install
set EMO_HOME=C:\path\to\data # (Mac/Linux: export EMO_HOME=...) ריק = ~/EMO
set PORT=8787
set EMO_DEV_MODULES=* # חבילות בלי מרכז (רק בפיתוח; החבילה המפורסמת מתעלמת)
node server.mjs
ואז http://localhost:8787. משתני סביבה לבדיקות: EMO_SIM=1 (שום דבר לא יוצא מהמחשב: וואטסאפ, מייל ויומן נרשמים במקום להישלח), EMO_NO_SCHEDULE=1 (בלי רוטינות, תזכורות, שעון תהליכים, וואטסאפ וניקוי לילי: להרצה על עותק של נתונים של מישהו אחר). הרצה כמו משתמש, מסביבה נקייה ועם סופרווייזר: node tools/dev/start-user.mjs <EMO_HOME> [port].
השרת לא עולה עם ERR_MODULE_NOT_FOUND: חסרות חבילות (בדרך כלל אחרי git pull או עדכון גרסה). מריצים npm install בתיקיית הקוד; הסופרווייזר (emo run) מרים את השרת לבד תוך כמה שניות. אחרי כל עדכון של הריפו: npm install לפני הריסטארט.
בדיקות
npm test
בין השאר: התקנה ריקה עולה, אין שום דבר אישי בקוד, חבילות ומרכז (מול מרכז מדומה), חיבורים, שלמות החבילה.
פרסום גרסה
תגית vX.Y.Z → GitHub Actions (.github/workflows/publish.yml): בדיקות, מניפסט חתום (tools/build/manifest.mjs, המפתח ב-secret EMO_SIGNING_KEY), npm publish (NPM_TOKEN). מקומית: EMO_SIGNING_KEY_FILE=<key> npm run build && npm pack.
העברת התקנה ישנה (קוד ונתונים יחד) למבנה החדש
node tools/migrate-home.mjs --from <התיקייה הישנה> --to <EMO_HOME חדש> [--dry] [--skip runs,uploads]
מעתיק בלבד, לא מזיז ולא מוחק. אחר כך ממלאים config.json ב-EMO_HOME ומריצים עם EMO_HOME שמצביע לשם. בדיקה מהירה שהכל נטען: node tools/dev/check-copy.mjs <EMO_HOME> 8796.
Windows
הפעלה אוטומטית ולוגים של התקנה מהריפו: windows/README.md.