Aster documentation

Aster is a shelf of the people you learn from. This page is the long version: what each screen does, what Aster counts as a post on every platform it reads, what it stores about you, and every outside service it runs on. If you would rather be shown than told, the guided walkthrough inside the product lives under How Aster works in the account menu.

1. The shelf model

Everything in Aster sits in three levels, and there is deliberately no fourth:

  1. SubjectAI
  2. ChannelYouTube
  3. CreatorAndrej Karpathy
  4. Their pageyoutube.com/@AndrejKarpathy

Three levels on the shelf, and a fourth step that leaves it. The dashed cell is not a screen in Aster — it is the creator's own site, opening in a new tab.

  • A subject is a field you are learning — AI, biology, economics, design. On the home screen each one is a planet.
  • A channel is a platform inside that subject. Every new subject is seeded with eleven of them: YouTube, Bilibili, X, Rednote, WeChat, Substack, LinkedIn, Podcast, GitHub, Official Website and Other. You can add your own.
  • A creator is one account on one platform. Clicking the row opens their page in a new tab.

Aster never stores the content itself — no saved articles, no read-it-later queue, no clipped highlights. It stores who is worth reading and tells you when they published. The step after a creator row is always the creator's own site.

The same person usually appears more than once — as a YouTube channel, an X account, a newsletter. Aster keeps those as separate rows on the shelf, because they are separate sources, but merges them back into one person in the Feed and in Activity.

2. Home — your subjects

The home screen is your subjects as planets on the starfield. There are eight worlds, each available ringed or ringless, and you pick one when you create or rename a subject. It is a label, not a setting — nothing behaves differently because a subject is Azure rather than Dust.

What you can do here

  • Drag a planet to reposition it. The layout is yours and is saved.
  • Right-click (long-press on touch) for rename, change planet, resize, delete.
  • Click to open the subject.

New accounts start empty. The onboarding sheet after signup asks which fields you follow and creates exactly those subjects — nothing is seeded that you did not ask for.

3. Inside a subject — the platform shelves

Opening a subject shows its channels as rows, grouped into three sections: International, Chinese, and Miscellaneous (Official Website, Other, and any channel you created yourself). The three sections are draggable — the order is saved per subject — and each one collapses.

The activity readout

The right side of every channel row is a two-line readout: the freshest last-post age in that channel, and how many of its creators published this week. A row with nothing probed keeps a calm, empty right side rather than inventing a number. When the freshest post is under 24 hours old, the age pulses.

Sub-groups

A crowded platform section can be split the same way a crowded channel can. The toolbar at the top right of the subject — + Add, Collapse all / Expand all, + New group, Select — acts on whichever platform section you are looking at. Drag a channel onto a divider to file it, or right-click → Move to group.

4. Inside a channel — the creator list

This is where the people are. Each row carries an avatar, a name, an optional note and tags, and — on platforms Aster can read — a last-posted age.

The age label

"3d ago", "2mo ago", and anything beyond a year collapses to "1yr+ ago". A creator who published in the last 24 hours gets a quiet pulsing highlight. If they published more than once in that window, the row shows density instead — "10 posts (past 24h)" — so a firehose does not read the same as a single post. Probing happens when you open the page, on demand and throttled; nothing runs in the background against an account nobody is using.

Groups

Groups are your own sections inside a channel. Rename them on the divider, drag to reorder, drag a creator onto a divider to file them, or use right-click → Move to group. Select turns the rows into a checklist so you can move a handful at once. Group headers show no creator counts, on purpose.

The star

Every row carries a five-point star. Highlighting belongs to the person, not the row: star someone on YouTube and their X and Substack accounts light up too. Highlighted people sort first inside their existing section — it is priority, never promotion. A highlighted person is never moved from "quiet" into "active", and never bypasses the rules that decide what the reading guide covers.

Fixing what Aster got wrong

Automatic recognition is good, not perfect. Edit profile opens one sheet for the name, link, note, group and tags together; Profile picture uploads your own image. Anything you type by hand is yours — Aster will not overwrite it on a later check.

5. Adding a creator

One step: paste a link. Aster fetches the display name and avatar, and files the creator where you opened + Add from — the destination subject and channel are inferred from context and shown read-only, so there is no subject/channel picker to get wrong. The only thing you choose is the group inside that channel, and leaving it Ungrouped is fine.

Avatars are stored as permanent images on Aster's own image CDN rather than hot-linked from the platform, so a row does not go blank when a platform changes its image URLs.

Which link to paste

PlatformPaste this
YouTubeThe channel URL or @handle page
XThe profile URL. A new X creator also gets their public bio into the note field, with t.co links expanded
GitHubThe user or organisation profile URL
LinkedInThe profile URL
SubstackThe publication homepage, its custom domain, any article link, or a substack.com/@handle profile
PodcastsAn Apple Podcasts or Spotify show link, or a self-hosted show's own site or feed
BilibiliThe space.bilibili.com page, or a b23.tv share short-link
RednoteThe profile link, or an xhslink.com share link from the app
WeChat 公众号Any article from the account — there is no public profile page to paste, so Aster reads the account's name, avatar and bio from the article page itself
Blogs and personal sitesThe site's own URL

A search-results page names no creator, so pasting one honestly shows nothing rather than guessing.

6. Feed — everything your people published

The Feed is the product's one stream, and it is a projection of what Aster has already checked, not a separate crawl. Opening it triggers the same throttled background check the shelf uses.

How it is grouped

By person, merged across platforms — so someone posting on YouTube, X and LinkedIn is one card, not three. The card shows their avatar, name, the marks of every platform they published on, an "N updates · M platforms" line and a total reading time. Their posts branch below on a thin thread, newest first: three visible, the rest folded behind "Show N more".

Andrej KarpathyYouTube · X · Substack — 4 updates · 3 platforms · ≈ 41 min

  • YouTubeA lecture rebuilding a small language model from scratch LLMs≈ 27 minnewest first
  • XA note on why evaluation harnesses mislead Research≈ 2 min
  • SubstackAn essay on what tooling changed this year Essay≈ 12 min
  • Show 1 morefolded, never filtered

Schematic, not a screenshot: one person, their accounts merged, their posts branching below with the reading guide's topic and time chips on each.

Folding is not filtering. Every post survives; it is just nested under its person. Cards are ordered by each person's newest post. Inside a GitHub card, consecutive commits fold into one line per repository, while releases, new repos, pull requests and issues stay individual lines with a kind badge.

The window and the sort

Chips pick Today / 3 days / 7 days, remembered per device, and the list shows exactly that slice. A second control orders it by Newest or A–Z. Choosing A–Z groups the page under letter headings and puts an alphabet rail in the margin — click a letter to jump, drag down it to scrub, and the letter you are reading highlights as you scroll. Chinese names file under their pinyin initial, so 木辰有点菜 sits under M. On narrow screens the rail docks to the right edge, the way an index does on a phone.

Platform chips

One chip for every platform you follow, not only the ones with posts — so a quiet platform tells you "no posts in the last N days" instead of silently disappearing. Once your shelf covers more platforms than the row can hold, the strip pages left and right with ‹ › rather than wrapping.

The reading guide

This is the layer that reads for you, and it is what Pro pays for. Every post carries:

  • a one-line characterization — what kind of piece it is and what it is about, written in your interface language, never a copy of the post's own text;
  • a topic chip naming its field;
  • a time chip — the real video or episode length when the page publishes one (YouTube, Bilibili — no AI involved), an honest estimate otherwise, and an explicit N/A when neither can be determined. Never silence.

Annotations cover the whole 7-day window and build incrementally: a post is annotated once and carried across regenerations, so only new posts cost anything. At the ready hour you pick in Settings, the guide builds itself in the background and the Feed button's dot lights. Refresh rebuilds any time, and an unchanged shelf skips the model calls entirely. The banner sums exactly what is on screen — "N creators · M updates · about X to read it all" — and, when sources could not be reached, says so: "Couldn't reach N of M sources."

Hover preview

Hovering a post shows a small card with its cover image, headline, opening lines and source, so you can judge it without opening a tab. Covers work on every platform Aster reads, including the Chinese ones, which refuse to serve their images to other sites and are therefore fetched through Aster's own relay. The card appears only when there is genuinely something to show — a plain text post simply does not have one. It is pointer-only, so it never appears on phones.

There is no ranking and no AI filter, and there will not be one. The model describes; it never decides what you see or in what order. A post someone else would call noise may be exactly what you were waiting for — that judgment is yours.

7. Activity — who is actually alive this week

Where the Feed is the day, Activity is the week. Each person's accounts are merged into one row: posts this week, last-post age, the platforms they are on, and an AI profile — Focus (what they publish about), Strengths (what they are best at), and one honest positioning line. The profile is one batched call cached for a week per person, re-run when their recent titles change. Without a model key the page degrades to activity statistics rather than failing.

One time axis

The displayed local Monday-to-Sunday calendar week drives everything on the page — the header range, the post total, the seven-column meter, the sections and the sorting. Three sections, and the difference between the last two matters:

  • Active recently — posted in the displayed week.
  • Quiet lately — has a feed Aster can read, and published nothing in that week.
  • No readable signal — has no public feed Aster can read at all. This is not the same as being quiet, and Aster will not pretend it is.

Controls

Two chip clusters sit above the list: All / ⭐ Favorites (which people) and, split by a hairline, Activity / A–Z (how they are sorted). Section headers freeze while their own rows are in view. A small ? above the date explains merging, the time range, the sections and the gold rows. Highlighted people keep their warm-gold row but no star here — Activity is an overview, not another editing surface.

9. Bulk import

Reached from + Add → Import many at once, or from Settings. Three ways in:

  • Paste text — a free-form list of names, handles or links. An AI parse extracts name, platform and URL.
  • Screenshots — drop images of a follow list. OCR runs inside your browser; the images are never uploaded.
  • CSV — a Google Takeout subscriptions.csv is recognised deterministically, with zero AI, localized headers included. Rows land with their real channel names and canonical URLs; avatars fill in gradually through a rate-limited background pass. Other CSVs fall back to the normal text parse.

For rows that arrive as a name with no link, Aster tries to find the canonical URL. Podcasts resolve for free and deterministically through Apple's iTunes Search with a strict prefix gate, so a wrong show never attaches; other platforms go through the model plus server-side verification. Then a review stage lets you fix the subject, the per-row platform and any URL before a single bulk save. Oversized files are refused with a reason, and very long lists are truncated with an honest count — never silently.

10. Cross-platform account discovery

Add someone once and Aster looks for their other accounts. It runs only for newly added or imported creators — it is not a background sweep of your whole shelf.

The hard part is not finding candidates; it is not confusing a similarly named stranger, a developer account or a product sub-brand for the person. So Aster collects bounded first-party evidence — profile links the creator declared themselves, official-site connectors, bios — while the model's native Web Search retrieves cited candidates. Every search candidate must carry a genuine tool-result citation and a canonical URL on a supported platform. A separate judgment classifies each as same identity / related / different, and deterministic gates reject implausible name jumps, fabricated citations, contradictions, employers, projects and sub-brands. AnthropicDev stays distinct from Anthropic.

How results reach you

Never by interrupting. A creator with candidates gets a small + badge on their avatar; opening it shows a review of platform, username and URL, split into two panes: Confirmed matches (checked) and Possible matches (unchecked). Nothing is ever auto-merged. Each candidate has its own Don't remind again. Right-click → Find other accounts re-runs the check on demand, with a 10-minute per-person cooldown, and reports one of four honest outcomes: candidates, no account passed the evidence bar, the check was incomplete, or you hit the rate limit.

Cross-language accounts are handled without a web search where possible: when a creator's Rednote account carries a Chinese name sharing nothing with their English one, Aster looks it up through Rednote's own post index, where posts about the creator tag the account. Several separate posts must converge on the same account before it is even examined — and that only decides what gets looked at; confirmation still rests on the account's own first-party evidence.

11. Settings

One page, five sections, reachable from the account chip menu. The grey index down the left works as tabs — clicking an entry shows that section on its own.

SectionWhat is in it
ProfileAvatar, display name, @handle, bio. The handle is your identity — 3–20 characters, letters, numbers and underscore — and is separate from the display name, which you can change freely. Bio is capped at 160 characters.
Your shelfFour honest numbers about your own reading: creators followed and the people behind them, how much they published in the last 7 days (using the Feed's own window, so the figure is verifiable), your Top Voice for that week, and who you open most — the last counted on this device only and never synced. Rendered as ordinary settings rows, deliberately not a dashboard.
AccountEmail, set or change password, sign out, and your plan — with the renewal or trial-end date on Pro. Manage opens Stripe's own billing portal.
PreferencesThe reading guide's ready hour (its only home), hide planet names, ask before deleting, and the product-wide language control.
Data & aboutExport the whole shelf as JSON, open bulk import, and About / Terms / Privacy.

12. Cosmos — upcoming

Cosmos is the shared-shelves feature, and it has not shipped. It exists because of the idea underneath Aster: a great follow-list shouldn't be a privilege. When it ships you will be able to browse other people's shelves, see the diff against your own, and copy a whole follow-list in one confirmed tap — never auto-merged.

Sharing will stay a choice. Each shelf carries a Private / Public toggle, and Private is where every shelf starts.

Today every shelf is private, at the database. This is not a promise about intent — read policies allow a row to be read only by its owner, so there is currently no path by which another user could see your shelf. Cosmos requires opening that deliberately, with an explicit opt-in, and it has not been opened.

13. Free and Pro

The split is not a feature ladder. Free is the shelf; Pro is the layer that reads it for you.

PlanWhat you get
FreeUnlimited subjects, channels and creators. Every platform, including Rednote and WeChat 公众号. Metadata recognition on add, manual groups, tags, notes and highlights, bulk import, global search, JSON export.
Pro — $10/month or $99/yearThe Feed and its reading guide, Activity and its AI profiles, last-posted age on every platform including the paid sources, and cross-platform account discovery. Both intervals include a 7-day free trial; a card is collected up front and cancelling before day 7 charges nothing.

Prices are USD everywhere, on the Chinese site too — only the surrounding words are translated, never the currency or the amount.

On a free account the Feed and Activity entries stay visible and open a page naming what they do, with a way through to Pro. Hiding them was rejected: a feature nobody can see is a feature nobody can decide to buy, and a vanishing page reads as breakage. Nothing is deleted when a subscription ends — the shelf is untouched and only the reading layer locks.

14. What counts as a post

This is the most important table in this document, because it is where Aster is opinionated. "Last posted" is only useful if it means the creator published something — so reposts, reactions and filler deliberately do not count. A creator who only writes short status posts on LinkedIn will read as considerably quieter here than they look on LinkedIn. That is the intended reading, not a gap.

PlatformWhat countsWhat never countsSource
YouTubeRegular /videos uploadsShorts — never, for age, density, Activity or the reading guideFree
XWhat the creator wrote, including quote tweets (they added commentary)A plain retweet of someone else's postFree path first; a paid source only for accounts logged-out X won't reveal
GitHubReleases first (with the maintainer's own notes), then new repos and opened PRs/issues; commits fold to one line per repositoryStars, forks, comments and other reactionsFree
LinkedInPublished articles onlyOrdinary status posts, reposts, commentsFree
SubstackPublished posts, read from the publication's public RSSFree, no key, no login
PodcastsPublished episodesFree
BilibiliVideo uploads; 动态 (text/image posts) when the video date is missing or over 30 days oldForwards and live blipsFree for videos; paid rescue for 动态
RednoteNotesPaid source only — there is no free server path
WeChat 公众号The latest publishing day; clicking the row lists that day's articles with their covers, since there is no public profile page to openPaid source for the feed; identity is read free from an article page

GitHub organisations are handled specially: orgs never surface releases in their own activity feed, so Aster reads them from the org's most active repositories instead — which is why Hugging Face and OpenAI show real activity rather than nothing. A creator's row shows a gold Release marker when a version shipped, and a shipped release survives into the reading guide even when a later routine push would otherwise have buried it.

15. Your data

What is stored

  • Your email (for login), and your handle, display name, avatar and bio if you set them.
  • The subjects, channels and creators you save, with your notes, tags, groups and highlights.
  • Preferences — language, the ready hour, planet-name visibility, delete confirmations.
  • A local cache in your browser so the shelf opens instantly. "Who you open most" in Settings lives only there and is never synced.

What is not done

No advertising. No selling or sharing of personal data. No third-party analytics trackers. Metadata about creators — names, avatars, post dates — is fetched server-side from their public pages, and those requests carry none of your personal data. Screenshots you drop into bulk import are OCR'd in your own browser and never leave it.

Getting it out, and deleting it

Settings → Data & about exports the whole shelf as JSON, any time, no request needed. Deleting a creator, channel or subject removes it from the database. For full account deletion, email sco.boulevard@outlook.com.

The formal version is the Privacy page, which opens from the footer of astershelf.space.

16. Subprocessors

Every outside service Aster depends on, what it does, and what it can see. If a service is not on this list, Aster does not send anything to it.

Infrastructure

ServiceWhat it does for AsterWhat it can see
VercelHosts the site and runs every server-side functionOrdinary request data — IP address, user agent, the requested path
SupabaseThe database, and authentication (email and password, magic link, Google sign-in)Your account record and your shelf. Rows are readable only by their owner
Cloudflare R2Stores creator avatars and profile images, content-addressed so identical images are stored onceThe images themselves. No account identifiers
StripeSubscription checkout, billing portal and invoicesYour name, email and payment details. Card details never touch Aster — checkout and the portal are Stripe's own pages
Google FontsServes Fraunces, the site's single typefaceYour browser's IP address, as any font request does
Google (OAuth)Optional "Continue with Google" sign-inOnly used if you choose it. Aster receives your email address and nothing more
jsDelivr & esm.shDeliver two browser libraries: the Supabase client, and the OCR engine used by bulk importYour browser's IP address

The intelligence layer

ServiceWhat it does for AsterWhat is sent
DeepSeekThe only language model in the product. deepseek-v4-flash writes the Feed's reading-guide lines, topic labels and time estimates, the Activity profiles, and parses bulk-import text. deepseek-v4-pro, with native Web Search, runs account discoveryPost titles and short excerpts, creator names, platform names, and public profile evidence. Never your email, handle or account identifiers
GroqSpeech-to-text (whisper-large-v3-turbo) when a video's own captions are unavailable, so the reading guide can say what a video is actually aboutThe audio of a public post
TikHubPublic post data for Rednote and WeChat 公众号 — the two platforms with no free server pathThe public account or article URL being read
twitterapi.ioX post timing for accounts logged-out X will not reveal. Tried only after the free pathThe public X handle being read
unavatar.ioAvatar lookup fallback when a page publishes no usable imageThe public handle or domain being looked up
Apple iTunes SearchResolving podcasts by name during import — free, keyless, deterministicThe show name being searched

Every metered service above is behind a single kill switch, and every one of them degrades rather than fails: with no model key the reading guide falls back to raw titles, import falls back to deterministic parsing, discovery returns an honest "incomplete", and paid probes are skipped. An outage shows up as an outage — "Couldn't reach N of M sources" — and never as a quiet day.

17. What Aster deliberately won't do

  • No fourth level. Aster does not save articles, clip highlights, or hold a read-it-later queue. The step after a creator is their own page.
  • No ranking, no algorithmic feed, no unread counts. The Feed is chronological within a window you choose.
  • No AI filter. The model describes posts; it never decides which ones you see.
  • No engagement metrics. No follower counts, no engagement rates, no audience demographics, no campaign reports. Aster is not an influencer-marketing tool and will not become one.
  • No social graph. No likes, comments or messaging — not now and not with Cosmos.
  • No light mode. One calm cosmic-dark theme, no toggle.
  • No background crawling. Probing happens when you open a page. An account nobody opens costs nothing.

Aster is an independent project built in public by one person. If something here is wrong, unclear, or missing — or if you think one of these lines should change — write to sco.boulevard@outlook.com.