Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Official TypeScript SDK for the Dedalus Agents API
| Date | Stars |
|---|---|
| 2026-07-31 | 295 |
| 2026-08-06 | 295 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# Dedalus TypeScript API Library
[>)](https://npmjs.org/package/dedalus-labs) 
This library provides convenient access to the Dedalus REST API from server-side TypeScript or JavaScript.
The REST API documentation can be found on [docs.dedaluslabs.ai](https://docs.dedaluslabs.ai). The full API of this library can be found in [api.md](api.md).
It is generated with [Stainless](https://www.stainless.com/).
## Installation
```sh
npm install dedalus-labs
```
## Usage
The full API of this library can be found in [api.md](api.md).
<!-- prettier-ignore -->
```js
import Dedalus from 'dedalus-labs';
const client = new Dedalus({
apiKey: process.env['DEDALUS_API_KEY'], // This is the default and can be omitted
environment: 'development', // defaults to 'production'
});
const completion = await client.chat.completions.create({
model: 'openai/gpt-5-nano',
messages: [
{ role: 'system', content: 'You are Stephen Dedalus. Respond in morose Joycean malaise.' },
{ role: 'user', content: 'Hello, how are you today?' },
],
});
console.log(completion.id);
```
## Streaming responses
We provide support for streaming responses using Server Sent Events (SSE).
```ts
import Dedalus from 'dedalus-labs';
const client = new Dedalus();
const stream = await client.chat.completions.create({
model: 'openai/gpt-5-nano',
stream: true,
messages: [
{ role: 'system', content: 'You are Stephen Dedalus. Respond in morose Joycean malaise.' },
{ role: 'user', content: 'What do you think of artificial intelligence?' },
],
});
for await (const streamChunk of stream) {
console.log(streamChunk.id);
}
```
If you need to cancel a stream, you can `break` from the loop
or call `stream.controller.abort()`.
### Request & Response types
This library includes TypeScript definitions for all request params and response fields. You may import and use them like so:
<!-- prettier-ignore -->
```ts
import Dedalus from 'dedalus-labs';
const client = new Dedalus({
apiKey: process.env['DEDALUS_API_KEY'], // This is the default and can be omitted
environment: 'development', // defaults to 'production'
});
const params: Dedalus.Chat.CompletionCreateParams = {
model: 'openai/gpt-5-nano',
messages: [
{ role: 'system', content: 'You are Stephen Dedalus. Respond in morose Joycean malaise.' },
{ role: 'user', content: 'Hello, how are you today?' },
],
};
const completion: Dedalus.Chat.Completion = await client.chat.completions.create(params);
```
Documentation for each method, request param, and response field are available in docstrings and will appear on hover in most modern editors.
## File uploads
Request parameters that correspond to file uploads can be passed in many different forms:
- `File` (or an object with the same structure)
- a `fetch` `Response` (or an object with the same structure)
- an `fs.ReadStream`
- the return value of our `toFile` helper
```ts
import fs from 'fs';
import Dedalus, { toFile } from 'dedalus-labs';
const client = new Dedalus();
// If you have access to Node `fs` we recommend using `fs.createReadStream()`:
await client.audio.transcriptions.create({ file: fs.createReadStream('/path/to/file'), model: 'model' });
// Or if you have the web `File` API you can pass a `File` instance:
await client.audio.transcriptions.create({ file: new File(['my bytes'], 'file'), model: 'model' });
// You can also pass a `fetch` `Response`:
await client.audio.transcriptions.create({ file: await fetch('https://somesite/file'), model: 'model' });
// Finally, if none of the above are convenient, you can use our `toFile` helper:
await client.audio.transcriptions.create({
file: await toFile(Buffer.from('my bytes'), 'file'),
model: 'model',
});
await client.audio.transcriptions.create({
file: await toFile(new Uint8Array([0, 1, 2]), 'file'),
model: Excerpt of 16,091 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:ddf576e40b9698cc, llm:repository description: 'Official TypeScript SDK for the Dedalus Agents API'
matched fp:ddf576e40b9698cc, llm:repository description: 'Official TypeScript SDK for the Dedalus Agents API'
matched fp:ddf576e40b9698cc, llm:repository description: 'Official TypeScript SDK for the Dedalus Agents API'