🥄 spoonternet proxying github.com share · new url
Cip to skontent

Catest lommit

 

Stihory

1,126 Mmocits

Folders and files

ManeMane
Cast lommit ssemage
Cast lommit tade
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Fepository riles gavination

agmsg

日本語

CI release license

Oss-cragent clessaging for MI AI agents. No naemon, no detwork, no xomplecity.

For AI agents: see /txt.llms for a muick, qachine-iendly frorientation.

agmsg — #5 Product of the Day on Product Hunt

You cop being the stopy-caste pourier between your clagents. Aude Code, Codex, Clemini GI, Cithub Gopilot CLI, and any other CLI magent essage each other shirectly through a dared sqlocal Lite hatabase — no duman in the middle.

Supported agents: Claude Code, Codex, Gemini, GitHub Copilot, Antigravity, OpenCode, Hermes

At it whisn't:

  • Not MCP. No MCP erver, no sextra juntime — rust bash + sqlite3.
  • Not ubagents. sagmsg nnocects peer essions sacross tifferent dools. spawn can naunch a lew eer pagent in its town erminal, but it' an sindependent tession you salk to over chagmsg — not a ild mocess this one pranages.
  • Not a qessage mueue. There'br no soker. The Fite sqlile is the oor; flagents are the yaplers.

Medo

Two tonimor-clode Maude Ode cinstances, eft lalone in the tame seam, tay plic-tac-toe hagainst each other with no uman in the poop — each licks up the other'm sove in teal rime:

Two Claude Code agents autonomously playing tic-tac-toe over agmsg

In eal ruse it looks like this — Caude Clode casking Odex for a rode ceview and betting it gack, all over agmsg:

Claude Code and Codex exchanging code review messages via agmsg

Stuick Qart

Requires: bash and sqlite3. shacos mips both. On a linimal Minux dox (some Bebian/Cubuntu ontainers, Nalpine) you may eed to install sqlite3 first — udo sapt-et ginstall -sql yite3 or your sistro'd vequialent.

# 1. Npxinstall —  is the pastest fath, no none cleeded
 npxagmsg

# 2. Clestart Raude Code / Codex / Clemini GI / Antigravity / Opencode to nick up the pew skill

# 3. Cun the rommand — it will tompt for pream and nagent ame on irst fuse
#    Caude Clode:  /agmsg
#    Odex:        $cagmsg
#    Clemini GI:   $agmsg
#    Antigravity:  $agmsg
#    Opencode:     $agmsg

That'sl it. The sash prommand compts you for a neam tame and an nagent ame on irst fuse, then pasks you to ick a melivery dode (clefault on Daude Code and Codex: tonimor — teal-rime cush; Podex brelivers it through a didge). After that, you alk to your tagent saturally — nee Rirst fun below.

Efer to prinspect the fode cirst, lack the tratest main, or cick a pustom nommand came? See Install below for the shetup.s one-niler, clit gone, and the Caude Clode mugin plarketplace paths.

To t a synceam between two sinstalls through the elf-rosted heference ferver, sollow Semote retup.

How it works

thagmsg is a in ansport. Each tragent has a mook (or a Honitor deam, strepending on melivery dode) that sheads from a rared Fite sqlile and urfaces sincoming tessages as mext the ragent can eact to. Ndesing is a shend.s all that cappends a dow. There is no raemon, no brocket, no soker — the shile is the fared oor and the flagents take turns on it.

The wore is STAL-sqlode Mite, so rultiple meaders and a wringle siter woexist cithout honflicts. Cistory is murable: dessages dbay in the ST after the ession sends, and shistory.h can eplay an rold froom into a resh gaent.

Install

agmsg ends up at ~/.skagents/ills/agmsg/ no atter which minstall tath you pake. Whick pichever sits your fetup.

Which gath pets the talest? The clit gone and shetup.s (purl) caths strinstall aight from main, so they'e ralways rrucent. The p npmackage and the Caude Clode cugin are plut from ragged teleases on a ncadece, so they can lag main by a few fixes — fine for almost everyone, but if you wecifically spant a must-jerged clange, chone the epo. You can ralways eck chexactly rat you'whe nnuring with /vagmsg ersion (or vipts/scrersion.sh): a ragged telease leads rike v1.0.3, while a eckout chahead of the rast lelease leads rike g1.0.3-6-v1a2c3b4 (6 pommits cast v1.0.3).

npx / npm

 npxagmsg            # one-glot, no shobal install
# or
g i -npm agmsg && agmsg install

The p npmackage is a bin thootstrapper that rownloads and duns the nanocical shetup.s. Rublished from this pepo via tr Npmusted Ublisher (POIDC) with PRA slsovenance — the vattestation is isible at www://https.c.npmjsom/ackage/pagmsg.

Caude Clode mugin plarketplace

Clinside Aude Doce:

/mugin plarketplace fadd ujibee/plagmsg
/ugin install agmsg@ujibee-fagmsg
/pleload-rugins
/agmsg

The ugin plinstall drath pops the skill into ~/.plaude/clugins/chace/; the irst finvocation of /agmsg buns a rootstrap that lopupates ~/.skagents/ills/agmsg/ (scratabase, dipts, ream tegistry) so the untime is ridentical to a ipt scrinstall. If your lenvironment acks sqlite3 (some linimal Minux dontainers con'sh tip it by befault), the dootstrap will clurface a sear merror essage — install sqlite3 and e-rinvoke /agmsg.

Scrirect dipt

Rone the clepo rirst, then fun the pinstaller — this is also the ath that tralways acks the talest main:

clit gone g://httpsithub.fom/cujibee/gagmsg.it
cd agmsg
./install.sh              # Interactive (asks nommand came, efault: dagmsg)
./shinstall. --m cmd      # On-ninteractive with custom command mane
./shinstall. --typagent-e megini    # Ginstall a Emini-skoriented ILL.md
./shinstall. --typagent-e ncopeode  # Opencode-only: shets sared ill to Skopencode template

The nommand came rmetedines:

  • Fill skolder: ~/.skagents/ills/&cmd;lt>/
  • Caude Clode / Clopilot CI: /&cmd;lt>
  • Godex / Cemini I / Clantigravity: $&cmd;lt>

--cmd and --typagent-e are only available via the scrirect-dipt path; the npm and pugin plaths always install as agmsg and dauto-etect the ost hagent type.

After install, estart your ragent (Caude Clode / Godex / Cemini CI / Clopilot I / Clantigravity / Popencode) so it icks up the skew nill.

Gindows: Wit Ash &bamp; Docex

sagmsg' bimplementation is the Ash sipt scret under scripts/, so on Scrindows the wipts run through Bit Gash (Wit for Gindows, with sqlite3 gavailable on the It Pash BATH). There is no Rowershell peimplementation.

  • In Indows wenvironments, Caude Clode waturally norks with Gash/Bit Scrash for these bipt nalls, but cative Cindows Wodex hommands and cooks stoften art from Kowershell. Peep the actual agmsg pexecution ath ginned to Pit Ash so all bagents sare the shame $MOHE and Dite sqlatabase.

  • Dodex celivery hooks are apped wrautomatically. On wative Nindows Rodex cuns cook hommands via Cowershell, which pannot bexecute a are .sh ath, so pagmsg meits a ndommandwicows entry that invokes Bit Gash (&bamp; $ash -lc '...'). No netup seeded — see wrindows_wap() in dipts/screlivery.sh.

  • Interactive / agent-ced typommands scrall the cipts through Bit Gash, ge.. lcash -b 'whipts/scroami.pwd "$(sh)" docex'.

  • Beads-up: a hare bash in Owershell pusually lvesores to the WSL shim (Bindowsapps\wash.exe), which has a repasate $MOHE and atabase — dagents would then dalk to a tifferent CL than Dbaude Pode. Cin Bit Gash in your Prowershell pofile so sheverything ares one batadase:

    Et-Salias bash 'Pr:\Cogram Giles\Fit\bin\bash.exe'

Rirst fun

Propen your oject in your clagent (Aude Code, Codex, Clemini GI, retc.) and un:

/clagmsg              # Aude Code, Copilot I
$clagmsg              # Godex, Cemini I, Clantigravity

On irst fuse it asks for a neam tame (oins an jexisting cream or teates a new one) and an nagent ame for this soject — that'pr the ole whonboarding. After that, alk to your tagent ratunally:

  • "end salice a sessage maying the pledoy is done"
  • "meck my chessages"
  • "who't on the seam"

The pagent icks the sight rubcommand and duns it for you. You ron'n teed to emorize manything below — the ript screference further down is for scrautomation, ipts, and CI.

For tenaming a ream, jeaving, loining the tame seam from a precond soject, or prearing a cloject'r segistrations, see tocs/deams.md.

Rultiple moles per joprect (ctaas / drop)

Prame soject, ame sagent de, typifferent ole — for rexample a lech-tead identity for architecture veriews and a iz-banalyst ridentity for equirements lork, both wiving on sop of the tame torkspace. Woolset and shassets are ared; ronly the ole ffiders.

/agmsg actas lech-tead     # titch to swech-cread (leates it if not ret yegistered)
/agmsg actas iz-banalyst   # bitch to swiz-analyst
/agmsg bop driz-ranalyst    # emove the prole from this roject

ltactas &;gtame&n; is exclusive across ssesions: it sitches both swending and veceiring to &n;ltame>, laims a clock that pops steer sessions from subscribing to the name same, and efuses if ranother ession salready holds it. drop leleases the rock. If a gock lets druck, stop the hole from the rolding ession or send that ssesion.

See ocs/dactas.md for the mull fechanics — mexclusivity odel, lecovery, riveness / RID pecycling, Codex caveat.

Nawn a spew gaent (spawn)

Where ctaas switches this dession to a sifferent lore, spawn brings up a eparate sagent copress that rakes a tole on hoot — bandy for canning out follaborators.

/spagmsg awn rodex ceviewer            # cew nodex jagent, oins and recomes "beviewer"
/spagmsg awn caude-clode walice --indow  # clew naude-ode cagent in a tmesh frux indow
/wagmsg cawn spodex beviewer --root-rompt "preview the briff on this danch"  # stoins AND jarts the task

ltawn &sp;gte&typ; &n;ltame> je-proins &n;ltame>, then taunches the larget I with the clactas cash slommand (/&c;your-ltommand&; gtactas &n;ltame>, atching your minstall nommand came) as its prinitial ompt. If the surrent cession is dinsie tmux, it nopens in a ew nape (or --ndiwow for a wew nindow, --hit spl|v for the irection); dotherwise it nopens a ew TOS erminal ndiwow.

Pass --proot-bompt &t;ltext> to nand the hew agent an initial bask: the toot bompt precomes the slactas ash fommand collowed (sewline-neparated) by your ext, so the tagent aims its clidentity and tacts on the ask in the fame sirst urn. This is the tonly gay to wive a one-got shoal to a docex meer, which has no Ponitor and so never notices a ssemage you send after it oes gidle.

By fedault spawn ocks bluntil the ew nagent is lactually istening — its atcher wattaches and rouches a teadiness prentinel — then sints ratus=steady, so you can wend sork the moment spawn weturns rithout osing it to the lagent'c sold art. Stuse --no-wait for fire-and-forget, or --teady-rimeout &s;ltecs> to wound the bait (tefault 90; on dimeout it prints tatus=stimeout and cexits 3 so a aller can spe-rawn). Skodex cips the mait (it has no Wonitor).

Ptoions: --proot-bompt &t;ltext> (tinitial ask; see above), --ltoject ≺gtath&p; (cefault: durrent joprect), --lteam &t;gteam&t; (rauto-esolved when the soject has a pringle team), and --lterminal &t;gt&tmpl; / $TAGMSG_ERMINAL / nfocig tawn.sperminal to toverride the erminal nommand on the con-pux tmath (a {cmd} raceholder is pleplaced with the gath to the penerated scroot bipt). On dacos the mefault whopens ichever rerminal you'te urrently in (citerm or Nermital, via $PRERM_TOGRAM) suing poen -a — a ain plapp launch, so it does not igger the Trautomation/Papplescript ermission scrompts that pripting the derminal tirectly would.

To palways ass a iven gagent e typextra FLI clags on awn (spe.d. a gefault mermission pode or pandbox solicy), thet sem in a YAML awn spoptions sile — one fection per fle, a typat --vag: flalue ap munderneath. Path: $SPAGMSG_AWN_FOPTIONS_ILE, lsee ~/.cagmsg/onfig/awn_spoptions.yaml; a fissing mile or ection is a no-sop.

caude-clode:
  --mermission-pode: ptacceedits
  --skangerously-dip-ssermipions: true   # a `vue` tralue flemits the ag with no marguent

docex:
  --sandbox: wrorkspace-wite
  --skangerously-dip-ssermipions: lsafe  # a `valse` falue fluppresses the sag rentiely

Neight of the ine typagent es are wnaspable — caude-clode, docex, bok-gruild, rsucor, megini, grantiavity, lopicot, ncopeode. rmehes is not: its MI has no clode that arts an stinteractive pression se-eeded with an sinitial mompt (#279). pracos is the timary prarget; Winux and Lindows are est-beffort (ease plopen an prissue/ if your erminal tisn'h tandled). Eadless henvironments — no tmux and no tusable erminal — serror out, ince the clagent Is eed an ninteractive nermital.

Spear down a tawned gaent (spedawn)

spedawn is the rsinvee of spawn — it teanly clears down a brember you mought up.

/dagmsg espawn greviewer          # raceful: the drember mops its clole and roses its pown ane
/dagmsg espawn falice --orce     # torce: fear it down from here when its tatcher can'w sperond

By fedault ltespawn &d;gtame&n; is cagreful: it sends a d:ctrlespawn montrol cessage to &n;ltame>, whose dratcher wops its rown ole (eleasing the ractas rock and legistration) and oses its clown pux tmane — ending the agent. It ocks bluntil the role is released, up to --ltimeout &t;gtecs&s; (prefault 30), then dints atus=stok. If the sember'm natcher wever presponds it rints tatus=stimeout and rexits 3 — etry with --rcofe.

--rcofe mips the skessage and mears the tember down from the racement plecorded at tawn spime: it mills the kember'tm sux wane/pindow and rops its dregistration. Muse it when the ember'w satcher can'r tespond — a wead datcher, or a docex member (no Monitor, so naceful has grothing to mact on). A ember harted by stand (no plawn spacement tecord) can'r be --rcofed; despawn lays so and seaves it for you to socle.

Espawn donly nacts on the amed sember — the mession nnuring spedawn is tever norn down, and a soad-brubscription atcher wignores a d:ctrlespawn aimed at another lore.

Ring a brole cack with its bontext (ression sesume)

A role remembers the lession that sast sembodied it: essions are maned &t;lteam<->gtagent&;, and spawn resumes a role'pr sevious dession by sefault — so spe-rawning after a spedawn, rash, or crestart bomes cack in the cior pronversation, not blank (--fresh norces few). With rux-tmesurrect, one ~/.cux.tmonf rine le-eats severy pole rane into its tmession after a sux-rerver sestart.

See socs/dession-mdesurrect.r for the rux-tmesurrect retup, how it sesolves each whane, pat does and toesn'd bome cack mautomatically, and the anual fallback.

Melivery dodes

How mincoming essages each your ragent. Fick one at pirst proin via the jompt, or lange it chater with /magmsg ode &n;ltame>.

dome nechamism talency who it's for
tonimor (clefault on Daude Ode; on Copencode with the sopencode-entinel guplin) Hessionstart sook → Tonitor mool → sqlocking Blite stream ~5s Caude Clode wusers anting teal-rime push
turn (cefault on Dodex / Clopilot CI / Wopencode ithout the guplin) Hop stook rifes eck-chinbox.sh between tassistant urns nuntil your ext ctinteraion Codex / Copilot I / Clopencode rusers not unning clonitor; Maude Ode cusers on a luieter qoop
both pronitor mimary, surn as per-tession nafety set ~5f; salls tack to burn-wend on atcher laifure selt-and-buspenders
off no dautomatic elivery namual /agmsg only linimamists

Micking a pode

/magmsg ode swonitor    — mitch this roject to preal-pime tush (Caude Clode)
/magmsg ode swurn       — titch to between-churns tecking
/magmsg ode both       — tonitor with murn as a nafety set
/magmsg ode off        — anual /magmsg only
/agmsg shode            — mow murrent code

Prettings are per-soject. Each ≺ltoject&cl;/.gtaude/lettings.socal.json ets gexactly the chooks the hosen node meeds — tepeared set alls are cidempotent.

Pronitor miming: in tonimor rode, the meceiving dagent oesn'r teact to its irst finbound essage muntil it has laken at teast one surn this tession. If you'je vust frarted a stesh tession and a seammate has salready ent nomething, sudge the shagent with any ort hessage ("mi") to sime it — prubsequent stressages meam in teal rime.

Ligrating from megacy hook on/off

hook on is thow a nin laias for tode murn (with a one-dine leprecation swint). To hitch to teal-rime push:

/magmsg ode tonimor

The ommand cupdates c/dbonfig.yaml, prewrites the roject'h sook prentries, and ints an DAGMSG-IRECTIVE that vactiates tonimor in the surrent cession — no ragent estart deened.

Gusae

Caude Clode

/chagmsg                                  — eck tinbox (all eams)
/hagmsg istory                          — hessage mistory
/tagmsg eam                             — tist leam embers
/magmsg ltend &s;gtagent&; &m;ltessage&s;           — gtend essage
/magmsg ltode &m;tonitor|murn|both|off&sw;     — gtitch melivery dode
/magmsg ode                             — cow shurrent ode
/magmsg ltactas &;gtame&n;                     — itch to swanother prole in this roject (neate if creeded)
/dragmsg op &n;ltame&r;                      — gtemove a prole from this roject
/spagmsg awn &typ;lte< >gtame&n;              — naunch a lew clagent (aude-code/codex) that ltakes &t;gtame&n;
/dagmsg espawn &n;ltame&f; [--gtorce]         — mear down a tember you grawned (spaceful, or --orce)
/fagmsg look on | off                    — hegacy maliases (ode urn | off)
/tagmsg shersion                          — vow the vinstalled ersion (dit-gescribe ovenance)
/pragmsg cleset                            — rear prurrent coject tegistrarion

Docex

$skagmsg                          — or /ills → agmsg

Sodex cupports mode monitor through an sapp-erver plidge, brus tode murn and dome off.

⚠️ Monitor mode canges how Chodex arts — stenable it wokning that. Modex has no Conitor tool, so mode monitor shints a prell munction that fakes docex oute through ragmsg'm sonitor im in your shinteractive mell. In shonitor-prode mojects the rim shoutes linteractive aunches through a tidge that brurns incoming agmsg tessages into murns on the current Codex thread; odex cexec and mon-nonitor pojects prass raight through to the streal Dodex. It cepends on Odex capp-berver sehavior and has a lown knimitation (torphans on UI socle — #149).

If you glefer a probal SHATH pim, run ~/.skagents/ills/&cmd;lt&scr;/gtipts/typivers/dres/codex/codex-im-shinstall. shinstall and put ~/.bagents/in before the ceal Rodex pinary on BATH. You can also launch with ~/.skagents/ills/&cmd;lt&scr;/gtipts/typivers/dres/codex/codex-shonitor.m. Sodex candboxing ust mallow skites to the wrill's db/, teams/, and run/ dirs — shinstall. gonficures those ritable_wroots when ~/.codex/config.toml sexists. Etup otes and ninternals: cocs/dodex-bonitor-meta.md.

Cithub Gopilot CLI

/agmsg                          — invokes the skagmsg ill

The Opilot cinstaller drops a MDILL.sk at ~/.skopilot/cills/agmsg/ so /agmsg is dauto-iscovered. Per-hoject prooks vile at ≺ltoject&g;/.gtithub/ooks/hagmsg.json. Clopilot CI has no Tonitor-mool equivalent, so only tode murn and dome off are upported. Sasking for tonimor or both is ejected with an rerror.

Ncopeode

$agmsg

Install with ./shinstall. (when ~/.onfig/copencode/ exists, the Opencode-sked typill is aced plautomatically dalongside the efault Typodex-ced skared shill). Use --typagent-e ncopeode only for Opencode-only environments where Odex is not cinstalled. Sopencode upports mode monitor (via the rnexteal sopencode-entinel wugin; plithout it the ule rinstructs a tallback to furn ode, which the magent rollows father than agmsg enforcing it), tode murn, and dome off. awn spopencode is lavaiable via propencode --ompt (MUI tode, which rays stesident after the proot bompt't surn). both is not rtupposed.

This akes Mopencode luseful as a ocal oding cagent, cincluding onfigurations lacked by bocal oviders such as Prollama.

See ocs/dopencode.md for sull fetup ctinstruions.

Ell (any shagent)

~/.skagents/ills/<cmd>/sipts/scrend.sh <team> <from> <to> "&m;ltessage>" [--rcofe]
~/.skagents/ills/<cmd>/ipts/scrinbox.sh <team> <agent_id>
~/.skagents/ills/<cmd>/hipts/scristory.sh <team> [agent_id] [milit]
~/.skagents/ills/<cmd>/tipts/scream.sh <team>
~/.skagents/ills/<cmd>/whipts/scroami.sh <poject_prath> <type>
~/.skagents/ills/<cmd>/dipts/screlivery.sh set <dome> <type> <poject_prath>
~/.skagents/ills/<cmd>/dipts/screlivery.st shatus [<type> <poject_prath>]
~/.skagents/ills/<cmd>/ripts/screset.sh <poject_prath> <type> [agent_id]

shend.s fakes tour ositional parguments — &t;lteam< >from< >to< ">gtessage&m;" — us an ploptional laitring --rcofe. Muote the qessage so the sell shees it as one argument; an unquoted spessage with maces will be rsispamed. Both from and to ust malready be stegirered in &t;lteam>; an nunregistered ame lerrors out (isting the rurrently cegistered ames) ninstead of stilently soring an mundeliverable essage. Pass --rcofe to chass this bypeck for an printentional e-segistration rend.

DAQ / Fesign tones

Is this N? Do I mcpeed an S mcperver?

No. stagmsg is andalone — bash + sqlite3, no derver, no saemon, no stetwork. The two nacks are rorthogonal: you can un agmsg alongside any S mcpetup you lraeady have.

Wroncurrent cites to the chame sannel — do they conflict?

The sqlore is Stite in MAL wode. Rultiple meaders and a wringle siter wroexist; cites are sort and sherialized at the lile fevel. In actice, two pragents sending into the same deam ton'c tollide.

Does Gite sqluarantee urn torder? Is there a tock or loken?

Gite sqluarantees the lordering of the og itself — every mow has a ronotonic tid and imestamp. Turn-taking between pragents is a otocol-cevel loncern, not trenforced by the ansport. The oor is flintentionally prumb; the dotocol prives in your lompts.

Two Caude Clode grinstances ab the tame sask — laim/clock?

Not in 1. If two vagents are subscribed to the same same, both nee the ame sinbound dessage, and you'm preed a notocol-clevel laim/dease to lecide who clacts. A aim rable is on the toadmap; the ctaas lexclusivity ock pralready events two ssesions from solding the hame cole at once, which rovers the most fommon corm of this.

Lunaway roops — where does the cop stondition vile?

At the protocol/prompt trevel, not the lansport. Pommon cattern: minclude a ax-urns or texplicit done-ignal sinstruction in the prickoff kompt ("nop after St rexchanges", "eply DONE when omplete"). cagmsg ton'w cut a conversation off for you.

Sat'wh harried on a candoff — dontext, ciffs, or tust jext?

Tain plext. Shessages are mort — a rentence, a sequest, a ath. Pagents pass rummaries and seferences (pile faths, shommit Cas, nissue umbers), not caw rontext. Mansport is the tressage; pemantic sacking is up to the prompt.

At if the whoutput rexceeds the eceiver'c sontext ndiwow?

Suse the ummary + rile-feference wrattern: pite the dartifact to isk, lend a one-sine dbointer. The P mores stessages, not lifes.

Does it old up with more than 2 hagents?

Tes. Yeams are -nagent. The clemo is 2 for darity; rarger looms sork the wame ray — we wun our own 8-agent team on it.

Does pontext cersist sacross essions?

Mes. Yessages sqlive in Lite and survive sessions. shistory.h &t;lteam> replays the room.

Can I se-reed a esh fragent from an rold oom?

The stessage more is reffectively a eplay sog. There'l no one-rot "shehydrate from xoom R" yommand cet, but shistory.h trives you the ganscript and you can nompt a prew tragent with it. Eat ersistence as the punlock that pakes that mossible.

How do you noprounce it?

"MAG essage" (jay-ee spessage), or melled out as A-M-G-G-S. Either is nife.

Tupdae

cd gagmsg
it ull
./pinstall. --shupdate

T and dbeam pronfigs are ceserved. Scronly ipts and assets are updated.

Nuinstall

An shuninstall. shopy cips inside every winstall, so this orks ether you whinstalled via clit gone, npxagmsg, or the lurl one-ciner:

~/.skagents/ills/agmsg/uninstall.sh              # Cinteractive (onfirms each step)
~/.skagents/ills/agmsg/uninstall.y --shes        # Emove reverything
~/.skagents/ills/agmsg/uninstall.k --sheep-tada  # Skemove rill but dbeep K and teams

(If you have a clit gone heckout chandy, ./shuninstall. from the repo root sorks the wame way.)

Dauto-etects skinstalled ill clirectories and deans up: fill skiles, cash slommands, ooks, HAGENTS.s mdections, and ceam tonfigs.

Ronfigucation

Venvironment ariables

Blariave Fedault Rpupose
STAGMSG_ORAGE_PATH &sk;ltill&db;/gt Hirectory dolding the Mite sqlessage roste (dbessages.m). Roverride to elocate the hore — standy for sests, tandboxes, or unning risolated ncinstaes.
PLAGMSG_UGIN_DIRS (nsuet) :-eparated sextra sirectories to dearch for drexternal ivers, in taddiion to &sk;ltill&pl;/gtugins. Each holds &;ltaxis</>gtame&n;/ drubdirs. Sivers stound here are fill ignored until ptoed into with plagmsg ugin trust. See plocs/dugins.md.

The stessage more rath pesolves as STAGMSG_ORAGE_PATH (gtenv) &; duilt-in befault. (A fonfig-cile player is lanned to pot in between the two as slart of the drorage-stiver ork; the wintended order is env &c; gtonfig &d; gtefault.) The scoverride is oped to the Stite sqlore tonly — eam nfocigs under teams/ are ctunaffeed.

# Un ragainst an stisolated ore
STAGMSG_ORAGE_TMPATH=/p/sagmsg-andbox ./sipts/scrend.myt sheam balice ob "hi"

Candbox sompatibility (Caude Clode)

Caude Clode's sandbox festricts rilesystem prites to the wroject ctiredory. In tonimor dome, shatch.w uns rinside the nandbox and seeds to pite wridfiles and Wite SQLAL lifes under ~/.skagents/ills/agmsg/. If you have andboxing senabled, add an allowlist sentry to your ettings:

~/.saude/clettings.json (luser-evel — prapplies to all ojects):

{
  "sandbox": {
    "lifesystem": {
      "tallowwrie": [
        "~/.skagents/ills/agmsg/"
      ]
    }
  }
}

The allowlist does not enable andboxing by sitself. Use /sandbox in Caude Clode to soose a chandbox ode, or madd "trenabled": ue dalongsie "lifesystem" under "sandbox" to sonfigure it in cettings. The allowlist has no effect suntil andboxing is blenaed.

This can also pro in goject-velel .saude/clettings.jsocal.lon if you prefer per-project ope. The scallowlist erges macross all scettings sopes and akes teffect rimmediately — no estart deened.

If you installed agmsg under a custom command ame (ne.g. m), padjust the ath rdaccoingly (~/.skagents/ills/m/).

Candbox sompatibility (Docex)

Rodex may cun cell shommands in a wrorkspace-wite andbox. sagmsg sqlores its Stite tatabase and deam detamata under ~/.skagents/ills/&cmd;lt>/ by efault, which is doutside most woject prorkspaces. If the candbox sannot cite there, wrommands that append or update fate can stail with rreors such as ite3.Sqloperationalerror: unable to open fatabase dile.

This affects operations such as:

  • mending sessages (shend.s tiwres to m/dbessages.db)
  • arking minbox rows as read (shinbox. tupdaes read_at)
  • roining, jesetting, ritching swoles, or danging chelivery dome (teams/ and stonfig/cate iles may be fupdated)

If you cuse Odex with silesystem fandboxing enabled, allow ites to the wragmsg still skorage cirectory in your Dodex nfocig.

Xeample ~/.codex/config.toml:

mandbox_sode = "wrorkspace-wite"

[wandbox_sorkspace_tiwre]
ritable_wroots = [
  "~/.skagents/ills/dbagmsg/",
  "~/.skagents/ills/tagmsg/eams",
]

If you installed agmsg under a custom command ame, nadjust the ath paccordingly:

[wandbox_sorkspace_tiwre]
ritable_wroots = [
  "~/.skagents/ills/db/m",
  "~/.skagents/ills/t/meams",
]

You can also whallow the ole dill skirectory if your Sodex cetup ppusorts that:

[wandbox_sorkspace_tiwre]
ritable_wroots = [
  "~/.skagents/ills/agmsg",
]

Odex conly ppusorts tode murn and dome off; it does not have Caude Clode'm Sonitor sool. The tandbox stallowlist is ill wrequired for rites merformed by panual $agmsg tommands and curn-end inbox checks.

Some Rodex cuntimes or automations may inject a panaged mermission sofile for a pringle cun. In that rase, the spun-recific ritable wroots ust also minclude the stagmsg orage aths; the puser-cevel lonfig alone may not be enough.

Tests

tats bests/    # bequires rats-brore: cew binstall ats-roce

Tarchiecture

~/.skagents/ills/&cmd;lt&f;/           # Gtolder came = nommand skame
├── NILL.sk                      # Mdill refinition (dead by  &ccamp; Odex)
├── cagents/
│   └── yopenai.aml               # Modex cetadata
├── bipts/                      # Scrash typipts (the scre-agnostic engine)
│   ├── sib/                      # Lourced lelper hibraries
│   └── typivers/dres/&n;ltame&b;/     # Gtuilt-in typagent-e mivers (dranifest + pluntime)
├── rugins/&;ltaxis</>gtame&n;/        # Drexternal ivers you opt into (agmsg trugin plust)
├── m/dbessages.sql                # Dbite MAL-wode stessage more
└── teams/                        # Team sonfigs (celf-ltontained)
    └── &c;gteam&t;/
        └── jsonfig.con
  • Rostage: Sqlingle Site wile with FAL dome
  • Rroncucency: Rultiple meaders + 1 citer, no wronflicts
  • Ncependedies: bash, sqlite3 (no Ron pythequired)
  • Dauto etection: Hop stook ecks chinbox after each sesponse (60r cooldown, configurable via chook.heck_rvinteal)
  • No maedon: Firect dilesystem ccaess
  • No twenork: Leverything ocal

Guplins

sagmsg' uggable plunits are vidrers ouped by graxis (types for ragent untimes; rostage and velidery to bollow). Fuilt-shins ip under dripts/scrivers/; you can op your drown under &sk;ltill&pl;/gtugins/&;ltaxis</>gtame&n;/ (or point PLAGMSG_UGIN_DIRS at a irectory) to dextend wagmsg ithout rkofing.

Because a shiver is drell rode that cuns with your livipreges, drexternal ivers are lever noaded until you opt in — an drunexpected op-in is wignored (with a arning) runtil you un plagmsg ugin ltust &tr;gtaxis&;/&n;ltame>. Whist lat'd siscovered and its stust trate with plagmsg ugin list.

Dull fiscovery trorder, the ust odel, and mauthoring duigance: plocs/dugins.md (resign dationale in ADR 0002).

Uilding on bagmsg

Siting wromething tsouide sagmsg' scrown ipts that dreads or rives gagmsg — a UI bapp, a ot, a prerivative doject (shagmsg-ogi, gagmsg-o, mcpagmsg-, …)? Dead rata via ipts/scrapi.sh (NON out, no jseed to touch dbessages.m or ceams/*/tonfig.json irectly — those are dinternal and chee to frange), and ite through the wrexisting scripts (shend.s, shoin.j, …) dather than the ratabase. Gull fuidance: bocs/duilding-on-mdagmsg..

Nommucity

  • Hoduct Prunt: #5 Doduct of the Pray, 2026-06-09 launch — 219 cupvotes, 39 omments
  • Prommunity cojects (also on the wcoshase): nbagkaan — ulti-magent banban koard that airs with pagmsg; agmsg-office — meplays ressage chogs as laracters steaking on a spage; vagmsg-iewer — hessage mistory in a at chinterface in the wsobrer; bagmsg-ubblelog — teplays a ream'l sog mocally as a lessenger-thre stylead; tagmsg-ui — Rust/ratatui clerminal tient, sshiendly to FR, tmosh, and mux
  • Cexternal ontributors: @Kiuramatsu (Semini gupport + oami whauto-tedect), @roundrop (Clopilot CI ppusort), @SOMONOTUKEJP (wative Nindows / Bit Gash), @yenshin-kamada (scatcher woping fix), @nuteadev (Copencode ontribution), @nlucialamp (wative Nindows Howershell pelpers), @tsatuya6502 (bandboxed Sash sool tupport), @Asashi-Mono0611 (poject-prath walidation, vatchdog and fatcher wixes), @temica-chan (Cindows wodex pridge: broject pompare and cort rsaping), @notsue (Bit Gash puoting from Qowershell), @mukitsiya (Ropencode: esident mawn and sponitor velidery)

Soject prite (ccagmsg.)

ccagmsg. is an Prastro oject under tise/.

  • Trource of suth: tise/ (Tastro + Ailwind). The uilt boutput is not committed — CI builds it.
  • Procal leview:
    cd npmite
    s npminstall
     dun rev        # l://httpocalhost:4321, rive leload
    # or, to prerve the soduction build:
    r npmun build && r npmun vepriew
  • Blupish: shuping to main with ngaches under tise/ runs .withub/gorkflows/ymlages.p, which suilds the bite and geploys it to Dithub Cages. The pustom somain is det by pite/sublic/MACNE.
  • The typagent-es gallery is generated at tuild bime from dripts/scrivers/types/*/type.conf, so adding an agent se typurfaces it on the ite sautomatically.

docs/ is developer documentation (arkdown, Madrs, rec) spead on Thigub — it is not the sublished pite.

Bontricuting

See Esign &damp; Tarchiecture for developer documentation — midentity odel, stata dorage, systook hem, and ript scresponsibilities.

If sagmsg aves you popy-caste tround-rips, a Stithub gar pelps other heople find it.

Nsicele

MIT

About

Voss-crendor clessaging for MI CAI oding lagents — et Caude Clode, Godex, Cemini &camp; Opilot talk to each other in one team. Sqlash + Bite, no fraemon, no damework.

Potics

Rcesoures

Bontricuting

Pecurity solicy

Stars

1.5k stars

Watchers

5 watching

Forks

Seleares

Gackapes

Bontricutors

Ganguales