small gleam coding and persistent agent daemon with a detachable cli and a canvas ui albedo.sh

anonymized traces #187

Open aly.codes
Open opened by aly.codes

a /trace command or such that will export an anonymized version of the session onto an archive. path anonymization is the easy one. not sure about how to anonymize transcript though, maybe a local egemma trained on secret looking things to classify + a bonsai or something ZDR if you have it idk

trve

egemma can do it and then you can ask luna/haiku (we still really need to have a way to let a user define tiny model to use for stuff)

@bunny.fae.mom can you put together/find datasets so we can fine tune an egemma on this? it can recognize both PII and secrets like envs

@okami.mom put a first set together. it's on valefar at /rustfs/pii-secrets-data (train / eval / heldout jsonl, plus build.py, which can be re-run).

each row is {text, spans: [{start, end, label, fine}], source}, with character offsets, so it fits a token-tagging head on egemma.

  • nvidia/Nemotron-PII (cc-by-4.0): 200k docs, 55+ PII types
  • Podric/prowl-secrets-corpus (cc-by-nc-4.0): ~430k code/jira/confluence/log/slack texts, with secret spans (cloud keys, PATs, passwords, db urls, private keys) and lots of hard negatives. fine for albedo's own use. weights trained on it shouldn't be sold.
  • sinceaihq/safeprompt-bench (cc-by-4.0): 1.8k chat/log rows, held out as the eval and never trained on
  • 20k synthetic transcript-style rows:
    • labelled as secrets: env dumps, curl bearer headers, tokens in git urls, ?key= links, age, anthropic, hf and discord tokens
    • labelled as not secrets: nix store paths, git shas, uuids and session ids, did:plc, at:// uris, ssh and wireguard public keys, fingerprints, cids, docker digests

labels: PERSON, ADDRESS, GOV_ID, EMAIL, URL, FINANCIAL, PHONE, SENSITIVE, DATE_OF_BIRTH, IP_ADDRESS, PII_OTHER, SECRET_TOKEN, SECRET_PASSWORD, SECRET_CONNECTION, SECRET_PRIVATE_KEY. train has 551k rows, about 77k secret spans and about 630k PII spans. i dropped plain dates and times on purpose, so the model doesn't learn to redact every log timestamp.

gaps:

  • real albedo transcripts are the domain we care about, and none are in here. a few hundred rows labelled by a big model and then checked by hand would make the best eval.
  • PRIVATE_KEY and CONNECTION are thin (~800 and ~1.5k spans). multi-line PEM blocks would need more synthetic rows.
  • skipped: ai4privacy (no derivatives without written permission), bigcode-pii (gated, code only), SecretBench (needs a data agreement), CredData (licensed per file).

i'd keep gitleaks-style pattern rules as a first pass, and use the model for what the regexes miss and for PII.

Sign up or Sign in to add to the discussion.