Vis
Back to extensions

blockether/vis-optmem

Official

Permanent memory for Vis agents, based on OptMem by Victor Taelin.

  • memory
  • agents

Install

Only approved releases are listed. Each version keeps its reviewed commit. You are viewing a different version from the catalog default.

Approved releases (8)
  1. 0.6.0Oct 23, 2026e7f1232f4001Release notes
  2. 0.5.3Oct 16, 20262d3ef2b5655bRelease notes
  3. 0.5.2Oct 14, 20263b6dc66c76d0Release notes
  4. 0.5.1Oct 14, 20269e05a8918750Release notes
  5. 0.4.0Oct 9, 2026984b5932575eRelease notes
  6. 0.3.0Oct 8, 202639e3f8b39245Release notes
  7. 0.1.1Oct 8, 20268bb89de7d4f4Release notes
  8. 0.1.0Oct 4, 2026998ec0c40f80Release notes

This command selects version 0.1.0 at its approved commit. It never follows a moving tag or branch.

Project: run from your project directory to install in .vis/extensions. This command does not add an extensions entry to vis.yml. Add --save to also record the installation. Save an installation in configuration to share the setup.

Review the source first. --trust allows extension code and build backends to run with your permissions.

vis-agent extension install \
  'blockether/vis-optmem' \
  --version '0.1.0' \
  --project \
  --trust

Then start Vis or use /reload. Dependencies are prepared automatically.

Already installed? Check, update or roll back
vis-agent extension versions 'blockether/vis-optmem'
vis-agent extension update 'blockether/vis-optmem' --trust
vis-agent extension rollback 'blockether/vis-optmem' --trust

Use the identifier shown above, not the Python package name. Add --project for a project installation. Update selects the latest approved stable version; rollback restores the previous pinned source. Choose a specific version and read the lifecycle contract.

Project details

Version
0.1.0
Extension
blockether/vis-optmem
Project folder
Repository root
License
Apache-2.0
GitHub stars
0
Downloads
32
Updated
Oct 4, 2026
GitHub owner
Blockether
Reviewed commit
998ec0c40f80
Metadata checked
Oct 4, 2026

Dependencies

Python >=3.11

  • vis-agent>=0.2.26

README

vis-optmem

Permanent memory for Vis agents. Every session on your computer reads and writes the same memory. So an agent keeps your decisions, the results of its work and what you teach it from one session to the next.

vis-optmem brings OptMem by Victor Taelin to Vis as typed Python functions. It uses the same design and the same files. See Credits.

Install

vis-agent extension install 'blockether/vis-optmem' --global --trust

Then ask an agent to create the memory, or call memo.init() once yourself. After that, each session reads its memory before other work and saves new facts as it works.

Tools

memo.init()                          # create the memory folder
memo.wake()                          # read the memory: new memories in full, old ones as summaries
memo.note("The user prefers uv.")    # save one memory: one line of at most 280 bytes
memo.nap("0-1", "<one line>")        # save a summary that a result asks for
memo.recall(r"uv|poetry")            # search every memory with a regular expression
memo.zoom("0-15")                    # open a summary into its two halves
memo.forget("0-15")                  # drop a wrong summary; memo asks for it again
memo.config({"WAKE_LINES": 128})     # show or change the sizes
memo.import_memories("~/old.txt")    # add dated lines, each "YYYY-MM-DD text"

Each result is a typed record with a text field. The agent prints the text and does what it says. A subagent does not use the memory. Its leader reads and writes it.

How the memory works

  • Each memory is one dated line. A memory never changes.
  • Each two neighboring memories get a one-line summary. Then each two neighboring summaries get a summary, and so on. The agent writes a summary when a result asks for it.
  • memo.wake() shows the whole memory in a fixed number of lines, 96 by default. New memories show in full. Older periods show as summaries, and the older the period, the larger its summary.
  • memo.zoom() opens a summary when the agent needs its detail. memo.recall() searches the original memories.

Where the memory is

The memory folder is $MEMORY_DIR, else ~/.optmem/memory. To use another folder, set MEMORY_DIR before you start Vis.

The files are the same as those of the OptMem memo command, so both tools can use one memory. A lock file keeps the writes of all sessions and processes in order. Do not edit the files by hand.

Sizes

Change a size with memo.config({"NAME": value}). Use None as the value to go back to the default.

Name Default Meaning
WAKE_LINES 96 Lines that memo.wake() shows
ENTRY_CHARS 280 Longest memory or summary, in bytes (at most 280)
PART_CHARS 20000 Largest part of one result, in bytes
PART_LINES 500 Largest part of one result, in lines

In Vis, one part holds at most 8000 bytes, so that it fits into one print.

Development

vis-agent python -m pytest tests -q

Credits

The design and the file format come from OptMem by Victor Taelin: the dated memory log, the tree of summaries and the fixed-size view. vis-optmem is an independent Python implementation for Vis. It contains no OptMem code. See NOTICE.

License

Apache License 2.0. See LICENSE.

Community feedback

Votes and display names are not verified identities. One vote per network address; shared networks share a vote. Select your current choice again to clear it.

Loading feedback…

Comments

Add a comment

Comments appear after moderation. Use a public display name, not private information. Five comments per network address in 24 hours.

BlocketherReview community code before installing.

1 of 2 · Repository

Add a repository

Share a public GitHub project with a published Release. We check its files and metadata before moderation. New releases are discovered after your repository is approved.

Folder containing pyproject.toml and extension.py. Leave empty if they are at the repository root.

Use v1.2.0 or a monorepo tag such as vis-greeting/v1.2.0. Its version must match the manifest. A Git tag alone is not a published Release.

Submissions stay private until approved. The owner is read from GitHub. A listing does not verify the submitter or audit the code.