Skip to content

Context

One filesystem for project knowledge, memory, learning, code and Skills.

Context lives in the Synoec area sidebar. It shows the current workspace as three roots — Shared, Chats and Projects (one folder per registered project) — and lets you browse, search and import source material that agents can cite. Browsing never switches the active chat or gives an agent access to a sibling project. To see another workspace, switch workspaces first; Context has no selector of its own.

Control What it does
Context tree The chevron expands or collapses a folder in place; the row opens it. A spinner marks a slow load; a warning icon retries a failed one
Search Opens Search context… for the selected project or Shared; Find runs it, Clear returns to the tree
Refresh Rereads the selected item; what is shown stays until the new copy arrives (Updating…)
Location A breadcrumb such as Shared › skills; select a segment to go up. Click after it, or press ⌘L, to type a synoec://context/ address
Copy address Copies the selected address
Preview / Source For documents and records: readable content, or the original source
Details & provenance Address, revision and kind, the record’s metadata, and a folder’s source listing

Each item opens as one card with its title, a status line (item count or kind, trust and scope) and its actions. Context keeps what it has read while the Profile and workspace stay the same, so returning to a folder shows the last copy at once while it rereads.

Folder Contents
memories Scoped memory: facts, preferences, decisions, handoffs, entities, events. Add memory, Edit memory, Pin, Trust…, Forget…, History
learning Accepted lessons, lessons awaiting review, and history. See Learning
code Every indexed file in the checkout, folder by folder. Folders open from the last finished index while a newer one builds behind them. Code map and Index settings open the Repository views inline
skills Effective Skills: first-party and user Skills under Shared, project sources under a project
instructions Effective project guidance (AGENTS.md, .synoec/instructions.md)
resources Text and document files in the registered checkout, read in place
library Imported originals, extracted sections and generated summaries
sessions Saved conversations; Open source chat jumps to the thread, Commit this chat queues a session commit
commits Session commits: summaries and proposed memory changes to Apply, Dismiss or Revert applied changes
recall What recall chose for your recent turns: who decided, the queries, what was injected, what was left out and why. Your view only

Shared and Chats show only the folders that apply to them. Chats holds memory and learning shared by the workspace’s Quick Chats. Workspace-level facts stay under Shared and are inherited by chats and projects.

Addresses use workspace and project IDs; code adds a checkout identity. They are in-app addresses; Synoec registers no OS URL handler.

synoec://context/workspaces/<workspace>/shared/skills/<identity>
synoec://context/workspaces/<workspace>/projects/<project>/memories/facts/<title>~<id>.html
synoec://context/workspaces/<workspace>/projects/<project>/code/<checkout>/<path>
  1. Select a project’s library folder and choose Import document….
  2. Pick a Source type:
    • Document · local extraction — PDF, DOCX, PPTX, XLSX, OpenDocument, text, HTML and CSV, extracted on this computer with no model.
    • Media or scanned PDF · model extraction — sent to the chat’s model; the text is labelled model-derived.
    • Web page · HTTPS snapshot — a fetched snapshot of an HTTPS URL.
  3. Enter the Project file or Source URL and choose Import snapshot.

From resources, Keep snapshot in library (or Extract media to library) imports a checkout file. The original stays in place; the library keeps a revisioned copy with section locations and digests.

On a library item or folder:

  • Generate summary / Generate overview use the chat’s model and count as ordinary provider usage. Changing the source or the model invalidates the cached result.
  • Find durable memories drafts memory candidates that quote the source exactly. They stay out of recall until you trust them, and drop out again if the source changes, is removed or loses its disclosure grant.
  • Remove from library deletes the snapshot (revision-checked).

Searching Context without choosing a folder reads the context index: one row per memory, lesson, Skill, instruction file, library document, session commit and upper code folder, each with a one-sentence abstract and an overview. Matches combine word search, semantic similarity and exact code matches. Semantic similarity uses Context embeddings from Settings → Memory: local MiniLM by default, or your configured embedding API, which then receives these items and queries. Each embedding identity builds its own index; if embedding is unavailable, search is lexical.

The index is derived. It is rebuilt from its sources as needed and never replaces them. Listings show abstracts; open an item for its full text. Imported documents without a summary get one in the background from the chat’s model, at most two per pass and 20 per engine process.

Agents call ContextList, ContextOpen and ContextSearch under normal tool policy, and ContextIngest for imports. Their view holds only their own project and Shared: no review-pending memories, unaccepted lessons, forgotten records, sibling projects or other chats’ transcripts. Skills are discovered here but loaded through SkillRead. To see what fills a chat’s context window, open Context in the thread rail.

Every Context step is automatic; there is nothing to switch on. Before each turn Synoec plans what to recall from the context index. By default fixed rules search memories, accepted lessons and library documents with the prompt. Each item must clear a relevance bar, so recall is often empty. The top two arrive with their overview, the rest as one-sentence abstracts with their Context address, all within one shared budget. A memory already recalled earlier in the chat is not sent again, and a notice or thread message in a chat that already has turns recalls nothing.

No hosted model runs before the turn. Once the local GLiNER2.5-Decide model is on this computer, it decides whether a turn needs recall and reranks the candidates. Synoec downloads it (about 1.95 GB) once in the background; until it is ready, and whenever a stage takes longer than 1.5 seconds, the rules decide. The whole step has 5 seconds. The model answering the turn can search for more with ContextSearch. A new engine reads the rows an earlier sync left while its own refresh runs. Only an index that has never been filled falls back to the earlier per-source recall, and the turn’s notice says why, including a sync that failed. Each turn’s record appears under recall, the fallback’s too.

Conversation recall keeps what you wrote and the answer you saw, never a Persona’s internal draft, in pieces that end at a paragraph, sentence or word. At most two pieces of one answer arrive in a turn.

Under a finished answer, a row counts every distinct thing its turns recalled, in one of a few phrasings such as Dusted off 3 things or 3 things rang a bell; open it to see them. When a session commit lands, the last turn it covered shows Jotted down 2 notes, plus any still waiting for review.

Learning turns a correction, procedure or reusable tool experience from a chat into a reviewed lesson, and proves it helps before it guides later work. Every lesson is drafted with test cases, run against a no-lesson baseline and accepted by you. Accepted lessons are recalled as advice through the same recall step; they never change model weights or grant tool authority. Learning needs workspace memory.

When you correct the agent, say “learn from this”, or finish reusable tool work, the agent may propose a lesson. A Learn from this? card appears under Learning in this chat, with Why this was suggested and its evidence.

  1. Choose Review lesson & cases.
  2. Check the drafted cases. Each has a Task prompt, optional fixture files (Add fixture file) and checks: Answer contains, Answer excludes or File exactly equals. Use Add check and Add independent case to strengthen weak drafts.
  3. Choose Run reviewed cases. Each case runs twice with the chat’s model, without and with the lesson, in a disposable project. Your files are not copied or edited. Runs count as provider usage.
  4. When the card shows Ready to accept, review the results and choose Accept lesson, or No thanks to reject it.

Cancel validation stops a run; Return to task goes back to the composer without resending anything. Find earlier lessons from this chat loads older ones. Acceptance requires a measured improvement over the baseline, no regressions and every advised case passing; a failed or cancelled run leaves the lesson inactive.

Open the learning folder here, or Repository → Learning (Project Learning), to see proposals, accepted lessons and history. From a lesson you can Open Source Chat, Accept, Reject, or Forget… to remove its content and history. Project lessons stay with their project and are never published to Shared automatically; Quick Chats share Chats learning.

A newer lesson supersedes the one it replaces; forgetting it does not revive the old one. Older proposals without drafted cases are validated with a reviewed JSON suite through Validate… or synoec learning validate.

A lesson drafted as a Skill can be exported once accepted, with Export as native Skill… or synoec learning export-skill. Export requires saved validation with held-out transfer, regression and boundary cases. Knowledge, procedure and experience lessons stay recalled advice and cannot be exported; the desktop says why instead of offering the button.

synoec context fs uses the same service. Without a URI it targets the current project (or Chats), and imports go to its library.

Terminal window
synoec context fs import docs/guide.pdf
synoec context fs import-web https://example.com/guide
synoec context fs search deployment --json
synoec context fs read synoec://context/workspaces/<workspace>/projects/<project>/library/<item>
synoec context fs remove <uri> --revision 4

Actions: list, read, search, discover, import, import-media, import-web, summarize, directory-summary, extract-memories, remove, commit-now, commit-apply (with --operations 0,2), commit-dismiss and commit-revert.

Terminal window
synoec learning list --json
synoec learning show LESSON_ID
synoec learning accept LESSON_ID --revision 2
synoec learning forget LESSON_ID --revision 3
synoec learning validate LESSON_ID --revision 1 --suite reviewed-suite.json
synoec learning export-skill LESSON_ID --output ./exported-skill

Learning also has history and reject. Use the revision show prints; --session and --branch select a chat’s learning. Ctrl-C interrupts a validation you started, and an interrupted run is never repeated automatically.

  • Listings page at 100 entries; a changed collection rejects continuation.
  • Local sources up to 16 MiB, web snapshots up to 2 MiB, at most 2,048 sections. Archives, encrypted and malformed files fail without replacing an earlier snapshot.
  • Code maps are bounded and report partial coverage. HTML previews run no scripts, events or remote resources.
  • Correction cues are suggestions; not every correction is detected. A finite case suite shows observed outcomes, not general correctness. Lesson cases and fixtures are limited to 96 KiB, with two minutes per case.
  • Lessons and memories bound to a source drop out of recall when it changes.
  • Profiles choose models and recall disclosure; they are not users or file permissions. Per-resource grants and a multi-user knowledge service are on the roadmap.

Decisions behind this page: 0171, 0201, 0207 — see the decisions index.