⚠ Deprecated: Legacy
Web capability extensions (moderation, soft-delete, audit) for Sora applications.
$ dotnet add package Sora.Web.ExtensionsBuild services like you're talking to your code, not fighting it.
Sora is a backend framework for .NET developers who value clarity, comfort, and the ability to grow. Whether you're spinning up a quick prototype or scaling into enterprise-grade patterns, Sora keeps the path clear. Start with a three-file API. Add messaging, vector search, or AI when you're ready. Nothing more, nothing less.
Let’s start simple:
dotnet add package Sora.Core
dotnet add package Sora.Web
dotnet add package Sora.Data.Sqlite
Then:
public class Todo : Entity<Todo>
{
public string Title { get; set; } = "";
public bool IsDone { get; set; }
}
[Route("api/[controller]")]
public class TodosController : EntityController<Todo> { }
That’s a full REST API:
GET /api/todosPOST /api/todosPUT /api/todos/{id}/healthIt works. Right now. No ceremony.
Sora isn’t trying to impress you with magic. It earns trust by staying out of your way—until you need more.
You never pay for complexity you didn’t ask for.
dotnet add package Sora.Web.Swagger # Interactive docs
dotnet add package Sora.AI # Local LLMs with Ollama
dotnet add package Sora.Data.Weaviate # Semantic search
dotnet add package Sora.Messaging.RabbitMq # Production messaging
dotnet add package Sora.Web.GraphQl # REST + GraphQL side-by-side
Everything integrates naturally. No glue scripts. No boilerplate.
Sora is designed by developers who’ve scaled codebases and lived to talk about it.
Sora is modular by nature. Each of its components works independently—and shines together.
| Pillar | Purpose |
|---|---|
| Core | Unified runtime, secure defaults, health checks, observability |
| Web | REST and GraphQL from your models, Swagger UI, clean routing |
| Data | Unified access to SQL, NoSQL, JSON, and vector DBs |
| Storage | File/blob handling from local to cloud with profiles |
| Media | First‑class uploads, bytes/HEAD endpoints (range/conditional), variants/derivatives, transforms |
| Messaging | Reliable queues via RabbitMQ, Redis, or in-memory |
| AI | Embeddings, vector search, chat, and RAG via local or remote models |
| Recipes | Best-practice bundles for reliability, telemetry, and scale |
| Orchestration | DevHost CLI to export/run local deps via Docker/Podman (Compose v2) |
| Orchestration | DevHost CLI to export/run local deps via Docker/Podman (Compose v2) |
Sora is already being used to build:
It’s ready for you too.
var todo = await new Todo { Title = "Learn Sora" }.Save();
var todos = await Todo.Where(t => !t.IsDone);
samples/ directory/docs/engineeringSora is open-source, MIT-licensed, and community-friendly. We welcome contributions, ideas, and questions. Built by folks who got tired of choosing between simplicity and power.
License: Apache 2.0 Requirements: .NET 9 SDK Current version: v0.2.18
Run local dependencies and export Compose via the Sora CLI (single-file binary published to dist/bin/Sora.exe). See docs/reference/sora-cli.md.
# Install/publish the CLI into dist/bin and add to PATH
./scripts/cli-all.ps1
# Validate engine and environment
Sora doctor --json
# Export a Compose v2 file (writes .sora/compose.yml)
Sora export compose --profile Local
# Bring services up and wait for readiness (health when defined)
Sora up --profile Local --timeout 300
# Inspect status and endpoints; view logs
Sora status
Sora logs
# Tear down and prune data
Sora down --prune-data
More: docs/reference/orchestration.md and docs/reference/sora-cli.md.
Add first-class media to your app with consistent semantics and HTTP endpoints.
See: docs/reference/media.md.