github Go re-analysis due

bytefolk/mem

github

A portable, self-hosted memory plane for AI agents — one core across API, MCP, CLI, and UI.

maintainer
bytefolk
license
Apache-2.0
first seen
2026-09-01
last seen
2026-09-04
releases · 30d
2
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 26 tools
transport stdio counts 26 tools · 0 res · 0 prompts permission surface via README inference

tools

  • mem_archive

    Reversibly exclude a memory from normal recall

  • mem_checkpoint

    Persist a versioned task checkpoint or an explicit handoff to another Agent/device

  • mem_checkpoint_get

    Get one immutable checkpoint and its full handoff payload

  • mem_checkpoint_list

    List newest-first bounded checkpoint summaries for one task

  • mem_context

    Build an evidence-backed context pack for the calling Agent

  • mem_durable_context_recall

    Resume explicitly granted, workspace-scoped active memories for one principal

  • mem_face

    Person clusters: action=list / name / merge

  • mem_feedback

    Record useful/not-useful or pin/unpin feedback with optimistic concurrency

  • mem_file_annotation_decide

    Accept or reject one pending AI description/tag suggestion

  • mem_folder_tree

    Full folder tree as nested structure

  • mem_forget

    Irreversibly redact one live memory payload after explicit confirmation

  • mem_get

    Read file content; binary returned base64-encoded, capped at 4 MiB

  • mem_info

    File metadata + AI fields (caption / summary / tags / timeline_at / index_status)

  • mem_list

    List files with filters (tag / mime-prefix / since / until / path-prefix)

  • mem_ls

    List immediate subfolders + files under a folder path

  • mem_memory_get

    Get one full structured memory by UUID within the token path boundary

  • mem_memory_list

    List bounded structured-memory summaries

  • mem_mkdir

    Create folder (mkdir -p semantics)

  • mem_mv

    Move file to a different folder, or rename in place

  • mem_put

    Upload content (text or base64 binary) and trigger AI indexing

  • mem_related

    Top-K files related to a file_id by embedding similarity

  • mem_remember

    Idempotently persist an observation, decision, preference, task state, fact, note or artifact reference

  • mem_restore

    Return an archived memory to normal recall

  • mem_resume

    Restore the current task head or a selected historical checkpoint

  • mem_search

    Natural-language search (text / visual / auto fuse); ranked files + snippets

  • mem_task_list

    List bounded resumable-task summaries

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 10d4bf7 · analyzer v33 · 3d ago

skills & prompt files 1

code evidence vv0.1.1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 429

filesystem 13

  • fs (weak) bytefolk-mem-10d4bf7/npm/clean-tarball.test.js :17 } = require("node:fs");
  • fs bytefolk-mem-10d4bf7/npm/install.js :25 } = require("fs");
  • fs (weak) bytefolk-mem-10d4bf7/npm/install.test.js :17 } = require("node:fs");
  • fs (weak) bytefolk-mem-10d4bf7/npm/mem-mcp.test.js :6 const { mkdtempSync, readdirSync, rmSync } = require("node:fs");
  • fs (weak) bytefolk-mem-10d4bf7/npm/windows-shim.test.js :14 } = require("node:fs");
  • fs bytefolk-mem-10d4bf7/web/acceptance.mjs :3 import { mkdirSync, readdirSync } from 'node:fs';
  • fs bytefolk-mem-10d4bf7/web/e2e-smoke.mjs :4 import { mkdirSync } from 'node:fs';
  • fs bytefolk-mem-10d4bf7/web/enrichment-acceptance.mjs :3 import { mkdir } from 'node:fs/promises';
  • fs bytefolk-mem-10d4bf7/web/localization-acceptance.mjs :3 import { mkdir } from 'node:fs/promises';
  • fs bytefolk-mem-10d4bf7/web/localization-audit.mjs :2 import { readdir, readFile } from 'node:fs/promises';
  • fs bytefolk-mem-10d4bf7/web/memory-acceptance.mjs :3 import { mkdir } from 'node:fs/promises';
  • fs bytefolk-mem-10d4bf7/web/theme-acceptance.mjs :3 import { mkdir } from 'node:fs/promises';
  • fs bytefolk-mem-10d4bf7/web/transfer-acceptance.mjs :3 import { mkdir, readFile } from 'node:fs/promises';

shell / exec 9

  • shell (weak) bytefolk-mem-10d4bf7/npm/clean-tarball.test.js :4 const { spawnSync } = require("node:child_process");
  • shell (weak) bytefolk-mem-10d4bf7/npm/install.test.js :4 const { spawn } = require("node:child_process");
  • shell (weak) bytefolk-mem-10d4bf7/npm/mem-mcp.test.js :5 const { spawn } = require("node:child_process");
  • shell (weak) bytefolk-mem-10d4bf7/npm/windows-shim.test.js :4 const { spawnSync } = require("node:child_process");
  • shell bytefolk-mem-10d4bf7/web/enrichment-acceptance.mjs :2 import { spawn } from 'node:child_process';
  • shell bytefolk-mem-10d4bf7/web/localization-acceptance.mjs :2 import { spawn } from 'node:child_process';
  • shell bytefolk-mem-10d4bf7/web/memory-acceptance.mjs :2 import { spawn } from 'node:child_process';
  • shell bytefolk-mem-10d4bf7/web/theme-acceptance.mjs :2 import { spawn } from 'node:child_process';
  • shell bytefolk-mem-10d4bf7/web/transfer-acceptance.mjs :2 import { spawn } from 'node:child_process';

network 10

  • net (weak) bytefolk-mem-10d4bf7/npm/clean-tarball.test.js :173 const https = require("node:https");
  • net bytefolk-mem-10d4bf7/npm/install.js :26 const { get } = require("https");
  • net (weak) bytefolk-mem-10d4bf7/npm/windows-shim.test.js :109 const https = require("node:https");
  • net bytefolk-mem-10d4bf7/web/enrichment-acceptance.mjs :54 const response = await fetch(baseURL);
  • net bytefolk-mem-10d4bf7/web/localization-acceptance.mjs :43 const response = await fetch(baseURL);
  • net bytefolk-mem-10d4bf7/web/memory-acceptance.mjs :50 const response = await fetch(baseURL);
  • net bytefolk-mem-10d4bf7/web/src/lib/api.ts :112 const res = await fetch(url, {
  • net bytefolk-mem-10d4bf7/web/src/pages/FileDetailPage.tsx :705 fetch(url)
  • net bytefolk-mem-10d4bf7/web/theme-acceptance.mjs :42 const response = await fetch(baseURL);
  • net bytefolk-mem-10d4bf7/web/transfer-acceptance.mjs :44 const response = await fetch(baseURL);

declared dependencies 39

  • github.com/go-chi/chi/v5@v5.3.0
  • github.com/google/uuid@v1.6.0
  • github.com/hibiken/asynq@v0.26.0
  • github.com/jackc/pgx/v5@v5.9.2
  • github.com/minio/minio-go/v7@v7.0.77
  • github.com/pressly/goose/v3@v3.22.1
  • github.com/spf13/cobra@v1.8.1
  • golang.org/x/crypto@v0.54.0
  • golang.org/x/sys@v0.47.0
  • golang.org/x/term@v0.45.0
  • google.golang.org/grpc@v1.82.1
  • google.golang.org/protobuf@v1.36.11
  • gopkg.in/yaml.v3@v3.0.1
  • github.com/cespare/xxhash/v2@v2.3.0
  • github.com/dgryski/go-rendezvous@v0.0.0-20200823014737-9f7001d12a5f
  • github.com/dustin/go-humanize@v1.0.1
  • github.com/go-ini/ini@v1.67.0
  • github.com/goccy/go-json@v0.10.3
  • github.com/inconshreveable/mousetrap@v1.1.0
  • github.com/jackc/pgpassfile@v1.0.0
  • github.com/jackc/pgservicefile@v0.0.0-20240606120523-5a60cdf6a761
  • github.com/jackc/puddle/v2@v2.2.2
  • github.com/klauspost/compress@v1.18.5
  • github.com/klauspost/cpuid/v2@v2.2.11
  • github.com/mfridman/interpolate@v0.0.2
  • github.com/minio/md5-simd@v1.1.2
  • github.com/redis/go-redis/v9@v9.14.1
  • github.com/robfig/cron/v3@v3.0.1
  • github.com/rogpeppe/go-internal@v1.14.1
  • github.com/rs/xid@v1.6.0
  • github.com/sethvargo/go-retry@v0.3.0
  • github.com/spf13/cast@v1.10.0
  • github.com/spf13/pflag@v1.0.9
  • go.uber.org/multierr@v1.11.0
  • golang.org/x/net@v0.57.0
  • golang.org/x/sync@v0.22.0
  • golang.org/x/text@v0.40.0
  • golang.org/x/time@v0.14.0
  • google.golang.org/genproto/googleapis/rpc@v0.0.0-20260414002931-afd174a4e478

obfuscation 3

  • dynamic require()/import() bytefolk-mem-10d4bf7/npm/install.test.js :379 const { install } = require(${JSON.stringify(installPath)});
  • base64 decode → exec sink bytefolk-mem-10d4bf7/npm/install.test.js :380 const bytes = Buffer.from(${JSON.stringify(bytes.toString("base64"))}, "base64");
  • dynamic require()/import() bytefolk-mem-10d4bf7/npm/mem-mcp.test.js :121 const { runProcess } = require(${JSON.stringify(wrapperPath)});