nc://call-me

v0.1.0Pinned
ThomSharktools/nodecode-call-me: Ring a phone through the /call-me app, speak a sentence and get the spoken answer back as text. - a rewrite of radres/hermes-plugin-call-me (MIT), credited to radres99d268a· 9 Nov1 commit
test1 filecell.lisp14.3 KBwire.lisp5.6 KB

nodecode-call-me

Call Me: ring a phone through the /call-me app, speak a sentence, and read the spoken answer back as text. A Nodecode rewrite of radres/hermes-plugin-call-me by radres.

/call-me is an iPhone app that gives a person a private 10-digit number for their agents. This cell gives the model two things to do with that number, and a person the same verbs from a slash command:

What Does
callme_call Rings the phone, says the model's text out loud, waits, and answers the person's spoken reply as a transcript.
callme_text Texts the phone: the agent's answer, a reminder, what a scheduled job came to.
/callme What the number reaches right now, or a text or a call sent on the spot.
(help :call-me) The manual the model reads before it reaches for either tool.

Both verbs are fenced by the section's allowed_users: a number, or a name, that is not on that list is refused before any request leaves, so an agent that has been talked into reaching a stranger still cannot.

Get it

Tell the agent "add the call-me cell", or run nodecode add nc://call-me.

Set it up

Install /call-me on the iPhone (callmemcp.com) and note the 10-digit number the app shows. That number is what the agent reaches, and it goes in the section — there is no key to copy and no account to create on this side.

In /settings, or in the call-me section of config.jsonc:

"call-me": {
  "allowed_users": ["5551234567"],
  "names": "5551234567=Sam",
  "label": "Nodecode",
  "call_wait": 120
}
Setting What it does
allowed_users The 10-digit numbers the agent may text and ring. The cell refuses to start without one.
names Optional number=name pairs; the model sees the name and may use it in place of the number.
label The thread name the phone shows for this agent.
call_wait How long a call waits for the person to answer and finish, in seconds; 300 at most.
timeout How long one request to the service may take, in seconds.

The first text or call mints the agent's session with the service, and the agent's own number with it; the token is kept in a 0600 file under the nodecode home, so the number stays the same across restarts. Delete that file (~/.nodecode/call-me/session.json) for a fresh number.

The /call-me app on the receiving iPhone is a paid subscription; the cell is free.

Use it

Ask for it in words — "call me when the deploy finishes", "ring me and ask whether to ship" — and the model picks callme_call; "text me the summary when you are done" is callme_text. From eval, in the call-me package:

(call-me:ring "The build is green. Deploy now?" :to "Sam")   ; => the transcript
(call-me:text "The deploy is live." :to "5551234567")        ; => what went out
(call-me:status)                                             ; what /callme answers

/callme alone says which numbers are reachable and what the agent's own number is; /callme text Sam the build is green and /callme call Sam deploy now? do it from the shell.

A call is bounded: it ends when the person hangs up or when the wait runs out, and the answer then says missed with a hint to send a text instead, so an unattended turn is never held open.

What it does not do

The original plugin is also a chat surface: it polls the service for the person's texts and voicemails and answers them as a session. This cell is the outbound half — the tools and the command, and the agent's number to be texted at. A reply typed in the /call-me app reaches the phone, not the transcript.

Add nc://call-me

  1. 1

    Install Nodecode

    Once per machine.

    $ curl -fsSL https://nodecode.ai/install.sh | sh
  2. 2

    Add the cell

    Pinned at 99d268a.

    $ nodecode add nc://call-me

    Or tell the agent add the call me cell.