Stop bookmarking.
Start doing.

OctoKeep reads what you save, remembers it, and checks back until you act on it.

The OctoKeep octopus wearing a headset and holding a laptop, with a speech bubble.

OctoKeep lives in Telegram. Before you connect it, you need a free Walrus Memory account (see setup below). It holds your memory, and you can revoke OctoKeep's access at any time.

Open OctoKeep in Telegram Start a chat with @OctoKeep_bot

What OctoKeep does

Two jobs, both remembered.

FeatureYou sendOctoKeep doesComes back
Saved postsDefault 2 days A link to a post, video or article Sends a short summary and the actions in it, then asks what you plan to do After the gap you choose, and asks if you did it
TasksUp to 3 questions "Build an app Thursday, remind me" Confirms the date and asks a few short questions about the task At the time you set, with an organised plan
OutcomesLearns from you Done, Snooze or Drop Remembers what you finished and what you skipped Uses it to shape the next reminder

How to use it

Two short conversations show the whole thing.

youyoutube.com/watch?v=…
octokeepGetting your first cloud certification (38 min)

Summary: start with the entry-level exam. Study 45 minutes a day for four weeks with the free official course, and book the exam on day one so the date is real.

Actions
1. Book the exam for four weeks from now (small)
2. Finish module 1 of the free course (medium)
3. Take one practice test by week three (medium)

Do you want to act on this?
[ Yes ]  [ Maybe later ]  [ No ]
youYes
octokeepWhen should I check back?
[ 1 day ]  [ 2 days ]  [ 3 days ]  [ 1 week ]
you2 days
octokeepSaved. I'll check in two days from now.
// two days later
octokeepYou saved "Getting your first cloud certification" and said you'd book the exam. Did you?
[ Done ]  [ Snooze ]  [ Drop ]

Commands

You can also just talk to it. These are shortcuts.

CommandWhat it doesCopy
/startSet up and choose your timezone
/connectLink your Walrus Memory account
/listYour saved posts and open items
/tasksUpcoming tasks and their times
/ignoredThings you have not acted on yet
/gapChange your default check-back time, for example /gap 3d
/doneMark something done

Set up in five minutes

You own your memory. OctoKeep only gets a key you can revoke.

  1. Create your Walrus Memory account

    Open memory.walrus.xyz, sign in, and finish the account setup.

  2. Create a key for OctoKeep

    Under Delegate keys, select Add key and name it OctoKeep. A separate key means you can cut OctoKeep off later without touching anything else.

  3. Copy two values

    From SDK credentials, copy your Account ID and the delegate private key for that key. Treat the private key like a password and do not post it anywhere else.

  4. Start the bot

    Open @OctoKeep_bot, send this, and choose your timezone so reminders arrive at the right hour.

    /start
  5. Connect your memory

    Send this, then paste the Account ID and the private key when asked. OctoKeep deletes your message straight away and stores the key encrypted.

    /connect
  6. Send your first link

    Paste a link to a video, article or post. For Instagram, send a screenshot of the post or a screen recording of the Reel, since OctoKeep does not scrape that app.

Your memory, your keys

What is stored, where, and how to switch it off.

QuestionAnswer
Where your memory lives Encrypted on Walrus, in your own Walrus Memory account. It is not tied to OctoKeep, so it goes wherever your account goes.
What OctoKeep stores Your Telegram ID, timezone and reminder times. The text of your reminders, your account ID and your delegate key are stored encrypted.
How to cut it offRevocable Delete the OctoKeep key in your Walrus Memory dashboard. OctoKeep can no longer read or write your memory.

For developers

OctoKeep is open source. Run your own.

git clone https://github.com/Ogstevyn/octobot.git
cd octobot
pnpm install
cp .env.example .env   # then fill in your own keys
pnpm dev
import { MemWal } from "@mysten-incubation/memwal"

const memory = MemWal.create({
  key: process.env.MEMWAL_PRIVATE_KEY,
  accountId: process.env.MEMWAL_ACCOUNT_ID,
  serverUrl: process.env.MEMWAL_SERVER_URL,
  namespace: "octokeep",
})

// Save what the user committed to, then wait for the write
const job = await memory.remember("[SAVE] Cloud cert video | book the exam | due in 2 days")
await memory.waitForRememberJob(job.job_id)

// Later, recall it to word the reminder
const { results } = await memory.recall({ query: "what did I plan to do this week" })

Never put a private key in client code or in this site. Keys belong in server environment variables only.