Repository navigation
Complete EternalChat provider, device and browser workflows - #1
Merged
Merged
Conversation
The log is now the memory as the model reads it: summary blocks open into their halves down to the original message, recent messages show whole. Live thinking, recall traces and streaming replies; slash commands with /zoom that reveals any message; agent tabs with transcripts; memory and settings sheets; theme, notifications, dictation, a QR code for phones. The page installs as an app (manifest, service worker, icons). The server can answer to an HTTPS proxy's name (--allow-host) or listen beyond this computer (--host), and gains /api/agent and reasoning effort switching. docs/home-server.md covers Tailscale and a LaunchAgent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
deploy/fly.sh creates, deploys and checks a single auto-stopping machine with the chat and the Codex/Claude Code logins on a volume (docs/fly.md); doctor reports each part with its fix, backup downloads a verified copy. The server now answers to the Mac's Bonjour .local name (scutil), which differs from the host name a router may give, and prints the Wi-Fi link only for an advertised name. The page suggests full Claude model names and explains how a new device connects. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The engine awaits the new machine adapter for the device tools in every connection mode (API, Claude Code, Codex), so the CLIs' own tools stay off and one implementation serves all three. Each caller works in its own folder under ~/.eternalchat/work; every command runs in its own process group, which a stop or closing the chat ends; secrets stay out of its environment; writes and edits answer unified diffs. --tools auto|off and --work are saved settings, switchable in the page, which renders commands, outputs, numbered file lines and diffs, and warns when commands run on a plain-HTTP network page. The per-request budget grows to 600 KB for tool turns. Contract adapted from UniiChat (THIRD_PARTY_NOTICES.md). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
spawn starts one named agent per task, in parallel, with the chat's memory and the computer's tools but not spawn or tell, at most eight at work. tell steers a working agent between its tool calls, or continues a finished one from its transcript; each reply has its own event ID, so a crash never loses or repeats one. An agent's effort reaches the subscription CLIs per call. The page describes both calls in traces. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
After each successful turn with no message waiting, a tool-less check asks whether the chat shows the goal fully satisfied; unmet, a message asks for another turn, at most 30 in a row before the goal waits for the user; met, a note ends it. The goal is saved with the chat (goal.json). Terminal and page commands, a header chip with Halt, and /api/goal and /api/halt. Adapted from UniiChat's goal check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
history.py reads Claude Code's and Codex's logs on this computer and the websites' exports (zip or conversations.json): each session becomes a note naming it, then its messages with their own dates, the person's words and the replies, tool calls only on request, never thinking; keys, tokens and private keys are redacted first. Engine.import_chats appends them and keeps each session's last date, so importing again brings only what is new. eternalchat import-chats shows what it found and its summary calls, then asks; the page's Settings scans, lets you pick sessions, and imports. Reading after UniiChat's Import.ts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
eternalchat device URL#TOKEN joins a chat elsewhere without opening one: it receives jobs over an event stream, runs them with its own Machine in its work folder, and posts each answer; a lost connection joins again. The devices adapter routes each shell, read, write and edit by its optional device field (none: the computer EternalChat runs on), lists the computers after the view, forwards stops, and fails the calls of a computer that leaves. Joined computers outlive reopening the chat. The page lists them and offers the join command to copy. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Complete the remaining EternalChat workflows while retaining our own implementation: subscription/API model configuration, remote terminal access, reconnect-safe devices, screen agents, browser imports, independent sessions, push notifications, and recorded-audio transcription.
Harden goal evaluation, subprocess cleanup, credential handling, and session revocation. Document setup and verification evidence, include the upstream license notices, and remove the completed parity plan. Native iOS/Xcode and the share extension are outside the required scope; the existing native prototype is optional.
Validation:
Live browser push/transcription, macOS screen permissions, and the quota-blocked Claude subscription baseline remain tracked verification tasks. Docker deployment and native UIKit builds have not been validated.