## ProjectOrpheus
Memory capture and replay for conversational continuity.
Version 0.1.0 — Initial Release
## Overview
ProjectOrpheus captures and indexes memory fragments using audio prompts, image recognition, and conversational pattern-matching. It is designed to help users retrieve and replay personal memory sequences through structured trigger inputs.
This project is in active development. Contributions welcome.
## Installation
```bash pip install orpheus-memory==0.1.0 ```
Requires Python 3.9+. Tested on Ubuntu 22.04 and macOS 13. See `requirements.txt` for full dependency list.
```bash pip install -r requirements.txt ```
## Usage
```python from orpheus import MemoryCapture, AudioMatcher
# Initialize capture session capture = MemoryCapture(user_id="participant_001")
# Load audio prompts matcher = AudioMatcher(model="orpheus-base-v1") matcher.load_prompt_library("./prompts/family/")
# Begin replay session capture.replay(prompt="tell me about the rockets") ```
## Contributing
Pull requests are welcome. Please include tests.
```bash pytest tests/ -v ```
## Known Issues
- [ ] Audio prompt latency exceeds 200ms on low-bandwidth connections - [ ] Memory indexing fails silently when input images are corrupted
## Roadmap
- `v0.2.0` — Improved audio pattern matching for conversational fragments - `v0.3.0` — Multi-session memory indexing with longitudinal tracking - `v1.0.0` — Full release with caregiver-facing interface
## License
MIT License. See `LICENSE` for details.
She pushed the commit at 11:47 PM on a Thursday — not a meaningful hour, but a reasonable one, late enough to mean she'd finished something and knew it. She'd written the first functional version of the audio-matching module two weeks earlier, then set it aside because the dependency chain had an ambiguity she didn't like, a version conflict between the pattern-matching library and the audio preprocessing stack that resolved itself if you installed them in the right order but threw a cryptic warning if you didn't. She'd fixed the installation sequence, updated the documentation, written a test for the edge case, and only then let herself consider the project ready to exist publicly. That was how she worked: dependencies first, then function, then documentation, then tests, then release. In the correct order.
Her apartment was quiet in the way apartments get after ten PM on weeknights — the building's ordinary sounds cycling down, the street outside settling into the dry November hum of cars and rain. She had the overhead lights off and the desk lamp on, and the laptop screen was dark-mode: white text on near-black, the terminal's green pass indicators blinking once as each test completed. Forty-one tests. Forty-one green checkmarks. She ran them twice, not because she'd changed anything but because it cost nothing to be sure.
The second bedroom door was closed. It had been closed since April. She didn't look at it.
She typed `git push origin main` and held enter for a half second before pressing it, the small delay she'd had since the first time she pushed code to a live production server at twenty-six and a senior engineer had stood behind her and said "You sure?" as a formality, not a challenge, and she'd understood that the pause was a form of respect — for the system, for the fact that actions have consequences. Then she pressed it. The terminal printed the confirmation. Version 0.1.0 of ProjectOrpheus was live on GitHub, public, with an MIT license and a README that told anyone who found it what it did and how to install it and what she planned to do with it. She closed the laptop and got a glass of water and went to bed at a reasonable hour, and Sunday she drove up to Northeast Portland in the gray eleven o'clock light, the kind of November sky that wasn't quite raining but kept threatening to.
She took the Morrison Bridge, then cut north on MLK, and the streets in Martin's neighborhood were quiet in a Sunday way — two people walking a dog, a kid on a bicycle, a man she didn't recognize raking leaves from a maple that had gone entirely gold. She pulled into the driveway behind her father's Subaru and sat for a moment with the engine off — not dread, something closer to the pause before a system initialization, the command queued, waiting for the prompt. It had started six months ago, appearing so gradually she hadn't noticed it until one Sunday she caught herself sitting in the car for three minutes without knowing why. She went in through the side door to the garage, as she always had since she was eleven years old, when her father had first unlocked the side door and handed her a pair of safety glasses and said "The trick with a soldering iron is you trust the heat and you go fast," and she'd understood immediately that she was being let into something important.
The garage was a detached structure at the back of the lot, Craftsman-era, its wood siding painted the same taupe as the main house. Inside: the long workbench along the back wall, the pegboard above it with tools hung on labeled hooks — NEEDLE-NOSE in Sharpie on a strip of masking tape, WIRE STRIPPER, VOLTAGE METER — and beneath the workbench, decades of cardboard boxes holding components that might be useful someday. There were scorch marks on the concrete floor to the left of the workbench, model rocket burns, three of them in an irregular triangle, from a summer when she was thirteen and her father had been testing igniters on the garage floor because the backyard had been too wet; she'd helped him strip the wire leads. She could remember the smell of the propellant — a specific chemical sweetness, not quite like anything else — and now, opening the side door, she got the ghost of it: the underlying smell of the garage, solder flux and old lubricant and the dry must of the cardboard boxes, which was not that smell but contained its memory the way a chord contains a note. She stood there for a moment with the door open and the November air coming in behind her, then went inside.
Martin was in the recliner by the front window, the one with the good afternoon light, though on a gray Sunday it was giving him more of an overcast glow than actual sun. He was reading — she could see the book open across his lap, spine bent, the reading glasses she'd gotten him last Christmas that he kept losing and that she kept finding on the kitchen counter. He looked up when she came in and his face did the thing it did on good days, the thing she'd been cataloguing for fourteen months without fully admitting she was cataloguing it: it opened.
"There she is," he said.
"Here I am."
She pulled the desk chair over and sat across from him, and he set the book down with the careful deliberateness of someone who was aware he was setting something down. He'd been a physics teacher for thirty-two years at Lincoln High School, and he'd had, his whole adult life, the same attention to physical objects — placing his glasses exactly in the center of whatever surface was closest, aligning things with edges, giving each object its location. She had it too. She'd never said so.
"Tell me about the project," he said.
She pulled out the laptop. She'd thought she'd just be visiting, but she'd brought it anyway, which perhaps told her something. She opened the terminal and pulled up the architecture diagram she'd been working on — a flowchart of the system components, colored boxes connected by labeled arrows, the audio-matching module talking to the memory-indexing module talking to the prompt-generation layer.
Martin leaned forward. He was sixty-one, and he'd always been lean, the kind of lean that looked like intention rather than deprivation, and he was still mostly himself today — his posture was good, his attention was focused, and when he leaned toward the screen she could see him actually looking at it, not performing looking.
"What's that," he said, pointing at the box in the upper left. "The one with the arrows going both ways."
"That's the audio matcher. It takes input from the prompt — something you say, or a phrase I give it — and it compares that against the indexed memory pool. The arrows go both ways because it updates its own scoring weights as it finds matches. It learns what's a good prompt for a given memory."
"A feedback loop."
"Exactly."
He studied the diagram for another moment. His finger, which was steady today, traced the line from the audio matcher down to the memory indexer. "And this one."
"Memory indexing. That's where the captured audio fragments get stored and tagged. It's the hardest part — the tagging — because you can't just keyword-index conversation the way you'd index text. You have to pattern-match the emotional contour of what someone's saying, not just the words."
Martin made a sound that she'd grown up understanding as the sound of him genuinely considering something, a short exhale through his nose while he looked at the thing in question. "That's elegant," he said. "I don't know exactly what it does, but I can tell it's elegant."
She showed him the audio-matching function — the actual code, not just the diagram — and he didn't understand the syntax but he understood structure. He'd taught physics for three decades and physics was, among other things, the discipline of understanding how things fit together, and he'd always been able to tell when something fit. They talked about it the way they used to talk about the model rockets: the relevant principles, what you were trying to optimize for, the interesting failure modes.
"What made you want to build it," he asked.
She almost said the true thing. "I wanted to see if it was possible," she said instead.
"That's usually the right reason." He leaned back in the recliner. "What's it called?"
"ProjectOrpheus."
He turned that over. "The musician who went to get his wife back from the underworld."
"Went to retrieve her. Yes."
"And couldn't stop himself from looking back." He nodded, the considered nod of a man who had spent thirty-two years explaining things to teenagers and knew when a metaphor had done its work. "That's a lot of pressure to put on a software project."
"I know," Elena said. She showed him the roadmap, the version increments, and he asked good questions and she answered them, and twenty minutes later he gestured at the laptop screen, which she'd left open to the diagram. "The one on the left — what does that do?"
She told him about the audio matcher. Feedback loop, she said. It learns what's a good prompt.
"That's elegant," he said. "I don't know exactly what it does, but I can tell."
The words were exactly the same. The same intonation, the same pause before "elegant." She watched his face and it had the same quality of genuine attention it had the first time — he wasn't repeating himself with the slight rote quality of producing sound without the thought behind it. He was saying it fresh, with the same interest.
She answered his question as if it were the first time. She told him about the audio matcher. She explained the feedback loop. She said it learns what's a good prompt.
"Interesting," he said, and looked at the diagram, and she kept her hands flat on the keyboard.
On the bridge heading south, the Willamette was the color of old pewter, flat and wide under the gray sky. She drove with both hands on the wheel and thought about the afternoon by making it precise.
He'd asked the same question twice. Twenty minutes apart, same words, same intonation. She'd noticed the gap — logged it as a timestamp against which future events could be measured. A known issue: a behavior that was present, documented, not yet critical. You tracked known issues. You didn't panic about them.
She drove.
At home she opened the laptop before she took her coat off. The terminal was still open from the evening before — she'd minimized it but not closed it — and the commit message field was empty, cursor blinking. She thought about what to write. She always took the commit message seriously; careless commit messages were a form of disrespect for the record, the same as careless variable names were for the person who'd read the code later.
She typed: `Initial commit. Let's fix this.`
She looked at it. The "Let's" was her father's — he'd said it that afternoon, early in the visit, before she'd shown him the architecture. She'd asked him what he thought of the project idea, the general concept, and he'd said "Well, let's fix this" in the way he said it when a student brought him a problem that looked intractable: warmly, without false confidence, meaning not that it was solvable but that solving was the thing to do. She pushed the commit, and then she was sitting in the kitchen with the laptop closed on the table and the overhead light off, and the refrigerator was running, its hum the ordinary hum of a machine doing the thing it was built to do, reliable and continuous and not something you thought about until the silence was complete enough to hear it. She sat there for a while. Outside, a car passed. The refrigerator cycled. She didn't get up.
The known issues list was empty. It had one placeholder, a comment she'd put in the file when she created the template: `# Known Issues — add as discovered.` She'd been meticulous about leaving it clean, professional, a proper document. She'd add to it when there was something real to add.
She sat in the dark kitchen and listened to the refrigerator and did not think about what to add to the list.