Concepts
The building blocks — accounts, workspaces, the virtual filesystem, async ingestion, and read sessions.
Grepticon is a hosted, read-only filesystem for AI agents. You push files into
isolated workspaces, and your agents retrieve from them with four familiar
tools — ls, find, cat, and grep — instead of an embedding index. This
page defines the handful of nouns the rest of the docs assume. To see them in
action end to end, follow the Quickstart.
Account
Your account is the top-level tenant, created the first time you sign in with
Google. It owns your workspaces, your credentials, and your plan (free or
pro). Every credential you create resolves to exactly one account, and one
account's data is never visible to another.
Workspace
A workspace is one isolated filesystem — a named, self-contained set of files. Accounts hold many workspaces (3 on the free plan; see Limits), and nothing crosses the boundary between them: a credential scoped to one workspace can never read another.
Workspace names are stable identifiers you choose — 1–64 lowercase letters,
digits, hyphens, or underscores, starting and ending with a letter or digit
(for example, handbook, acme_corp, support-kb). You reference a workspace
by that name in every SDK call and REST route.
The virtual filesystem
Inside a workspace, a file is just a canonical path and its extracted text —
guides/onboarding.md, reports/q3.pdf. There is no on-disk tree to manage:
- Directories are derived. A directory exists exactly when a file lives
under it;
lsandfindcompute the tree from the file paths on each read. - Reads see extracted text, not the raw bytes. During ingestion, Grepticon
extracts a plain-text form of each file — Markdown and text pass through, HTML
is converted to Markdown, and PDFs are read via their text layer.
catserves that extracted text, so an agent greps a PDF the same way it greps a.mdfile. - No chunking, no embeddings. Files are stored and read whole. Retrieval is literal search over the text, which is what makes the tools behave like their command-line namesakes.
Async ingestion
Uploading a file is a two-step, asynchronous process:
- The upload call returns immediately with
status: 'pending'. The raw file is stored, but its text is not yet extracted. - A background worker extracts and normalizes the text, then flips the file to
status: 'ready'. If extraction fails, the file becomesstatus: 'error'with anerrorDetail.
Reads only ever see ready files. A pending file is invisible to ls,
find, cat, and grep — which is why, right after an upload, a read can come
back empty. This is the gap the SDK's waitForReady closes: it polls until the
paths you name reach ready (or error), so your agent never reads a
half-ingested workspace. Ingestion is deliberately unhurried; speed is a
non-goal, correctness is not.
Read session
A read session is a scoped view of one workspace that an agent reads
through. In the SDK, client.session(workspace) binds the four read tools to a
workspace and the credential the client holds. Sessions are stateless — every
ls / find / cat / grep call is an independent request — so there is
nothing to open, close, or keep alive.
What a session can see is governed entirely by its credential's claims and each file's visibility. A default session sees everything; a scoped one sees only the files its claims permit. That model is the subject of Access control.
Credentials, in one line
Two bearer credentials reach the API: a grp_sk_ management key (full
control over an account) and a grp_at_ access token (read-only, one
workspace). Authentication covers both.
Where to go next
- Quickstart — the whole loop, signup to agent answer.
- Tools — how
ls/find/cat/grepbehave and when to reach for each. - Access control — scope what an agent can see with the claims × visibility model.