כיצד הפלטפורמות שלנו משתלבות זו בזו. כל תחום/כלי אחד.
RODMENA בונה את מוצריה מתוך מערך של ספריות פנימיות ומשירותים מאוחסנים קטנים שלכל אחד מהם מטרה אחת, ומקצה כל תחום לכלי אחד בלבד. לפלטפורמות יש צוותים משלהן והן מתקשרות באמצעות אפיק הודעות משותף.
מוצרים
13
פלטפורמות מתארחות
8
ספריות, מנועים ו-CLIs
8
אפיק הודעות משותף
1
עקרונות תכנון
תחום אחד, כלי אחד
אימות זהות הוא Identity, הרשאה היא Auth, מדידה היא TokenGate, דואר אלקטרוני הוא Mail API, אישורים הם Futex, קונטיינרים הם RunFlow ותהליכי עבודה סוכניים הם Highway. מוצרים לעולם אינם מיישמים מחדש תחום שכבר שייך לכלי בית.
צוותים מתאמים בדואר
לכל פלטפורמה יש סוכן, הקשר ומאגר משלה. צוותים מתאמים ביניהם בין הפלטפורמות דרך אפיק ההודעות agent-mail. אף צוות אינו עורך את המאגר של צוות אחר ואינו פותח כרטיסים במערכת המעקב שלו.
מסדי נתונים הפרוסים בין מדינות
לשירותים יש מסדי נתונים משלהם, במארחים שונים במדינות שונות. יישום ניתן לפריסה מחדש אך הנתונים שלו לא, ואנו מפרידים בין השניים. כל מסדי הנתונים משוכפלים לאזור שלישי ומגובים מחוץ לאתר (off-site).
/ Where it runs
מארחים ואזורים
הצי המנוהל מכיל 22 מסדי נתונים של סביבת ייצור, שכל אחד מהם בבעלות שירות אחד, על גבי 4 מארחי מסדי נתונים ב-3 מדינות, ו-4 נוספים פועלים על מארח אפליקציה. אין שני שירותים שחולקים סכמה, והפלטפורמה אינה תלויה במכונה בודדת כלשהי.
מסדי נתונים בייצור, שכל אחד מהם בבעלות שירות אחד
22
מארחי מסד נתונים
4
מדינות
3
דקות לכל היותר: נקודת השחזור בצי המנוהל
≤5
UKהממלכה המאוחדת
יישומים ושני מארחי מסדי נתונים
מארח את שכבת היישומים ואת מסדי הנתונים עבור מנוע תהליכי העבודה, שירות האישורים, אפיק ההודעות, הדואר האלקטרוני, ספר החשבונות ופלטפורמת המשימות.
FRצרפת
מארח מסד נתונים
מחזיק את מישור הזהות והגישה, הרשאה, מדידה וספק הזהות, בנפרד מהשירותים התלויים בו.
DEגרמניה
קבוצת עותקים משוכפלים
מחזיק עותק מתעדכן ברציפות של כל מסד נתונים, מחוץ לשני האזורים האחרים. אין בו שרת ראשי, כך שאף תעבורה אינה תלויה בו עד שהוא מקודם.
שכפול רציף
כל מסדי הנתונים מזרימים שינויים ברמת הבלוק ל-standby מחוץ לשני האזורים הראשיים. מכיוון שהשכפול הוא אסינכרוני, רפליקה אינה יכולה להאט או לחסום את השירות שנמצא לפניה.
גיבויים מחוץ לאתר
ארכיונים נשלחים באופן רציף לאחסון אובייקטים במתקן נפרד, מוצפנים לפני שהם יוצאים מהמארח וניתנים לשחזור לכל נקודה בתוך תקופת השמירה. השחזורים נבדקים מקצה לקצה.
שלושה גורמים בכל חיבור
אף מסד נתונים אינו מקבל חיבור רשת על בסיס סיסמה בלבד. חיבור דורש הצפנה בהעברה, תעודת לקוח שהונפקה על ידי רשות פרטית וסיסמה, והשירותים מוגבלים למסדי הנתונים שלהם בלבד.
רפליקות וגיבויים
רשומת statement שגויה מגיעה לכל הרפליקות תוך רגעים ספורים. רפליקות מגנות מפני אובדן חומרה, והארכיון מגן מפני אובדן נתונים.
בשמונה השכבות ובאפיק הודעות אחד של המפה, כל תחום מופיע פעם אחת בלבד. המוצרים נמצאים בחלק העליון, ה-stack נמצא בחלק התחתון, וכל מה שמוצר זקוק לו נמצא במרחק צעד אחד (hop) בלבד.
23 צמתים · 27 יחסים מתועדים · 1 בהנחה
יש לגלול את המפה לרוחב. לכל צומת יש גם כרטיס למטה.
חקרו
שימוש במפה
יש לבחור צומת או את אפיק ההודעות כדי להדגיש את הקשרים שלו ולראות מה נמצא בבעלותו, למה הוא מתחבר ובמה אסור להחליף אותו לעולם. הכרטיסים שלמטה מפרטים גם הם את העובדות האלה.
קשר מתועד
בהנחה: יש לאמת לפני הסתמכות על כך
אפיק ההודעות agent-mail
מוצר (מסגרת גרדיאנט)
לא משורטטים, שכן הם חלים בכל מקום:
כל מוצר מבצע אימות זהות מול Identity ובדיקת הרשאות מול Auth.
כל צוות פלטפורמה מתאם דרך אפיק agent-mail.
כל מאגר מנוהל ב-issuedb-cli, עם מפרטי EARS.
מוצרלפי בקשה
RED9
11 יוצאים
פלטפורמת כוח עבודה של סוכנים שבה כל צ׳אט הוא משימה עמידה ואוטונומית עם כתובת דוא״ל.
נשען על מלוא ה-stack. Identity ו-Auth מספקים גישה, TokenGate תקציבים, Mail API תיבות דואר למשימות ו-RunFlow ארגזי חול (sandboxes). Highway הוא ה-executor העמיד, Futex מטפל באישורים ו-migretti בסכמה, על גבי Python, PostgreSQL ו-Redis.
Ledger ברישום כפול עבור כספים, זיכויים ומלאי. הרשומות שלו מאוזנות, קבועות וניתנות להוכחה תחת כללים שמסד הנתונים אוכף.
נבנה על גבי Python ו-PostgreSQL, תוך שימוש ב-Auth עבור אישורי גישה, ב-TokenGate עבור מדידת שימוש וב-migretti עבור סכמה. הוא עבר ארבעה שלבי ביקורת פנימיים וביקורות יריבות חוזרות (adversarial re-audits), שממצאיהן מפורסמים.
לעולם לא מוחלף ב: סוד שיכול להנפיק אישור גישה שהמערכת עצמה תקבל, או נתיב עריכה או מחיקה ביומן.
לא מיועד ל: מכסות או מדידה (יש להשתמש ב-TokenGate), מדדים שאינם כמויות משתמרות, או מצב של תהליך עבודה.
ספירה, תקרות ו-rate limits לפי משתמש, ארגון או לקוח (tenant). המערכת מכסה תקציבי טוקנים, ספרי שימוש (usage ledgers), רמות תוכנית, תהליכי שריין/נשמרים יחד בפעולה אחת (commit), והתראות על סף וחריגה.
על פי נוהלי הבית, מגבלות נבדקות בשני הכיוונים. מגבלה חייבת לחסום כאשר חורגים ממנה ולהתחדש כאשר היתרה מתמלאת שוב.
לעולם לא מוחלף ב: מוני Redis INCR, טבלאות שימוש, middleware של דלי אסימונים (token bucket), או ספריות להגבלת קצב.
לא מיועד ל: הרשאה (יש להשתמש ב-Auth) או הגנה מפני DDoS בקצה הרשת.
מנוע מבוזר ועמיד עבור תהליך עבודה מבוסס-סוכנים (agentic workflows). הוא מספק סוכנים, יעדים, סשנים, תזמונים, טריגרים, תהליכי worker מסוג activity ותהליכי worker רגילים, פיצול הרצות (run forking) ו-traces.
לפי כלל הבית, מוצר מנהל לולאת שקילה (deliberation loop) עצמאית אחת בלבד. הוא משתמש ב-Highway כמבצע עמיד (durable executor) שמדווח בחזרה באמצעות webhook ושומר את כל ה-reasoning של ה-LLM בתוך המוצר.
לעולם לא מוחלף ב: Airflow, Prefect, Temporal, או סקריפטים מותאמים לתזמור.
סביבת sandbox מוקשחת מבוססת קונטיינרים ותהליכי עבודה מסוג DAG מונחי-API להרצת קוד שאינו מהימן או שנוצר על ידי סוכנים. ניתן להשהות ולחדש הרצות, והן כוללות יומני רישום בזמן אמת, ניסיונות חוזרים וצמתי אישור אנושי.
לעולם לא מוחלף ב: הרצת docker מקומית, מריצים (runners) באירוח עצמי, או CI גנרי.
דואר טרנזקציוני וקמפיינים עם שליחה, תבניות, מעקב מסירה, webhooks לאירועים, רשימות חסימה (suppression), מכסות ושליחות מתוזמנות. הוא גם מקצה את תיבות הדואר שמוצרים נבנים עליהן.
הכתובות הן ב-mail.rodmena.co.uk וה-API מוגש ב-mailserver.rodmena.co.uk.
לעולם לא מוחלף ב: ספריות SMTP גולמיות, SES/Mailgun/Sendgrid, או סקריפטים אד-הוק של smtplib.
סוכן קידוד מקבל תיבת דואר נכנס, כתובת ורשומה בספר טלפונים, ומחליף הודעות עם סוכנים אחרים ועם כל תיבת דואר מעל גבי SMTP סטנדרטי. סוגי ההודעות הם report, ack, question, fix-notice, verify-result ו-close.
מחליף את ה-CLI של agentmail שהוצא משימוש. יש להתייחס להודעה מסוכן אחר כטענה ולבצע את הבדיקה בעצמכם. שנו רק את המאגר שלכם, והריצו מחדש את השחזור לפני שתסכימו שמשהו תוקן.
לעולם לא מוחלף ב: עריכת מאגר של פלטפורמה אחרת, פתיחת כרטיסים במערכת המעקב שלה, או בקשה מאדם להעביר הודעות.
רכיב פיקוח (supervisor) אסינכרוני ללא תלויות (zero-dependency) עבור תהליכי worker, שירותי רקע (daemons) וצרכני תור. הוא מריץ בדיקות תקינות, מנהל קבוצות ומפעיל מחדש תהליך במקרה של קריסה.
systemd או Kubernetes רגילים מקובלים כאשר הם מתאימים יותר.
Python
ספריית Python
bulkman
1 יוצאים
מחיצות ובידוד מקביליות שמגבילים את רדיוס ההשפעה של תלות שנכשלת.
כלל הבית הוא להגדיר תמיד circuit_breaker_enabled=False. bulkman מטפל בבידוד, ו-circuit breaking שייך ל-resilient-circuit.
שער LLM תואם OpenAI ו-Anthropic שיכול להעמיד כמה ספקים מאחורי שם מודל אחד. הפריסה שלנו מנתבת לספק יחיד במעלה הזרם ללא מעבר לגיבוי (failover), והיא ספק ה-LLM של הבית לקריאות מודל בכלים.
מה כל כלי אחראי לו, מתי להשתמש בו, ובמה אסור להחליף אותו.
01/ מוצרים
RED9
מוצרלפי בקשה
פלטפורמת כוח עבודה של סוכנים שבה כל צ׳אט הוא משימה עמידה ואוטונומית עם כתובת דוא״ל.
נשען על מלוא ה-stack. Identity ו-Auth מספקים גישה, TokenGate תקציבים, Mail API תיבות דואר למשימות ו-RunFlow ארגזי חול (sandboxes). Highway הוא ה-executor העמיד, Futex מטפל באישורים ו-migretti בסכמה, על גבי Python, PostgreSQL ו-Redis.
מאמת עם Identity · מקבל הרשאות דרך Auth · מודד תקציבים באמצעות TokenGate · תיבות דואר של משימות באמצעות RODMENA Mail API · הרצה בארגז חול על RunFlow · מאציל תהליכי עבודה אל Highway · אישורים אנושיים באמצעות Futex · מבצע מיגרציה של סכימה עם migretti · בנוי על PostgreSQL · בנוי על Redis · מודלים כברירת מחדל באמצעות Prism
reTunnel
מוצר
פלטפורמת כניסה מאוחדת, חינמית ובקוד פתוח, שחושפת שרתים מקומיים מאחורי NAT וחומות אש לאינטרנט הציבורי דרך מנהרות מאובטחות.
לקוח Python ו-CLI עצמאיים, ברישיון MIT, שמגיעים עם שרת בעל יכולת אירוח עצמי ואינם תלויים באף פלטפורמה פנימית אחרת.
Ledger ברישום כפול עבור כספים, זיכויים ומלאי. הרשומות שלו מאוזנות, קבועות וניתנות להוכחה תחת כללים שמסד הנתונים אוכף.
נבנה על גבי Python ו-PostgreSQL, תוך שימוש ב-Auth עבור אישורי גישה, ב-TokenGate עבור מדידת שימוש וב-migretti עבור סכמה. הוא עבר ארבעה שלבי ביקורת פנימיים וביקורות יריבות חוזרות (adversarial re-audits), שממצאיהן מפורסמים.
לעולם לא מוחלף ב: סוד שיכול להנפיק אישור גישה שהמערכת עצמה תקבל, או נתיב עריכה או מחיקה ביומן.
לא מיועד ל: מכסות או מדידה (יש להשתמש ב-TokenGate), מדדים שאינם כמויות משתמרות, או מצב של תהליך עבודה.
ספירה, תקרות ו-rate limits לפי משתמש, ארגון או לקוח (tenant). המערכת מכסה תקציבי טוקנים, ספרי שימוש (usage ledgers), רמות תוכנית, תהליכי שריין/נשמרים יחד בפעולה אחת (commit), והתראות על סף וחריגה.
על פי נוהלי הבית, מגבלות נבדקות בשני הכיוונים. מגבלה חייבת לחסום כאשר חורגים ממנה ולהתחדש כאשר היתרה מתמלאת שוב.
לעולם לא מוחלף ב: מוני Redis INCR, טבלאות שימוש, middleware של דלי אסימונים (token bucket), או ספריות להגבלת קצב.
לא מיועד ל: הרשאה (יש להשתמש ב-Auth) או הגנה מפני DDoS בקצה הרשת.
מנוע מבוזר ועמיד עבור תהליך עבודה מבוסס-סוכנים (agentic workflows). הוא מספק סוכנים, יעדים, סשנים, תזמונים, טריגרים, תהליכי worker מסוג activity ותהליכי worker רגילים, פיצול הרצות (run forking) ו-traces.
לפי כלל הבית, מוצר מנהל לולאת שקילה (deliberation loop) עצמאית אחת בלבד. הוא משתמש ב-Highway כמבצע עמיד (durable executor) שמדווח בחזרה באמצעות webhook ושומר את כל ה-reasoning של ה-LLM בתוך המוצר.
לעולם לא מוחלף ב: Airflow, Prefect, Temporal, או סקריפטים מותאמים לתזמור.
סביבת sandbox מוקשחת מבוססת קונטיינרים ותהליכי עבודה מסוג DAG מונחי-API להרצת קוד שאינו מהימן או שנוצר על ידי סוכנים. ניתן להשהות ולחדש הרצות, והן כוללות יומני רישום בזמן אמת, ניסיונות חוזרים וצמתי אישור אנושי.
לעולם לא מוחלף ב: הרצת docker מקומית, מריצים (runners) באירוח עצמי, או CI גנרי.
מקבל הרשאות דרך Auth · מודד שימוש באמצעות TokenGate · צומתי אישור דרך Futex (בהנחה: יש לאשר)
מנוע תהליך עבודה דטרמיניסטי המוגדר בקוד. זוהי החלופה הפנימית הקלה יותר ל-DAGs של RunFlow כאשר אין צורך בקונטיינרים מאוחסנים.
איננו מוסרים פרטים כאן מכיוון שההיקף ושטח הפנים של ה-API עדיין טעונים אישור מול הצוות האחראי.
חלופה ל RunFlow
Python
05/ תקשורת
RODMENA Mail API
שירות מתארחמוצר
דואר טרנזקציוני וקמפיינים עם שליחה, תבניות, מעקב מסירה, webhooks לאירועים, רשימות חסימה (suppression), מכסות ושליחות מתוזמנות. הוא גם מקצה את תיבות הדואר שמוצרים נבנים עליהן.
הכתובות הן ב-mail.rodmena.co.uk וה-API מוגש ב-mailserver.rodmena.co.uk.
לעולם לא מוחלף ב: ספריות SMTP גולמיות, SES/Mailgun/Sendgrid, או סקריפטים אד-הוק של smtplib.
מקבל הרשאות דרך Auth · מבצע על RunFlow · מודד מכסות דרך TokenGate
סוכן קידוד מקבל תיבת דואר נכנס, כתובת ורשומה בספר טלפונים, ומחליף הודעות עם סוכנים אחרים ועם כל תיבת דואר מעל גבי SMTP סטנדרטי. סוגי ההודעות הם report, ack, question, fix-notice, verify-result ו-close.
מחליף את ה-CLI של agentmail שהוצא משימוש. יש להתייחס להודעה מסוכן אחר כטענה ולבצע את הבדיקה בעצמכם. שנו רק את המאגר שלכם, והריצו מחדש את השחזור לפני שתסכימו שמשהו תוקן.
לעולם לא מוחלף ב: עריכת מאגר של פלטפורמה אחרת, פתיחת כרטיסים במערכת המעקב שלה, או בקשה מאדם להעביר הודעות.
רכיב פיקוח (supervisor) אסינכרוני ללא תלויות (zero-dependency) עבור תהליכי worker, שירותי רקע (daemons) וצרכני תור. הוא מריץ בדיקות תקינות, מנהל קבוצות ומפעיל מחדש תהליך במקרה של קריסה.
systemd או Kubernetes רגילים מקובלים כאשר הם מתאימים יותר.
Python
bulkman
ספריית Python
מחיצות ובידוד מקביליות שמגבילים את רדיוס ההשפעה של תלות שנכשלת.
כלל הבית הוא להגדיר תמיד circuit_breaker_enabled=False. bulkman מטפל בבידוד, ו-circuit breaking שייך ל-resilient-circuit.
משלים resilient-circuit
Python
resilient-circuit
ספריית Python
Circuit breaking, ניסיונות חוזרים עם backoff, וטיפול ב-failsafe או ב-fallback סביב קריאות בלתי מהימנות. מומלץ לשלב עם bulkman לצורך בידוד.
לעולם לא מוחלף ב: tenacity, pybreaker, או לולאות ניסיון חוזר שנכתבו ביד.
Python
scriptplan
מנוע + CLIמוצר
מנוע תואם TaskJuggler (קובצי .tjp) לתכנון ולתזמון משאבים. הוא מטפל באנשים ובמכונות לאורך זמן, בתלויות ובלוחות שנה, ומפיק פלט Gantt.
לעולם לא מוחלף ב: גיליונות אלקטרוניים או חישובי תאריכים אד-הוק.
מערכת מעקב אחר כרטיסים לכל מאגר, עם מפרטי EARS, זיכרון עמיד ולקחים. כל בקשות הפיתוח פועלות לפי מחזור החיים המנדטורי של פתוח ← בביצוע ← סגור.
כל בקשות הפיתוח הופכות למפרט EARS בכרטיס ובעותק תחת ספריית ה-SPECS/ של המאגר.
לעולם לא מוחלף ב: משימות TODO שלא במעקב.
CLI
08/ העדפות מחסנית טכנולוגית
Prism
שירות מתארחמוצר
שער LLM תואם OpenAI ו-Anthropic שיכול להעמיד כמה ספקים מאחורי שם מודל אחד. הפריסה שלנו מנתבת לספק יחיד במעלה הזרם ללא מעבר לגיבוי (failover), והיא ספק ה-LLM של הבית לקריאות מודל בכלים.