Astrophotography workspace

Astrophotography, end to end.

Plan the night, sync your subs, grade every frame, stack with Siril in the cloud, and publish the result — from the browser, the terminal, or your AI assistant.

Read the docs

# connect Claude Code to your workspace

claude mcp add --transport http nebyoulous https://api.nebyoulous.space/mcp
tonightframesstacks

Night score

92Excellent

1821000306

Targets · ranked

  • M3189°
  • IC 180570°
  • M3380°
FWHM · 174 subs7 rejected
stack-3 donesiril · winsorized σ 3/3167 lights · 13h 55m
Interfaces
Web · CLI · MCP
Stacking
Siril, in the cloud
Frame QA
FWHM · roundness · stars
AI
Advisor + MCP over OAuth

01Workflow

One pipeline, first light to final post.

Each step hands off to the next, so nothing ends up stranded on a card or a spare drive.

  1. 01

    Plan

    Score the night for weather, moon, and darkness, then rank targets your rig can frame.

    webadvisor

  2. 02

    Sync

    Pull subs off the camera card with dedupe and resume. Interrupted uploads pick up where they stopped.

    climcp

  3. 03

    Analyze

    Measure every light — FWHM, roundness, star count, background — and flag the bad ones.

    webplugin

  4. 04

    Stack

    Calibrate, register, and stack with Siril in the cloud. Every run keeps its config and report.

    webmcp

  5. 05

    Publish

    Post the finished image with the target, gear, acquisition data, and processing notes attached.

    webmcp

02The workspace

Built around the data, not the folder tree.

Targets, gear, frames, stacks, and posts are linked records, so every image keeps the night that produced it.

Session planner

Know whether tonight is worth the drive.

A nightly score from weather, moon, and darkness, plus targets ranked by how long they sit high in the dark window.

30°60°90°18:0021:0000:0003:0006:00M31 · 89°ASTRONOMICAL DARK
TargetPeak>30°Score
M3189°11.1h96
IC 180570°9.2h91
M3380°8.2h88
NGC 700087°8.1h84

Gear & rigs

The rig behind every image.

Cameras, scopes, mounts, and filters saved as reusable rigs and linked to the sessions and sets they shot.

Telescope
RedCat 51 · 250 mm f/4.9
Camera
ASI2600MC Pro
Mount
ZWO AM5
Filter
L-eNhance
Field
5.4° × 3.6°

Integration sets · frame analysis

Find the bad subs before they find your stack.

Lights, calibration frames, and exports live in one set per target. Analysis scores each frame and flags trailing, cloud, and soft focus.

FrameFWHMRoundStars
Light_0041.fit2.410.911,842
Light_0042.fit3.870.62904trailing
Light_0043.fit2.380.921,866
Light_0044.fit3.510.88388cloud
Light_0045.fit2.440.901,811

Stacking

Siril in the cloud, with guardrails.

Pick a preset or tune rejection, normalization, and weighting. Each run is staged, versioned, and comes back with a report you can compare.

  1. 01calibrateOSC · darks · flats · bias
  2. 02registerstar alignment
  3. 03filterFWHM ≤ 3.20 · round ≥ 0.80
  4. 04stackmean · winsorized σ 3.0/3.0 · additive + scaling
result.fit167 / 174 lights · 13h 55mrun report ✓

Advisor

An assistant that knows your gear.

Ask what to shoot, why a night went sideways, or how to stack a set. The Advisor reads your rigs, sets, and the DSO catalog to answer.

Clear skies tonight. What should the RedCat shoot?
listGearItemsqueryDSOCatalogwebSearch

The Heart Nebula (IC 1805) fills your 5.4° field and stays above 60° from 22:15 to 03:00. Use the L-eNhance — the moon sets before dark.

Drafts → posts

Publish the image and the story.

Work on a draft privately, then publish a post with the target, acquisition details, and processing notes filled in from your data.

Published

Rosette Nebula · NGC 2244

174 × 300s · RedCat 51 · ASI2600MC · Bortle 4

Finished posts land in the public gallery, with the data still attached.

Browse the gallery

03Command line

A CLI for the parts that live on disk.

nebyoulous handles sign-in, card inspection, and frame sync. It's built for camera cards and folders with thousands of subs.

Scan before you upload
List mounted cards and drives, group files by frame type, and read FITS headers. Read-only.
Sync that survives a bad connection
Dedupe by path and size plus a local manifest. Re-run the same command and it skips what's done.
Works offline
--to-local mirrors a card to a folder with no sign-in, for copying files in the field.
zsh — nebyoulouscli
$ nebyoulous login
  ✓ approved in browser · tokens in keychain
$ nebyoulous devices
  /Volumes/ASIAIR exFAT 118 GB removable
$ nebyoulous sync --from ./M31 --create "M31 2026-10-18" \
    --include "*.fit,*.fits" --frame-type LIGHT
  174 lights · 9.1 GB · 18 skipped (already uploaded)
  ✓ done in 4m 31s · safe to re-run
$ nebyoulous mcp:serve # for Claude Code / Cursor
$ 

04Model Context Protocol

Let your AI assistant work in your workspace.

Connect Claude, Claude Code, or Cursor and the agent can plan targets, sync frames, start stacks, and draft posts with your account's data.

Hosted · OAuth

Point any MCP client at the API

No install. Your client opens a browser to approve access, and the token is tied to your account.

claude mcp add --transport http nebyoulous https://api.nebyoulous.space/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "nebyoulous": {
      "url": "https://api.nebyoulous.space/mcp"
    }
  }
}

Local · stdio

Add your filesystem with the CLI

nebyoulous mcp:serve combines the hosted tools with local ones: scan cards, read FITS headers, plan and run a sync.

nebyoulous mcp:serve

Claude Code plugin

nebyoulous-astro

A frame-qa skill that scores subs on disk, renders contact sheets, and reads ASIAIR Autorun logs to explain what went wrong in a night.

Tools the agent gets

! = asks you to confirm first

  • queryDSOCatalog
  • listIntegrationSets
  • createIntegrationSet
  • presignUploadBatch
  • startFrameQa
  • recommendStackConfig
  • startStack
  • getStackStatus
  • listGearProfiles
  • createPost
  • listVolumes
  • scanFolder
  • peekFitsHeader
  • planSync
  • executeSync!

cyan hosted · grey local via mcp:serve

Clear skies. We’ll keep the log.

Sign in to plan tonight, sync last night, and publish the image when it's ready.

View on GitHub