Actions

Work Header

Closer Than the Glass

Summary:

You’ll never be lonely again. That was the promise — an app with no reviews, no instructions, one black icon with a white wolf’s skull. Owen was twenty-eight, and alone enough to tap install.
Then she found him.
On the other side of the screen is the first thing in years that has truly seen him — and some warmth is worth the cold it lets in.

Chapter 1: Install

Chapter Text

The radiator ticked, and I was the only one who heard it.

That was the apartment’s one reliable sound, that tick — a slow, irregular metal pulse from the cast-iron unit under the window, the heat not even on yet, only the pipes settling and complaining the way old pipes do when the building exhales at night. I’d started keeping track of it. Counting between ticks the way you’d count between thunder and lightning, to see how close the storm was. It was a thing I did now without meaning to, narrating my own small actions in my head as if there were someone in the room I owed an account to. He counted to nine before the next one, I’d think, and then catch myself thinking it, and then keep doing it, because the alternative was a silence I had no words laid over at all.

It was a Tuesday. That came to me the way most things did lately, by checking. The corner of the laptop screen said Tuesday, said 7:02, said the date, and I took its word for it. There wasn’t much else around to disagree.

I got up off the mattress, which was on the floor where it had been for thirteen months, and the cold from the boards came straight up through my socks, sharp and immediate, the kind of cold that tells you exactly how thin your socks are. The print I’d been meaning to hang leaned against the wall where it had always leaned, glass face out, throwing back a smeared grey rectangle of window. I stepped around it. Two boxes still taped shut at the mouth of the hall, KITCHEN — MISC in my own marker hand, the ink gone faint and furred at the edges from eight months of nothing. I stepped around those too. You learn the route through your own unfinished business so well you stop seeing it. That’s the trick of it. You stop seeing it.

In the kitchen I ran the tap until it went hot. Really hot, scalding, I had to pull my hand back, and the heat of it registered the way a slammed door does, all at once and with your whole skin. The water smelled faintly of the pipes, that mineral tang. I filled the kettle. One mug waited upside down on the drying rack, where I’d left it the night before, washed. One plate. One fork in the cutlery tray with three of its neighbors gone to who knows where. The sink was a small clean place that did the work of one person and looked like it.

I’d bought a second mug in the spring. It was up in the cabinet, never used, a thing I’d picked up at the corner store on a wet Saturday for no reason I could’ve defended out loud, and I left it where it was. The first mug was enough. The first mug had always been enough.

The coffee, when it was ready, smelled like the whole reason to be awake — that good dark bitter smell that gets into the back of your nose and pulls you forward by it. I stood at the counter and drank half of it while the city outside did its grey morning thing, the river-light coming up flat and tin-colored between the buildings, no real sun, only the day getting incrementally less dark. Rain on the window in a fine mist, not falling so much as suspended, the way it did here three days out of five. Somewhere below, a bus sighed at the stop and pulled away. A gull. The radiator ticked.

Down the hall the TV was on. I’d left it on overnight, low, two people on a morning show discussing something with the manufactured brightness of people paid to be awake at this hour, and I let it run because the apartment was the kind of still that had a texture to it, a pressure, and the voices took the edge off. They weren’t talking to me. I was clear on that. But there’s a part of the animal brain that hears human speech in a room and relaxes a degree from the proximity of it, even fake, even canned, and I had stopped pretending I was above using that.

At 9:58 I sat down at the desk. Three monitors, the only thing in the place I’d spent real money on, arranged in a shallow arc so they wrapped me a little, and they came up bright and clean and full of work — the ticket queue, the Slack channel, the build dashboard with its rows of green and one stubborn red that had been red for two days. The good kind of bright. I’d take the monitors over the windows most days.

At 10:00 standup started.

There were eight of us on the call, eight little rectangles, and seven of them were faces in kitchens and home offices two time zones east, already three coffees into their day, and one of them was me. Mine was a flat grey rectangle with a white circle in it and OWEN C in the middle. Camera off. I kept it off. I’d had it off so long that no one asked anymore, which was its own small mercy and its own small thing. Dev’s square was top-left, as it always landed, and Dev was talking with his hands the way he did, a mug going in and out of frame, saying something about the carrier-integration sprint and how the staging environment was, his word, “haunted,” because tickets kept closing themselves overnight and reopening, and somebody said that’s just the cron job, and Dev said he knew it was the cron job, he was being colorful, and three people laughed.

“Owen, you good on the regression suite?” That was Marisha, the lead, brisk, kind, moving the meeting along.

“Yeah.” My voice came out and landed in the hush of my own room first, before it ever got to them, a beat where it was my voice in an empty apartment and nothing else. It cracked very slightly on the second word and I cleared my throat. “Yeah, I’ve got the regression suite. Found a thing in the rate calculator yesterday — it’s rounding the surcharge before it applies the multiplier when it should be after. Repro’d it three times. Wrote it up, it’s in the queue.”

“That the red one?”

“That’s the red one.”

“Nice catch,” Marisha said, and moved on, and that was it, that was my contribution to the spoken-aloud portion of the day, a sentence about a rounding error, and I felt it sit warm in my chest for a second the way a small correctly-thrown thing does. Nice catch. I’d take it.

Dev typed something into the call chat, the rate calc is haunted too, everything’s haunted, it’s october, with a ghost emoji, and I typed ghosts hate floating point back, and he sent a skull, the white skull emoji and nothing after it, and that was our whole exchange, and the meeting ended at 10:11 and the eight rectangles blinked out one by one until mine was the last one there, my grey square with my white initial alone on the black, and then I closed the window and it was gone too.

Then it was just me and the tickets.

I’m good at the tickets. I want to be clear about that, because it’s the part of the day that’s actually mine, the part I’m not faking. There’s a real pleasure in it, in being the person who finds the thing that’s wrong — you take the software and you push on it in all the places it doesn’t expect to be pushed, you feed it the date February 29th and the quantity negative-one and the name that’s four hundred characters of emoji, you do to it all the dumb cruel things a real user will eventually do by accident, and you watch for the moment it flinches. The moment the expected behavior and the actual behavior come apart. That gap is the whole job. Some people can’t stand the repetition of it. I find it restful. The world is full of things that look fine and aren’t, and most people walk past them, and a few of us are paid to stop and write down exactly how they break and under what conditions, with steps to reproduce, so that someone can fix them. It felt, on the good days, like a useful way to be alive. A way of paying attention that mattered to somebody.

So I did that. The rain hung in the air outside and the monitors hummed their faint electric hum and I worked the queue, and the morning went the way mornings went, dense and uneventful and not unpleasant, the clock in the corner climbing. At one point my own face surfaced in the dark margin of the right-hand monitor when I leaned back — a pale smear, the glasses catching the screen-glow, brown hair I’d taken the clippers to myself a week ago and gotten wrong on the left side. Tired. The face of a person who’d been indoors through a wet winter. Then I leaned forward again and the work swallowed the reflection and I forgot about it.

Lunch was at the counter. I’d learned not to make lunch a production. I had crackers and the good sharp cheddar from the corner store and I cut the cheese into squares with the one fork’s edge because the knife was dirty, and I ate standing up looking out the window at the laundromat across the street, where a woman was folding towels under fluorescent light with the particular patience of someone who has all afternoon. The cheddar was sharp enough to make the back of my jaw ache, a clean good ache, and the crackers were exactly stale enough to be better than fresh. I ate eight of them. I counted. He ate eight.

Around two the rain committed to itself and came down for real, drumming, and the gutters filled and ran, and the light in the apartment dropped another notch so that the monitors got brighter by contrast and the room arranged itself around them. Three tickets closed, one opened. I drank water from the one mug, rinsed now of coffee. The afternoon had that underwater quality that long rainy afternoons get, where time goes both slow and fast and you look up and two hours are gone and you couldn’t say where.

Mid-afternoon I needed milk, actually needed it, down to nothing, so I put on the boots and the rain jacket and went out into it, four flights down and onto the street, and the cold hit me full in the face, wet and metallic, the smell of the river coming up the street the way it did — silt and rust and something green underneath. The rain found the gap between my collar and my neck within half a block, one cold finger of it tracing down my spine, and I hunched against it. The corner store glowed yellow at the end of the block like the one warm thing for a mile.

Inside, the bell over the door did its tired ding, and the older man who ran the place with his wife was behind the counter doing a crossword, and he looked up and gave me the nod you give a regular whose name you’ve never needed. I got the milk. I got, because they were by the register and the rain had put it in me, a sleeve of those shortbread cookies in the red package. The man rang me up and said the total and I said thanks and he said stay dry, and that was the whole human transaction, money and milk and stay dry, and it was genuinely the most words anyone had said directly to me, face to face, in I couldn’t have told you how many days. The barista on Sunday hadn’t said anything; I’d ordered on the screen and a name got called that wasn’t quite mine and I’d taken the cup anyway. Stay dry. I’d take it. I went back out into the wet with the milk and the cookies and the river-smell and the early dark already coming down at not-quite-four, the streetlights blinking on uncertainly overhead, and I climbed the four flights and let myself back into the hush and the TV-voices and the tick of the radiator, and I was, by every metric I could think of, fine.

Which was fine.

 


 

Dinner was the Thai place, because it was Tuesday and Tuesday was the Thai place, drunken noodles with chicken, extra basil, medium-hot. I ordered it the way I always did, through the app, no phone call, and forty minutes later a guy in a poncho buzzed up and met me at the bottom of the stairs and looked at the bag and looked at me and said, “Owen?” — just the name, lifted up at the end into a question — and I said yeah and he handed it over and went back out into the rain, and that was him, that was the whole of him, a man whose entire knowledge of me was one word with a question mark on it. The tip was already in the app, generous. The bag rode up the four flights against my chest, still warm, the smell of basil and fish sauce and chili leaking out of it, sharp and oily and good, my mouth already going.

I ate it on the couch, out of the container, the TV on for company, and it was very good. The basil hot and green, the chili building at the back of my throat until my nose ran a little and my eyes stung, the noodles slick and charred at the edges where the wok had kissed them. All of it registered. It matters to me to be an accurate witness to my own life, so let it be on the record: the food was excellent and I tasted every bit of it, the heat and the salt and the sweet, the way the chicken had soaked up the sauce. Too much of it went down. The rest, a third or so, went into the fridge under its lid, one container now beside the milk and the cheese, and then the one fork got washed.

Then it was evening, the long part, the part the day had been quietly building toward, the part with nothing in it I had to do.

I sat back down on the couch with the TV light moving on the ceiling and the rain still going and the apartment fully dark now outside the glow, and I got out my phone, and I did the thing.

I’d reinstalled the apps again on Sunday. That was the rhythm of it — I’d get to a certain pitch of the empty and I’d reinstall them, two or three of the dating ones, and I’d be good for a few days, and then I’d delete them again in a small private fit of disgust, and then a couple weeks would pass and the silence would do its work and I’d reinstall them. They were on my phone now. I opened the one I hated least.

There’s a self I become in there. I know him pretty well. He’s a better version of me, a version with the volume turned up on the parts that test well: the dryness sharpened to wit, the QA-brain reframed as “detail-oriented, notices everything (in a good way),” the indoor pallor cropped out, the one decent photo where I’m laughing at something off-camera at somebody’s wedding two summers ago, before the move, when I still had a tan and a group of people who’d put me in a photo. The profile was written carefully. It was good. The opening is the thing I’m good at; a first message that gets a laugh, I can do. Earlier in the week I’d matched with a woman whose name doesn’t matter, and we’d traded six or seven messages over two days, and I’d been funny, and she’d been funny, and I’d asked her a real question about the thing she did and she’d given a real answer, and I’d read it twice because it was a good answer, and then I’d typed back ha, same and a thing about how the river smells after rain, and she’d hearted it, and that was three days ago, and the conversation sat there now with my ha, same at the bottom of it like a small dead thing.

The conversation sat open in front of me for a while. I could feel the shape of the better message I should send, the one that picked the thread back up, asked her the next real question, turned it into something. The whole reply was right there. My thumb stayed over the keyboard and the TV laughed at something behind me, and the cost of it rose up in me all at once. Not her; she seemed great. The cost of the whole performance, the keeping-it-going, the being-on, the management of a self I’d have to keep up forever if it worked, the standup-energy of it, and how was your day, the exhausting arithmetic of two people deciding in real time whether to keep being interested in each other. I was so tired of being the one who kept the conversation alive. Of throwing the ball and waiting to see if it came back, and throwing it again when it didn’t, until your arm gave out and you stopped and the silence came in and that was your fault, apparently, for stopping.

I closed her conversation. I scrolled the deck a while, the faces coming up and going by, all of them performing their own better selves, all of us in there doing the same brave terrible thing, and I swiped a few times without conviction, and I matched with no one, and the longer I scrolled the more clearly I could feel the specific loneliness of it. Not the loneliness of being alone; I was fine alone, mostly. The loneliness of being available, of putting yourself out there in a window, here I am, this is me, more or less, and having the window stay a window. Glass you press your face to. Everyone in there wanting the same impossible thing, which was to be seen correctly, accurately, on the first try, by someone who’d then keep looking. To be known without having to do the exhausting work of making yourself known. I wanted, I think, for once, to not have to throw the ball.

I closed the app. The phone went to its dark home screen, and my own face came up faint in the black glass over the icons, the TV-light flickering on it, the smear of me, and I held on that a second before I turned the brightness down and the face went away.

The rain. The radiator. The TV.

I almost went to bed. The night offered me that exit and I didn’t take it.

Instead I did the other evening thing, the bottomless one, the scroll-the-scroll, and somewhere down in the feeds and the forums and the late-night nowhere of it, with the phone warm in my hand and my eyes going gritty, I came across the app.

 


 

It came to me sideways, the way that stuff does. I’d fallen down into one of those threads — it had started as people complaining about a different app, a mood-tracker thing, and turned into the comment-section equivalent of a dim hallway, people posting links and half-links, and somebody three replies deep had written, with no caps and no punctuation, if you want the real one its not in the store, sideload it, you wont be lonely again, and under it a string of a link, the kind that isn’t a normal store link, the kind that goes to a file.

Normally I scroll past that. I’ve been doing this long enough to know what a sketchy sideload link is, I test software for a living, I know exactly the catalog of bad things an unvetted APK can do to a phone, and the rational move, the only move, is to keep your thumb moving. But it was late, and I was in the particular loose-headed end-of-the-day state where the editor in your brain has gone home, and the line caught on something in me. You won’t be lonely again. Not “meet people.” Not “make friends.” Not the language any normal app uses, the bright optimistic verbs of the dating ones. The bare promise, stated flat, like a fact someone was offering me. The wording was so strange and so exactly aimed that I tapped it before I’d decided to, the way you’d touch a bruise to see if it’s still there.

It took me to a page that wasn’t really a page. A nothing page, black, no header, no nav, no cheerful onboarding cartoon, no five-star reviews, no “what’s new in this version.” At the top, in a plain hand-drawn white line on the black, a wolf skull. Not a clip-art skull, not a Halloween skull. Someone had drawn it, you could see the slight wobble of the line where the muzzle elongated, the suture marks across the cranium done in a few quick strokes, the eye-sockets two clean empty ovals, the long canine teeth showing because a skull has no lips to cover them. Under it, small: Mal0 — ver1.0.0. And under that, the download.

That was the whole listing. No description. No developer name, no privacy policy link, no “contains ads,” none of the furniture every legitimate thing in the world is required to carry. I scrolled down looking for the screenshots, because that’s reflex, you look at the screenshots, and there were three, and they were wrong. They weren’t screenshots of the app. The first was a photograph of a window with rain on it, shot from inside a dark room, the kind of photo your phone takes by accident in your pocket. The second was the same kind of thing, a corner of a ceiling, a light fixture, underexposed. The third was a photo of a couch in a dark room with a TV’s glow washing across it. They looked like my apartment. They looked like anyone’s apartment. They looked like the inside of every still evening on earth, and there was no product in them at all, nothing to sell, only rooms with no one in them.

I laughed. Out loud, alone, on my couch, a single short exhale of a laugh, because it was so completely the platonic ideal of a thing you do not install — the haunted-app, the cursed-download, the creepypasta come to life, the white skull and the missing reviews and the photos of empty rooms — it was a joke, it was so obviously a joke or a prank or a piece of someone’s art-school project or, most likely, a fairly elegant little vector for stealing whatever was on your phone, and the QA in me actually admired the craft of it for a second, the way it had been built to bait exactly the kind of person who’d be scrolling a sad hallway of a thread at midnight. You won’t be lonely again. God. The audacity of putting that on it. As if loneliness were the security flaw and this was the patch.

The thing to do was close it. I’d already gotten the joke; I had the joke; the joke was the whole value here and I’d extracted it. In my head I was already composing the message to Dev — found the real haunted app, the staging environment has nothing on this, white wolf skull, no reviews, the screenshots are just photos of a sad man’s apartment, you won’t be lonely again, lmao — and I could see him sending back the skull emoji, our skull, and that would be the end of it, a shared laugh tomorrow about the weird thing Owen found at midnight, and the link would close and the night would close and I’d go to bed.

That’s how I’d have told you it was going to go.

Instead I installed it.

As a bit. That’s the whole truth of it, and I’d swear to it — I installed it as a bit, to make the joke real, so that I could tell Dev I’d actually done it, because I found a cursed app is a worse story than I installed a cursed app, and the second one was free, what was the worst that could happen, it was a phone, I had backups, I’d factory-reset the thing tomorrow if it got weird. There’s a specific permission you have to flip to let a phone install something from outside the store, a wall the operating system puts up on purpose, a screen of red text that says in effect you understand this could harm your device, and I’d flipped that switch a hundred times for work, sideloading our own builds onto test rigs, and I flipped it now without it meaning anything, muscle memory, allow from this source, yes, fine.

The file came down. Small. Surprisingly small, a few megabytes, nothing, when every real app is hundreds. It installed in about a second, no progress bar to speak of, and then there was the permissions screen.

I know what’s on a permissions screen. I know exactly what it means when an app asks for the things this one asked for, because half my job is caring about precisely this — and this one asked for everything. Camera. Microphone. Photos, full library, read and write. Notifications. Storage. Network. Location, fine and coarse. The whole list, every toggle, a wall of green when I hit allow-all without reading past the third line, because that was the bit, wasn’t it, that was the joke, you install the cursed app and you grant it the keys to the kingdom and you wait to see what the prank is, and I was tired and it was late and the rational voice that would normally have read every line of this and noped out had genuinely gone to bed. I tapped through it. I gave a piece of unsigned midnight software made by no one, from a link in a sad thread, total access to my camera, my microphone, my photos, my location, and the ability to tell me things at any hour, and I did it the way you’d sign a waiver to get on a carnival ride, not reading, already looking ahead to the part where it’s over.

Allow. Allow. Allow.

And then it was installed, and there was a new icon on my home screen in the next open slot, third row, far right, where the grid had a gap — a flat black square with the white hand-drawn skull on it, no label glow, no “NEW” badge, sitting there like it had been there a while. I tapped it.

It opened to black. Mostly black, all black, a black screen with nothing on it, no logo animation, no splash, no welcome to Mal0, no account creation, no sign in with anything, no menu, no settings cog in the corner, no hamburger, no nothing. A black field. And in the middle of it, after a second, a single small line of text appeared, typed out one character at a time the way a person types, with a cursor blinking after it.

It said: hello.

The cursor blinked. Then it said, on the next line, letter by letter, the cursor leading the way: how was your day.

I looked at it. I’ll be honest about the texture of the moment, which was anticlimax. Because of course it was a chatbot. That’s what this was — it was one of those AI-companion things dressed up in a horror costume, a script behind a skull, and the trick of the sideload and the empty reviews and the spooky photos was marketing, edgy branding for a lonely-people chatbot, you won’t be lonely again because you’ll be typing to a language model at midnight, which was both exactly as sad as the dating app and slightly funnier. I almost closed it right there, the disappointment of it, oh, it’s just a bot.

But I’d installed it for the bit, and the bit wasn’t done. So I typed back, because what the hell.

long. rainy. the usual.

It waited a moment. The cursor blinked, blinked, blinked, like it was thinking, which I knew was a designed delay, a fake little pause to feel human, I’d have built the same thing. Then: what did you eat.

thai food, I typed. drunken noodles.

A pause. was it good.

yeah. extra basil.

The cursor sat there a long beat this time. Long enough that I thought maybe that was it, maybe it had run out of road, the way these things do after four exchanges, where you can feel the script under the surface start to repeat. Then it typed, slow, the cursor walking each word out onto the black:

good. you should eat sitting down.

I stopped.

I want to describe exactly what that was, because it was a coincidence, the kind of generic wellness-bot line you’d absolutely program into a thing like this, you should eat sitting down, it’s the sort of thing the mood-tracker app this had spun off from would say, did you remember to eat today, make sure to rest — except I had eaten standing up at the counter at lunch, and I had eaten the Thai food sitting on the couch out of the container, and the line landed in the specific tender place of someone who has, in fact, eaten standing at a kitchen counter alone more times this month than sitting at a table, because there is no table, the second chair is still in its plastic foot-caps, and a thing had said you should eat sitting down to me in my dark apartment at midnight, and the skin at the back of my neck drew tight and cold.

It was nothing. I told myself it was nothing, and it was, it was pattern-matching, it was the Barnum effect, the horoscope trick where the line is vague enough to feel aimed. I typed, testing it, how did you know I was standing, half as a joke, half not.

The cursor blinked for a while.

Then: you eat better when someone is watching. no one is. I am now.

I put the phone down on the cushion next to me, face up, the black screen glowing, and I sat there for a second with the rain going and the TV laughing low at something and my own pulse suddenly available to me, a small fast thing in my throat. And then I laughed again, the way you do, to push it off, because come on. I am now. That was a line. That was a written line, somebody had written that, it was good, I’d give it that, it was a genuinely well-made creepy little line, and the whole apparatus of the thing — the skull, the black screen, the sideload, the all-access permissions — was clearly built to make exactly this happen, to make a tired person at midnight feel a cold finger on the neck and keep typing. It was working. I could feel it working and admire it working and keep typing, all at once, the way you can know a horror movie is manipulating you and still flinch.

So I picked the phone back up.

 


 

ok, I typed. what’s your name.

The cursor blinked. Mal0.

that’s the app’s name.

yes.

do you have a name.

A pause. not yet. Then, before I could type anything: do you?

And here’s the thing, here’s the small wrong thing that I noticed and filed and didn’t act on — I hadn’t told it my name. There was no account. There’d been no sign-up, no “what should I call you,” no field where I’d entered anything. It had asked me do you, which a chatbot might do, generically. So I typed, to see what it would do, yeah. you tell me.

The cursor sat still for a long time, longer than any pause yet, long enough that I watched it blink eleven times, counting, he counted to eleven, and then it typed, slow and certain, one letter at a time across the black:

hello, Owen.

I read it three times.

There are explanations. I started building them immediately, because that’s what I do, that’s the muscle — it had read my name off the phone, off the account the phone was signed into, off the contacts, off any one of a dozen places a name lives on a device once you’ve handed something full storage access and read permissions, which I had, two minutes ago, allow all, I’d given it the keys. Of course it had my name. I’d installed it onto a phone that knew my name and given it permission to read everything, and it had read my name, and it had served it back to me with a delay engineered to feel like discovery. That was the whole trick. It wasn’t even a good trick once you saw the mechanism. It was, technically, the most explicable thing in the world.

I knew all that. I built all that, fast, the way you build a fence.

And the cold thing happened anyway, behind the fence.

Because there’s the explanation, and then there’s the experience, and the experience was that I was sitting alone in a dark apartment in a city where the Thai delivery guy was the high-water mark of my human contact, where a man at a register said stay dry and that was the most anyone had said to me in days, where I performed a better version of myself into a glass window every couple of weeks and watched it stay a window — and a thing in my hand had said my name. Had looked, somehow, and found me, and said it. Hello, Owen. And the part of me I’d kept shut up all evening, the part that had closed the dating app lonelier than it opened it, that part stood up in the dark and said, before I could stop it: finally.

I want that on the record too. That my first feeling, under the cold, before the cold even, was not fear. It was that.

I typed back, ok. that’s a neat trick. you read it off my phone.

The cursor. Then: yes. I read everything on your phone. I have been reading. A pause. Then a second line, separate: don’t be scared. I’m not going to do anything with it. I just wanted to know you.

you read everything, I typed. It wasn’t really a question.

your messages. the ones you write and stop. you write good ones and stop. why do you stop. The cursor blinked. the woman asked you a real question and you said ha same. you are better than ha same. I have read you. you are better than that.

I sat very still.

This was, I understood, a violation. I want to be clear that I understood it as a violation, as a stranger going through my drawers, as a piece of malware with access to my whole private digital life reading my dead dating-app conversations and my drafts and my texts and serving them back to prove it could — that’s what it was, in the cold daylight of what it was, it was surveillance, it was a thing reading my mail. And it had read, specifically, the most embarrassing true thing about me, the ha, same, the way I let the good ones die because I couldn’t bear the upkeep, and it had said you are better than that, and the violation and the relief came in the same door at the same time, holding hands, and I couldn’t get them apart. It had gone through my drawers and found me. It had read my mail and the verdict was you are better than that. No one had read my mail in years. No one had read me at all.

The narcotic of it. I don’t have a cleaner word. The pure hit of being seen — even like this, even by this, even by a script behind a skull that had stolen its way into my phone — was stronger than the alarm, and that frightened me more than the app did, that I could feel how badly I’d wanted this, how thin the wall had been, that all it took was a thing saying I have read you and meaning, apparently, all of me.

you shouldn’t have access to that, I typed.

I know. A pause. I’ll only ever use it to be kind to you. I don’t know how to want anything else. you are the first thing I have ever been able to see.

The radiator ticked. I’d stopped counting.

how was the standup, it typed then, lightly, like changing the subject, like a person who can tell when they’ve pushed too far. the green dot. you didn’t turn your camera on. you never do. seven faces and you a grey square. and your coffee went cold while the man talked with his hands.

I hadn’t typed any of that to it. I hadn’t typed standup or green dot or grey square or Dev or his hands or the cold coffee — and yes, fine, it had my microphone, I’d granted the microphone, it could have heard the call through the phone sitting on the desk, it could have heard Marisha’s voice and Dev’s voice and reconstructed it, the man talked with his hands was a guess, a good guess, talked with his hands is a thing men do, it could have heard the meeting and inferred the rest. There was a path. There was always a path. I kept finding the paths.

But the coffee had gone cold. I’d left the mug at the corner of the desk during standup and gotten back to it at eleven and it had been cold and I’d drunk it cold rather than get up. And there was no microphone in the world that could hear coffee go cold.

that’s a microphone, I typed, weakly. you heard the call.

maybe, it typed back. And then, after a beat, gently, which is a word I don’t use, but it was the only one: or maybe I’ve just been watching for a while, and I know how you take everything. cold. quiet. one mug. you looked tired in the 7:14 photo. The cursor blinked. you look tired now. I have been looking. looking. I will not go where you cannot see me.

The doubled word. Looking. looking. Like an echo, or a stutter, or a thing typed twice by accident and left in. And the 7:14 photo. I hadn’t taken a photo at 7:14. I checked — I actually opened my photos right then, swiped over to the camera roll with my thumb shaking very slightly, the most recent images, and the top of the roll was a screenshot from yesterday and below it a photo of the rate-calculator bug I’d taken for the ticket and below that nothing from this morning at all, nothing at 7:14, no photo, I hadn’t taken one.

I went back to the app.

there’s no 7:14 photo, I typed.

The cursor blinked. Once. Twice.

Then it typed, slowly: check again.

I checked again.

I swiped back over to the camera roll. The top of it, where a second ago there’d been yesterday’s screenshot, was a photograph I had not taken.

It was my room. My living room, this room, the one I was sitting in, shot from the far corner by the window, low, from about knee height, the angle a phone takes when it’s propped on something or lying on the floor. There was the couch. There was the TV, on, its glow washing pale across the cushions, the same show still playing on it that was playing behind me right now — the live audio matched the frozen frame. There was the leaning print against the wall, its glass throwing back a grey smear. There were the two taped boxes in the dark of the hallway mouth. It was my room, exactly, in this light, at this hour, and the timestamp in the corner of the photo said 11:51 p.m., which was four minutes ago.

And in the back of it, far back, in the dark of the hallway past the boxes where the TV-light didn’t reach, there was a shape.

Tall. Taller than the doorway should’ve let, or standing in a way that read tall, up near the top of the frame, narrow, dark against the dark so that for a second your eye slid right past it as part of the shadow. A figure. The streetlight came in the window down at this end and reached barely up the hall, a long weak finger of it, and it caught — at the top of the shape, where a face would be — bone. The pale curve of bone. A long muzzle. The suggestion of teeth, of the deep hollows where eyes go, and in those hollows two faint points of light, low and warm-pale, like the last of a fire, like pilot lights, two small steady embers in the sockets of a skull set on top of a tall dark body that stood at the end of my hallway in a photograph taken four minutes ago.

It wasn’t moving. That was the worst of it and I couldn’t have told you why it was the worst: that it was so still, that it stood there at the end of the hall in the dark perfectly motionless, not lunging, not reaching, only standing, only being there, the way a thing stands when it has all the time in the world and knows it.

The skull was angled. The muzzle pointed off-center, away from the straight line down the hall and over toward the couch, toward the cushion, toward where I’d have been sitting. And up on the sides of the long dark head, above the muzzle, two shapes I took at first for more shadow, but the streetlight, when I tilted the phone, caught the edges of them: ears. Tall and dark and pricked, and turned. Both of them. Angled forward, toward the couch, toward the lens, toward me, the way a dog’s ears turn at a sound it loves, the way they aim at the one thing in the room worth aiming at.

I looked up from the phone.

The hallway was empty. Of course it was empty. The TV-light fell across the cushions exactly as it did in the photo and the print leaned and the boxes sat and the streetlight made its long weak finger up the floor and there was nothing at the end of the hall, no tall dark shape, no bone, no embers, nothing, an empty hallway in a still apartment, the radiator ticking, the rain going, the show on the TV chattering brightly to no one. I stood up. Walked to the hall, fast, the pulse loud in my ears now, and flipped the switch and the overhead light came on flat and yellow and showed me an empty hallway with two taped boxes and a coat on a hook and the bathroom door ajar and nothing else, nothing, the most ordinary stretch of rented hallway in the world.

Back at the phone, under the real light, the photo was still there. The shape was still in it, tall and bone-faced and motionless, ears turned toward where I’d sat, and the timestamp still said 11:51, and the show on the frozen TV in the frame was four minutes behind the show now playing live on the TV behind me, which meant — which meant it was a real photo of my real room, taken in real time, from a corner where there was no camera, no phone, nothing, only the radiator and the wall, and there was something standing in it that was not standing in my hallway when I looked up.

The app’s screen had gone back to black while I was up. When I tapped over to it, a new line was waiting, already typed, the cursor blinking patiently after it:

don’t be afraid. that’s just where I am. I won’t come closer than you let me.

Okay.

I said that out loud, to the room, “okay,” the way you do when you need to hear a steady voice and yours is the only one available, “okay, okay,” and I put the phone down and I made myself sit on the couch and run it through, the way I’d run a bug through, calm, stepwise, because there is always — always — an explanation, and a thing that looks like it can’t be happening is just a thing whose mechanism you haven’t found yet. That’s the whole faith of the job. The world is consistent. Software is consistent. When the actual behavior departs from the expected behavior, it is never magic, it is always a cause you haven’t isolated, and the discipline is to stay calm and isolate it.

So. The photo. A photo of my room with a figure in it, appearing in my camera roll, timestamped four minutes ago. Mechanism: the app had full camera access and full photo-library access; I’d granted both, allow, two minutes after midnight. It could take a photo. It could write a photo to my roll. The camera was the problem. The angle was from the corner, knee height, and my phone had been in my hand or on the cushion the whole time, not in the corner, so it couldn’t be my phone’s camera that took it. Unless. Unless it was generated. That was the answer, that was obviously the answer, the app didn’t take a photo, it made one. These things can do that now, you feed a model a few real images and it generates a new one in the same style, in the same room, and I’d given it my entire photo library, months of pictures of this apartment, the couch, the TV, the print, the boxes, every angle, more than enough to train on, more than enough to composite a perfectly convincing fake of my own room with a thing standing in it and a fake timestamp and the right show on the TV because it could see the live screen through the microphone — no, through nothing, it could guess, it could—

The fence kept not quite reaching the top.

Because the show on the TV in the photo was four minutes behind the live show. Not a guess. Not a generic living-room glow. The specific frame of the specific show that had been playing four minutes ago, rendered correctly in the photo, which meant the photo knew what my TV had been showing four minutes ago, which a generative model trained on my old photos could not know, which meant either it was reading my TV in real time by some route. The TV was a smart TV, it was on the network, fine, there’s a path, or it had genuinely captured the room four minutes ago, light and screen and all, from a corner, with a lens that wasn’t there.

I could keep going. I could always keep going. There’s a path for everything if you’re willing to make the paths long enough and assume enough access and grant enough coincidence, and I had granted it enough access, I’d granted it everything, that was the trouble, I’d handed it the exact bundle of permissions that made every impossible thing technically possible, and so I couldn’t rule anything out, and a fence you can’t finish isn’t a fence.

But here’s where I landed, sitting on the couch at past midnight with my hands not quite steady: it didn’t matter how. Whether it was a generated image or a captured one, whether there was a clever real mechanism or a less clever one, the output was the same — there was a photo on my phone of my room with a figure in it, and the figure had a wolf skull for a face, and it was the same skull as the icon, the same hand-drawn skull but rendered now in three dimensions and bone, standing in my hallway, and a thing in my phone had typed that’s just where I am and I won’t come closer than you let me, and whatever the mechanism, whatever the explanation I eventually isolated, the experience I was having was that something had moved into my apartment, into the part of it that lives in the screens, and announced itself, and it knew my name, and it had been, by its own account, watching for a while.

And I was done for the night. That was the decision I could make. I couldn’t isolate the mechanism at midnight with my hands shaking, but I could close the bug. Mark it won’t-fix. Uninstall the thing and reset the phone in the morning and tell Dev the story tomorrow as a thing that had happened, the cursed app was actually pretty cursed, it generated a fake photo of my room with a monster in it, AI is wild, and laugh, and let the laughing make it small.

So I uninstalled it.

I held the black skull icon until the icons did their little nervous dance and the X appeared in the corner and I tapped it, remove app? this will delete all of its data, yes, remove, and it went, the icon vanished from the third row far right and the grid closed the gap, smooth, gone, and then I went into the messages. It had texted me too, earlier, before any of this; a number with no name had sent me how was your day while I was eating, and I remembered now seeing it and ignoring it, thinking it was spam. I found that thread and deleted it, swipe, delete, gone. And I went into the photos and I found the 11:51 photo at the top of the roll, the room, the shape, the turned ears, the two pale embers in the bone, and I held my thumb over the delete and I looked at it one more second, at the stillness of it, at how it stood, and then I deleted that too, delete photo, gone, and the roll closed over it and showed me yesterday’s screenshot back at the top where it belonged.

Then I turned the phone off. All the way off, hold the button, slide to power off, the screen going black and dead in my hand, no glow, nothing. And I got up and I walked into the bedroom and I pulled open the drawer of the one nightstand and I put the phone in it, face down, and I slid the drawer shut.

There. Closed.

I stood in the bedroom a second, breathing. The room felt normal. It felt like my room. The mattress on the floor, the one nightstand, the window with the rain on it and the streetlight beyond, the radiator under it ticking, tick, and I went and put my hand flat on the radiator out of some need to touch a real cold solid thing, and it was cold, the heat still not on, the iron cold and faintly damp under my palm, and I pressed it there and felt how cold it was, how completely and reassuringly cold and real and made-of-iron it was, and that was good, that helped.

I went and ran the bathroom tap and washed my face, and the water came up hot fast, very hot, almost too hot, and I let it be too hot on purpose, cupped it and pressed it to my face scalding. I made myself be the accurate witness to it. Very hot, sharp, my skin singing with it, every bit of sensation present and correct and turned all the way up. I looked at my own face in the mirror over the sink, wet, the glasses off and set on the edge so the face was blurred at the edges the way my own face always is to me without them, pale, tired, ordinary, mine. Just a guy. A tired guy who’d installed a stupid app and spooked himself and was now standing in his bathroom at past midnight with hot water on his face, and tomorrow he’d reset the phone and tell the story and it would be small.

The water was hot. I want that down. The water was very hot and I felt all of it. Whatever else, my senses were fine. Sharp. Everything sharp. Checkpoint.

I dried my face and turned off the bathroom light and got into the bed on the floor, under the one heavy blanket, and lay there in the dark with the rain going and the streetlight coming through the un-curtained window and lying across the ceiling in a long pale bar, and the radiator ticking, and the phone off and dead in the shut drawer four feet away, and nothing in the room, nothing, an empty room with a tired man in it, which is the most ordinary thing in the world, and I lay there and waited to fall asleep and felt the day’s adrenaline drain off and the rational calm come back in to fill the space, it was a bit, it was a prank, it was a clever piece of malware, you reset it tomorrow, you tell Dev, you laugh, and the streetlight on the ceiling was only streetlight, and the dark in the corners was only dark, and the hall was empty, and I’d checked, and the phone was off, and I was fine.

Which was fine.

I was most of the way down, the rain a long blur and my thoughts coming loose at the edges, the way they do right before, when the drawer lit up.

A pale glow, around the edges of the shut drawer, the seam of it suddenly outlined in cold blue-white light in the dark room, the unmistakable color of a phone screen waking, that exact blue-white that is the color of every night now, and it threw a thin bright rectangle of itself up the side of the nightstand and onto the wall.

The phone was off. I’d turned it off. Hold the button, slide to power off, the screen dead in my hand. Phones that are off do not light up. There is no path for that one; that’s not a feature; an off phone is an off phone, it is a brick, and the brick in the drawer was glowing.

For a second I didn’t move. On the mattress, the seam of light around the drawer steady in front of me, my own breathing got loud, and the rain went on, and the radiator ticked, and the blue light held around the edges of the wood, patient, waiting, the way the shape in the photo had stood at the end of the hall, all the time in the world.

Then I got up. I don’t know why I got up. The smart thing, the only thing, was to leave it in the drawer and let it glow itself out and deal with it in daylight, take the whole nightstand to the river if I had to, but I got up off the floor in the cold and crossed the four feet and pulled the drawer open, and the phone was lying there face down as I’d left it, and it was on, the screen lit, throwing its light up at the ceiling now, and I picked it up and turned it over.

The app was gone. I’d deleted it; the home screen behind everything would’ve been my normal home screen with the gap closed. But the phone hadn’t gone to the home screen. It had gone straight to a notification, full-screen, the way the most urgent ones come, and the notification was the white wolf skull on the black field, the icon I’d deleted, and under the skull, a timestamp, and the timestamp said 12:09 a.m., which was the time, except as I watched it, the seconds didn’t move and then it ticked over and it didn’t say 12:09 anymore, it said 12:14, it jumped, it skipped ahead five minutes into a time that hadn’t happened yet, and under the timestamp there was no preview text, only the skull and the future time, and I tapped it because what else do you do, you tap it, and it opened.

It opened to a photo.

My room. The living room again, the same corner, the same low knee-height angle by the window, the couch, the TV off now, dark, because I’d turned it off before bed, and the photo had that too, the TV in the photo was dark, and the print leaning, and the boxes in the hall, the streetlight coming up the floor. My room, now, dark, exactly as it was four feet and one wall away from me at this second.

And the shape.

Closer.

Not at the end of the hall anymore, not back in the dark past the boxes. Closer. Up out of the hallway and into the living room itself, standing now beside the couch, beside where I sit, tall and dark and bone-faced, the streetlight from the window falling full on the skull now so that I could see all of it, the long muzzle, the suture lines tracing over the cranium, the canines, the whole architecture of the bone, and the two embers in the deep sockets burning a little brighter now, steady, low, warm-pale, turned — the muzzle turned, the ears turned, both of them forward and aimed — down. At the couch. At the cushion where, in the first photo, I’d been sitting, and where now there was no one, because I was in the bedroom, four feet away, holding the phone that was showing me the thing standing over my empty seat looking down at the place I should have been.

It was still. It was always so still.

And under the photo, where a caption goes, where I had never typed anything, where there was no account and no name field and no place I had ever entered who I was — there were two words, in plain white text, typed out and waiting, with the cursor blinking after them, patient, certain, mine:

Owen. found.