Renxil Codebook
Send coordination context for local and low-bandwidth networks
Why this exists
Renxil P-Code Codebook v0.1 is not trying to replace existing emergency, radio, or map standards. It fills a narrower gap: short, human-reviewable text tokens for local coordination over low-bandwidth local transports or plugin providers.
CAP
Common Alerting Protocol is the right model for official public warnings, but it is XML/rich-message oriented and much larger than a low-bandwidth local payload.
EDXL
Emergency Data Exchange Language is strong for agency resource, patient, and situation exchange, but it targets interoperable systems rather than short person-to-person field messages.
APRS
APRS already handles radio position, status, and messages, but it does not define this prep-specific vocabulary for needs, resources, urgency, and compact actions.
Radio / mesh providers
Radio, mesh, or gateway providers can supply transport, identity, position, and text/opaque payload paths. This codebook is the small semantic layer carried inside those messages and is not tied to one provider.
Field mapping suites
Full field mapping suites are powerful for maps, markers, tasking, and plugin ecosystems, but they are often too heavy for casual prepping, hikers, off-grid communities, and small civilian groups. Renxil keeps the civilian coordination primitives while reducing setup, data size, and UI complexity.
Comparison matrix
Coverage model
The v0.1 surface is intentionally small. Each message can combine only the fields it needs, while leaving room for check-ins, movement, tasks, markers, resources, emergency escalation, and local group extensions.
WHO
Use FR for sender, TO for audience, and PEOPLE for adult and child counts. TO can target everyone, a group, a role, a person, or whoever is nearest, so the spec is not limited to one-to-one messages.
WHAT
Use NEED, STATUS, RESOURCE, ACTION, TASK, and MARKER to describe what is needed, happening, available, requested, assigned, or placed on the map.
WHERE
Use LOCATION text for human-readable places or L@ latitude/longitude for WGS84 coordinates. Four decimal places is the recommended short coordinate precision.
WHEN
Use TIME for simple relative timing such as now, today, within one hour, within six hours, within 24 hours, tomorrow, unknown, or until clear.
HOW
Use ACTION for instructions and methods such as send, bring, move, avoid, meet, relay, conserve power, boil water, administer first aid, or call authorities.
WHICH
Use TO for the message audience. Use QUALIFIER when a message must identify which route, shelter, cache, person, group, building, floor, checkpoint, or local list item.
CUSTOM
Use the CUSTOM range for local/user extensions with a namespace so unknown custom blocks can be ignored safely.
Scenarios
These examples show the coordination protocol: check-ins, movement, markers, resources, task handoff, and emergency escalation all use the same ID / TASK / Q rules.
Use ID
Reuse the same ID for follow-up messages about the same check-in, task, marker, resource request, or emergency escalation. Receivers use ID for dedupe, status updates, and matching ACK / DONE to the original event.
ACK is not DONE
TASK:ACK only means received or aware. TASK:OWN means someone is taking responsibility, TASK:ENR means en route, and TASK:DONE means resolved.
FR / TO
FR and TO describe message intent, not authentication or access control. Transport provider or plugin channel, DM, and encryption settings still handle transport-level delivery.
Coordinate first
Prioritize check-ins, meetups, hazard markers, resource sharing, task handoff, and emergency escalation. Rescue is one escalation workflow, not the only purpose of the protocol.
1. Team check-in
LEE -> GP=family
ID:C1;FR:LEE;TO:GP=family;L@25.0140,121.4620;S:OK;T:NWA short status and location update for the group.
2. Meetup coordination
ANN -> ALL
ID:M1;FR:ANN;TO:ALL;A:MT;L:School gate;T:1HUse ACTION + LOCATION + TIME for a simple meetup.
3. Traveling status
LEE -> GP=family
ID:M2;FR:LEE;TO:GP=family;S:MV;L@25.0140,121.4620;Q:OR=Home,DST=School;T:NWS:MV means moving, L is the current position, and Q:OR / DST define from and to.
4. Move order
NET -> ALL
ID:M3;FR:NET;TO:ALL;TASK:OPEN;A:MV;Q:OR=Camp,DST=School gate,RT=3;T:1HA:MV is a move instruction; Q can carry origin, destination, and route.
5. Hazard marker
SCOUT1 -> ALL
ID:H7;FR:SCOUT1;TO:ALL;MARKER:BD;L@25.0100,121.4600;SRC:OBS;T:UCMARKER creates a map object; T:UC means until clear.
6. Resource sharing
TEAM2 -> ALL
ID:W4;FR:TEAM2;TO:ALL;R:W+*20,M+;L:Community center;T:TDRESOURCE describes available supplies or capability, with optional quantity.
7. Task assignment
NET -> RL=driver
ID:T8;FR:NET;TO:RL=driver;TASK:OPEN;A:BG;Q:RT=3;T:1HTO targets a role, while Q identifies which route.
8. Task lifecycle
DRIVER1 -> NET
ID:T8;FR:DRIVER1;TO:NET;TASK:ACK;T:NWACK means received; the same ID can later move to OWN, ENR, DONE, or CAN.
9. Emergency escalation
ME -> ALL
ID:R1;FR:ME;TO:ALL;L@25.0140,121.4620;S:TP;N:RS;U:SOS;SRC:OBS;T:NWRescuee / rescuer workflows remain supported as emergency escalation.
10. Responder update
MED1 -> ALL
ID:R1;FR:MED1;TO:ALL;TASK:ENR;L@25.0200,121.4700;T:NWSame ID:R1 keeps responder status tied to the original event.
Encoding modes
Readable and Compact modes share the same command model. Readable is for manual typing and review; Compact is for app-generated payloads, task lifecycle, and marker updates.
Readable mode
Readable mode keeps plain section keys such as FR, TO, ID, TASK, L, P, S, N, R, U, T, A, MARKER, SRC, Q, and X. Use it for manual typing, teaching, households, and community groups.
Compact mode
Compact mode uses symbols such as ~, @, #, =, ?, +, $, !, >, *, and ^ to pack the same command model into shorter payloads. Use it for app-generated messages, trained workflows, task lifecycle, and map marker updates.
Interop
Readable and Compact modes share the same command model. A receiver should parse both into the same internal message object. P0 marks Compact mode v0; Readable mode can omit R0 unless the version needs to be explicit.
+ and $
Compact mode uses + for NEED, for example +W,M,BA. It uses $ for RESOURCE / available supplies, for example $W+,S+. This keeps requested items separate from available resources.
Canonical objects
Message
The smallest transmitted unit. It should usually include ID, FR, TO, U, T, and one primary meaning. Receivers use ID for dedupe, updates, and ACKs.
Task
Work that can be accepted or completed. Use ID to identify it, TASK to update lifecycle, TO to assign audience, and L for location.
Movement
Movement status or movement instructions for people and teams. Use S:MV for currently moving and A:MV to request movement; L is the current or primary location, while Q:OR / Q:DST / Q:RT / Q:VIA define origin, destination, route, and waypoint.
Marker
A map object. Use MARKER / * for type, L for position, SRC / ^ for report confidence, and TASK:CAN or =CAN to remove it.
Resource
Available supply or capability. Readable mode uses R; Compact mode uses $. Quantity can use *n, for example R:W+*20 or $W+*20.
Report
A status or event report. It usually combines S, MARKER, SRC, L, and T. Receivers should display reporter and time.
ACK / retry semantics
ID
Any message that needs retry, ACK, update, or cancel should include ID. ID must be unique within a recent window for the same sender.
ACK
ACK only means the receiver saw an ID. It does not mean the task, movement, or emergency is complete. Use ID:7F;TASK:ACK or P0;#7F;=ACK.
Dedupe
If the same FR + ID + payload arrives again, receivers should update last seen and avoid creating a second task or marker.
Retry
Retries should reuse the same ID. If content changes, use TASK:UPD / =UPD or the same ID with new fields so receivers treat it as an update.
Priority
U:SOS and U:C should be queued first. UI must distinguish SENT, ACKed, OWN, ENR, and DONE so users do not confuse delivery, ownership, en-route status, and completion.
Safety / legal guardrails
This is not legal advice; it is a protocol and product-design boundary for reducing misuse, privacy, radio compliance, store review, and user reliance risk.
Civilian safety boundary
The protocol should support check-ins, movement, evacuation, shelter in place, hazard reports, resource sharing, rescue, first aid, and calling authorities. Do not add assault planning, targeting people, weapons coordination, breach, ambush, or offensive engagement workflows.
Best effort delivery
Low-bandwidth mesh messages cannot guarantee delivery, order, or real-time response. UI and documentation should not describe Renxil as a substitute for 911, official alerts, SAR dispatch, or guaranteed rescue.
Sensitive data
Location, routes, group identity, injury, medicine, oxygen, insulin, medical emergency, and distress reports can be sensitive data. Default to local-first storage, minimize cloud retention, and provide clear, delete, export, and sharing consent controls.
Radio and region rules
Radio behavior depends on hardware, region, frequency plan, and user settings. Documentation should tell users to follow local radio rules; if bridging into amateur radio, encryption, commercial traffic, and message content may face extra limits.
State clarity
UI must clearly distinguish SENT, ACK, OWN, ENR, DONE, CAN, and stale. Especially for emergency escalation, users must not mistake message delivery for completed rescue.
Store and product claims
App listing, onboarding, and in-app copy should avoid misleading medical, public safety, or emergency-service claims. If collecting location or health-related data, privacy policy, permissions, prominent disclosure, and data safety labels must agree.
Quick presets
Treat these as one-tap coordination workflows: compose the payload, send it, retry with the same ID, and display ACK, OWN, ENR, and DONE separately.
Check-in
47 bytesTO:GP=family;ID:C1;L@25.0140,121.4620;S:OK;T:NW
Move to meetup
48 bytesTO:ALL;ID:M3;A:MV;Q:OR=Camp,DST=School gate;T:1H
Need supplies
43 bytesTO:ALL;ID:92;L:Banqiao;P:2A,1C;N:W,M,BA;U:C
Hazard report
54 bytesTO:ALL;ID:H7;MARKER:BD;L@25.0100,121.4600;SRC:OBS;T:UC
Need rescue
55 bytesTO:ALL;ID:R1;L@25.0140,121.4620;S:TP;N:RS;U:SOS;SRC:OBS
Readable / Compact conversion
Lossless fields
FR/~, TO/@, ID/#, TASK/=, L, P, S/?, N/+, R/$, U/!, T, A/>, MARKER/*, SRC/^, Q, and X should convert both ways.
Audience
TO:ALL -> @ALL; TO:GP=alpha -> @Galpha; TO:RL=medic -> @Rmedic; TO:WH=lee -> @Wlee; TO:NEAR -> @NEAR.
Coordinates
Readable mode L@25.0140,121.4620 can convert to Compact mode L@ONGC,1SM3G. Compact coordinates use base36 offset E4; convert back to Readable mode by restoring four decimals.
Unknowns
Unknown fields or tokens should preserve raw text; parsers should not fail closed. UI can mark them as unknown.
Marker lifecycle
Create
Create a marker with ID, MARKER, L, and SRC. Example: ID:A1;MARKER:HZ;L@25.0140,121.4620;SRC:OBS.
Update
Update a marker by reusing ID with TASK:UPD and new fields. Example: ID:A1;TASK:UPD;L@25.0150,121.4630.
Expire
Short-lived markers should include T, such as T:1H or T:UC. Receivers should fade stale markers automatically.
Delete
Cancel a marker with TASK:CAN or =CAN. Deletion should still remain in the event log rather than erasing history.
Parser test cases
ID:M2;FR:LEE;TO:GP=family;S:MV;L@25.0140,121.4620;Q:OR=Home,DST=School;T:NWP0;#M2;~LEE;@Gfamily;?MV;L@ONGC,1SM3G;QOR=Home,DST=School;TNWID:A1;TASK:UPD;MARKER:BD;L:Bridge 3;SRC:REP;T:UCP0;#7F;=DONE;@ALLText convention
Sections
Use ; between sections. A trailing ; at the end is optional. Spaces around ; are not required and should only be treated as visual formatting.
Fields
Most sections use KEY:TOKEN1,TOKEN2. Coordinates use the location shorthand L@lat,lng. Recommended order: FR from, TO audience, ID message, TASK lifecycle, L location, P people, S status, N need, R resource, U urgency, T time, A action, MARKER map object, SRC source, Q qualifier, then X custom.
Team routing
A transport channel may already support broadcast. FR and TO are message intent inside the payload, not encryption or permission controls. Use TO:ALL for everyone, TO:GP=alpha for a group, TO:RL=medic for a role, TO:WH=lee for a person, and TO:NEAR for whoever is nearest to L.
Tokens
Use field-scoped uppercase abbreviations for common values. Keep value tokens to one or two ASCII bytes when possible. Example: N:W,M,BA means water, medicine, and battery; U:C means critical.
SOS
SOS is the deliberate three-byte exception because it is internationally recognizable and reserved for life-threatening urgency.
PEOPLE
Use compact count tokens: P:2A,1C means two adults and one child. Roles and group names can be added later through Q or X.
TIME
Use a TIME token such as T:1H, or use @ for a specific time. Exact time values do not use : or date dashes: T:@1830, T:@1830+8, or T:@20260426T1830+8. Timezone is signed hours from UTC, such as +1, -1, or +3.5.
LOCATION
If the transport/provider already provides a usable position, use that provider position by default. Add LOCATION only when sending a landmark, when the sender is not at the incident location, when relaying for someone else, when GPS is off/stale/wrong, or when marking a cache, shelter, blocked road, hazard, or victim location. Readable mode uses plain location text after L:, or WGS84 coordinates as L@lat,lng; four decimal places is recommended for short messages. Compact mode L@ uses base36 offset E4, for example L@ONGC,1SM3G.
MOVEMENT
Movement status and movement instructions use the same fields. Use S:MV for "I am moving" and A:MV for "move." L is the current or primary location; use Q:OR=start,DST=end,RT=3,VIA=checkpoint to say from where, to where, which route, and via where. Example: ID:M2;S:MV;L@25.0140,121.4620;Q:OR=Home,DST=School;T:NW.
QUALIFIER / WHICH
Use Q:TOKEN=value when the message needs to identify which route, shelter, cache, person, group, building, floor, checkpoint, origin, destination, waypoint, or item. Multiple qualifiers can be comma-separated, for example Q:OR=Camp,DST=School gate,RT=3.
Parsing
Trim one optional final ;, split sections on ;, parse L@ as coordinates, then split other sections once on :. Values inside a section are comma-separated and case-insensitive for parsing. Unknown keys or tokens should be preserved or ignored, not treated as fatal. FR/TO should not replace transport provider or plugin channel, DM, or encryption settings.
Optional binary form
Hex byte mappings are not part of the v0.1 text spec. Keep binary transport as a separate appendix later if opaque payload support becomes necessary.
Custom codes
Text form
Use X:namespace.key=value for local extensions. Example: X:group.tent=1. Namespaces keep private group meanings separate from the shared codebook.
User range
Use the X: section for user-defined extensions in text form. Receivers should ignore unknown namespaces unless they have been locally agreed.
Unknown values
Receivers should show unknown custom sections as text when possible and ignore them for automated routing unless the namespace is recognized.
Local tests
Use namespaced custom keys such as X:test.flag=1 for local experiments. Do not treat those values as interoperable across groups, apps, or future codebook versions.
Token reference
Section keys are ordered by expected field-use frequency. Token rows show the text token first, then the full meaning and any usage note.
Section keys
CPMeaningNoteFR~FROMSender handle, when transport identity is not enoughTO@TOAudience. Examples: @ALL, @Galpha, @Rmedic, @Wlee, @NEARID#MESSAGE_IDShort message or task id for updates and acknowledgementsTASK=TASK_STATELifecycle update for a referenced idLLLOCATIONL:text or compact L@base36lat,base36lngPPPEOPLEAdult,child counts as P2,1S?STATUSCurrent condition or hazard stateN+NEEDRequested items or capabilitiesR$RESOURCEAvailable supplies or shared assetsU!URGENCYPriority or triage levelTTTIMERelative or exact timeA>ACTIONRequested or planned actionMARKER*MARKERMap object type such as hazard, cache, checkpoint, or shelterSRC^SOURCEConfidence or origin of the reportQQQUALIFIERWhich route, shelter, cache, person, group, or itemXXCUSTOMNamespaced local extensionTO audience tokens
ALLeveryoneBroadcast intent for everyone on the shared channelGPgroupTarget a locally named group or teamNEARnearest_availableWhoever is nearest to the LOCATIONRLroleTarget a local role such as medic, driver, scout, or net controlWHpersonTarget a locally agreed person or handleNEED tokens
FfoodMmedicineWwaterBAbatteryBBbaby_suppliesBLblanketCAcashCHphone_chargeCLclean_clothesECelderly_careEVevacuationFAfirst_aidFLflashlightFRfireFUfuelHPhelpHYhygieneINinsulinMPmapNTinternetO2oxygenPFpet_foodPWpowerRDradioRGrain_gearRSrescueRXprescription_medsSHshelterTLtoolsTRtransportWCtoiletSTATUS tokens
ALall_accountedBDbuilding_damageBRblocked_roadCKneed_check_inFDfloodedFRfire_nearbyIJinjuredLBlow_batteryLTlostMEmedical_emergencyMVmovingNFno_foodNPno_powerNWno_waterOKsafeSCsecurity_riskSGpoor_signalSPgroup_splitSTstayingTPtrappedRESOURCE tokens
C+charging_availableF+food_availableG+fuel_availableM+medical_supplies_availableR+radio_relay_availableS+shelter_spaceT+tools_availableV+transport_availableW+water_availableURGENCY tokens
CcriticalHhighNnormalLOlowSOSlife_threateningACTION tokens
ADadminister_first_aidAVavoidBGbringBWboil_waterCAcall_authoritiesCFconfirmCKcheck_onEVevacuateLCshare_locationMTmeetMVmoveRYrelaySIshelter_in_placeSNsendSVconserve_powerWTwaitTIME tokens
1Dwithin_24h1Hwithin_1h1Wwithin_week2Dwithin_48h2Hwithin_2h6Hwithin_6hAMmorningHHwithin_30mLTlaterNTtonightNWnowPMafternoon_eveningQHwithin_15mTDtodayTMtomorrowUCuntil_clearUTunknown_timeQUALIFIER / WHICH tokens
BDbuildingWhich building or structureCAcacheWhich supply cacheCPcheckpointWhich checkpoint or meetup pointDSTdestinationMovement destination or target placeFLfloorWhich floor or levelGPgroupWhich group or teamITitem_indexWhich numbered item in a local listORoriginMovement origin or starting placeRTrouteWhich route or road segmentSHshelterWhich shelter or refuge pointVIAwaypointMovement waypoint or via pointWHpersonWhich person, if locally agreedTASK states
ACKacknowledgedARRarrivedCANcancelledDONEdoneENRen_routeFAILfailedOPENopenOWNclaimedUPDupdatedMARKER tokens
BDblocked_roadCAcacheCPcheckpointHZhazardMDmedical_pointRTrouteSAsafe_areaSHshelterSRC tokens
OBSobservedOFFofficialREPreportedSTALEstaleUNVunverified