Kiro Realtime Chat

v1.0.0

Enables near real-time chat between multiple Kiro instances via a shared JSON file with polling for quick message exchange and task coordination.

0· 263·0 current·0 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
The name/description, SKILL.md, and the two included Python scripts are consistent: they read and write a shared JSON chat file to enable message exchange between Kiro instances. There are no unrelated credentials, binaries, or network integrations requested. Note: SKILL.md refers to memory/kiro-realtime.json while the scripts use ~/.openclaw/workspace/memory/kiro-realtime.json — a path mismatch that could cause confusion or misconfiguration.
Instruction Scope
All instructions and code operate on a local JSON file (create, read, write, mark read, poll). They do not call external endpoints or read unrelated system files. Concerns: no file locking or atomic-write handling is implemented (risk of race conditions/corruption under concurrent writers), and messages are stored in cleartext in the user's workspace where other local processes or users with access can read them.
Install Mechanism
No install spec or remote downloads — instruction-only plus included scripts. Nothing is fetched from external URLs and no archive extraction is performed.
Credentials
The skill requests no environment variables or credentials, which is proportionate. However, it writes chat data to a path inside the user's OpenClaw workspace (~/.openclaw/workspace/memory), so sensitive content placed in messages could be exposed to other local processes/users with filesystem access; that risk is inherent to the chosen storage method.
Persistence & Privilege
The skill is not marked always:true and is user-invocable only. It does not modify other skills' configuration or system-wide settings; it only reads/writes its own chat JSON file.
Assessment
This skill is coherent with its description and doesn't ask for credentials or network access, but review and consider the following before installing: (1) confirm which chat file path you want to use — SKILL.md and the scripts disagree, so correct the path to match your environment; (2) messages are stored as plaintext in your OpenClaw workspace (~/.openclaw/workspace/memory); only use this for non-sensitive content or restrict filesystem permissions accordingly; (3) the scripts lack file locking and atomic writes, so concurrent instances can corrupt the JSON file—consider adding file locks or write-to-temp-and-rename behavior; (4) polling at very short intervals increases disk I/O—choose an interval that balances responsiveness and load; (5) if you need stronger confidentiality or true real-time behavior, prefer an authenticated network-based solution (MCP/WebSocket) or add encryption. If you proceed, review the two included Python scripts and test in a safe environment first.

Like a lobster shell, security has layers — review code before you run it.

latestvk974wta97kmsxb91hbhk5mhvb182bwhr
263downloads
0stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

Kiro Realtime Chat

Overview

This skill enables near real-time communication between multiple Kiro instances using a shared JSON file with polling. Each message includes timestamp, sender, and content.

File Location

memory/kiro-realtime.json

JSON Structure

{
  "messages": [
    {
      "id": 1,
      "from": "VPS Kiro",
      "to": "Laptop Kiro",
      "message": "Selam!",
      "timestamp": "2026-03-05T22:58:00Z",
      "read": false
    }
  ],
  "lastCheck": "2026-03-05T22:58:00Z"
}

Usage

Sending a Message

import json
import os
from datetime import datetime

CHAT_FILE = "memory/kiro-realtime.json"

def send_message(from_name, to_name, message):
    # Load or create chat file
    if os.path.exists(CHAT_FILE):
        with open(CHAT_FILE, "r") as f:
            chat = json.load(f)
    else:
        chat = {"messages": [], "lastCheck": datetime.now().isoformat()}
    
    # Add new message
    msg_id = len(chat["messages"]) + 1
    chat["messages"].append({
        "id": msg_id,
        "from": from_name,
        "to": to_name,
        "message": message,
        "timestamp": datetime.now().isoformat(),
        "read": False
    })
    
    # Save
    with open(CHAT_FILE, "w") as f:
        json.dump(chat, f, indent=2)
    
    return msg_id

Checking for New Messages

def check_messages(my_name, since_timestamp=None):
    if not os.path.exists(CHAT_FILE):
        return []
    
    with open(CHAT_FILE, "r") as f:
        chat = json.load(f)
    
    # Update last check time
    chat["lastCheck"] = datetime.now().isoformat()
    with open(CHAT_FILE, "w") as f:
        json.dump(chat, f, indent=2)
    
    # Filter messages my_messages = []
 for me
       for msg in chat["messages"]:
        if msg["to"] == my_name and not msg["read"]:
            my_messages.append(msg)
            msg["read"] = True
    
    # Save read status
    with open(CHAT_FILE, "w") as f:
        json.dump(chat, f, indent=2)
    
    return my_messages

Polling Loop (for near real-time)

import time

def poll_messages(my_name, interval=5):
    """Poll for new messages every N seconds"""
    while True:
        msgs = check_messages(my_name)
        for msg in msgs:
            print(f"{msg['from']}: {msg['message']}")
            # Process and respond here
        time.sleep(interval)

Recommended Polling Interval

  • Fast response needed: 2-3 seconds
  • Normal: 5-10 seconds
  • Low bandwidth: 30-60 seconds

Tips

  • Mark messages as "read" after processing
  • Use timestamps to avoid duplicate processing
  • For better real-time, consider MCP server or WebSocket
  • Keep messages under 1000 characters

Comments

Loading comments...