Attach context
Drop a file or paste an image into Chat to include its path in your message. Describe what the agent should look for or change alongside the attachment.
One place for your agents.
A clear path from an idea to finished work.
Astera is a desktop workspace for Claude Code and Codex. Start with one session, carry context across account limits with Smart Resume, and coordinate larger work through a visible Jobs graph. Use the orchestration skill when you want an agent to manage the steps.
Start with one project and one account. You can explore automation after your first conversation is running.
Use the Download button to get the installer for your operating system. You also need Claude Code, the Codex CLI, or both installed and available on your PATH, so Astera can start them.
Astera runs your existing tools. Accounts and any usage fees for those services are separate.
Platform-specific installation stepsIn Accounts, use Auto-detect to find existing accounts and register the ones you want. Or choose Add account to create a separate account entry, then complete its sign-in when prompted.
Open New session. Select your Project folder and Account, choose Terminal or Chat, then click Start. A folder keeps the conversation connected to the code you are working on.
Describe the result you want and how to check it. For a first look at an unfamiliar project, try:
Explain how this project is organized and how to run it locally. Don’t change any files yet.
Read the response, answer any questions, and continue in the same session.
Both give you a session with your agent. Choose the interface that feels natural for the work you are doing.
The familiar CLI inside Astera. Use it when you want to work directly with the agent’s terminal interface.
A conversation with a message composer. Questions and approvals appear as cards; model and permission controls sit beside your message.
Drop a file or paste an image into Chat to include its path in your message. Describe what the agent should look for or change alongside the attachment.
Open Accounts and history and expand your project. Click a conversation to preview it, or choose its Resume session button, select an account, and click Resume to continue working. If the folder moved, select its current location when prompted.
Use Settings → History → Unhide to return a hidden project to the history list.
Tabs shrink until about half a name remains, then scroll, including with the mouse wheel. Korean terminal input no longer doubles or loses words while the app is busy. Text sent from the CLI, browser pane, or Slack waits until the session has drawn it before Enter is sent.
Account rolling moves a session to another available account for the same service when it reaches a usage limit. With the standard resume strategy, the conversation continues on that account.
When adding an account, Import settings from the default account brings over its setup. Codex settings merge into config.toml, preserving comments and unrelated entries. Once items are registered in MCP & Skills, that screen manages them instead of copying them again. Changes apply to new sessions.
In Settings → MCP & Skills, click Add, choose an account, and select its MCP servers, skills, commands, and agents to share. New sessions get them across accounts, rolled sessions included. Provider support still applies: Codex has no slash commands or subagents.
File copies are kept in step across accounts. A removed managed copy is restored; an edited copy is backed up before restoring. An account’s own different copy stays until you choose Replace with shared version. Expand an item to inspect its status, turn it off, or remove it.
A shared local MCP server runs once per project folder through the Host’s Gateway, stops after five idle minutes, and restarts when needed after a crash. Tick Run per session when sessions need separate state. Browser servers such as Playwright and chrome-devtools use that mode by default, with a browser profile per session.
astera ext list
astera ext sync
These work with the app and Host closed: ext list inspects shared entries; ext sync synchronizes file copies. Astera’s bundled skills use the separate skills list and skills install commands. Sharing tools with sessions is separate from connecting a client to Astera over MCP.
Open Settings → Agent profiles → New profile. Name it, add accounts from one provider in rolling order, choose which shared MCP servers to leave out, and select permission checks: follow the app setting, always ask, or run without checks. Skills and commands stay shared across profiles.
Pick the profile in New session, when creating a Job, or when adding a Task. Tasks follow their Job’s profile unless you choose another; the coordinator account is selected separately. Rolling keeps the profile, and History’s resume dialog remembers and names the conversation’s profile.
astera agent-profiles list
astera agent-profiles show --id PROFILE_ID
Use an ID or name from the list. Your own shell can also create, update, archive, and restore profiles. MCP reads list_agent_profiles and selects agentProfileId when creating work. Client SDK 0.5.0 adds agentProfiles.list and agentProfiles.get. Agents cannot edit profiles. Agents, MCP clients, and plugins may use a profile without permission checks only while the app allows that mode.
In Settings → Security & Access, Record agent tool calls starts Off. Choose Observe and start new sessions to record calls without blocking them. Audit Logs lists calls by day; Policies holds ordered Rules showing what would be allowed or denied. The coverage table explains what each provider and session type can see.
Records keep the action, a short target, read/write effects, and the name of a login folder touched. They never keep full commands, output, or file contents, and are retained for 30 days within size limits. Run detail links to that Run’s Audit Logs.
Choose Enforce to stop calls the Rules deny and record them as blocked. Review what the last seven days would have hit before enabling it. It adds about 0.1 seconds per call and needs Claude Code 2.1.306+ or Codex 0.160.0+; a session that cannot be protected does not start. Enforce always protects Astera’s settings folder and settings-changing commands.
Under Credentials, shared MCP keys appear automatically. Add environment variable names or CLI login presets (gh, AWS, Google Cloud, npm, Docker, kubectl) for every project or chosen projects. New sessions and completion checks do not receive hidden credentials; check results name hidden variables. Astera’s GitHub and Gateway credential uses appear in Audit Logs. Hiding does not prevent programs running as you from reading login files or OS stores.
astera policies show
astera audit list --run RUN_ID
astera credentials list
astera credentials doctor
Use an actual RUN_ID, or omit --run RUN_ID for all calls. These commands need a running Host. Audit history is for a person; agents can read policy and credential descriptions but cannot read audit history or change their own protection. Edit Credentials in the app.
In an agent profile, enable Run in the sandbox, off by default, then start a new Terminal or Chat session. Codex needs 0.160.0+. On Windows each Codex account needs a one-time Set up, which shows an administrator prompt. If its config.toml still makes the elevated sandbox the default, Settings and sandboxed starts name the account and offer to remove that setting.
Codex, and Claude Code on macOS and Linux, use their own sandboxes to limit writes to work and temporary folders and restrict access to login folders and OS secret stores. The network stays available. Claude Code has no sandbox on Windows: only its file tools are kept out of login folders; its shell stays unrestricted. Codex on Linux blocks file-path session buses, not abstract sockets; Claude’s OS-store coverage was measured on its sandbox runtime. Read What the sandbox blocks in Security & Access for platform coverage.
A marked sandboxed session cannot hand work to sessions, Jobs, or Tasks outside the sandbox, call the Host directly, or write Astera’s profile or installed code. Its agent browser has an empty page store of its own. A warning identifies a work folder containing your home folder or a Claude shell that cannot run on Ubuntu.
Open Settings → Security & Access → Findings for unused or duplicate profiles, removed accounts or servers still referenced, repeated failures, unused tools or credentials, access broader than recorded use, partly covered Rules, long-unreached Runtimes, and unusually costly Runs. Each finding explains where to act. Nothing changes automatically; Ignore sets it aside.
Unused profiles need 90 days. Unused MCP servers, skills, commands, agents, and over-broad profile findings need 30 days of Observe history; failure and token-spike findings use separate records and do not wait for Observe. An unreadable source is identified rather than treated as clean. Profiles show open findings. Archiving records when and why; scheduled Jobs using that profile wait until it is restored, while work already holding it continues.
astera agent-profiles audit
The CLI reads the same findings from a running Host. Agents may read them but cannot ignore them. Expected extensions missing or different on a Remote Runtime, and an older Astera there, also appear with the snapshot time.
Use Smart Resume when an account switch should give the next session a focused handoff. Standard resume continues the existing conversation. Smart Resume starts a fresh conversation with a compact checkpoint of the work so far.
Recent requests stay in order, alongside the tail of the exchange. The handoff includes what the session was being asked to do.
The working folder, git state, touched files, and last command provide concrete starting points. The checkpoint is a compact handoff, not a complete copy of the conversation.
For Job workers, available task state adds the objective, dependencies, recent reports, decisions, and validation context. The next worker can see both its task and the surrounding work.
Use the scheduler for recurring work, such as checking a test suite every morning or asking for a regular project update.
Keep Astera running and your computer awake for scheduled work. A scheduled session sends work to one conversation. For a sequence of dependent tasks, use Jobs.
Receive progress updates when a turn finishes, an account reaches a limit, or your input is needed. With bot mode configured, each session has its own thread. Reply in that thread to send a message back to the session.
A Job turns an objective into a graph of tasks. Its connections show what can run in parallel and what must wait. Follow Claude and Codex workers, questions, and completion checks from the same run.
Example: update the sign-in flow
Dependencies determine when a task is ready. Tasks with no unfinished dependencies can run together within the concurrency setting.
A task can be running, validating, reviewing, or blocked by a Gate. Open it to inspect its state, worker, and any question that needs an answer.
For a task with checks, the worker’s completion report starts validation. Dependent tasks wait for the required checks and review to pass. The timeline lets you follow the sequence.
Open a Run’s detail to see changed files read from git beside the workers’ reports, then select a file to open its diff. This works for local and remote Runs, including after a Run’s worktree has been merged away.
Run detail and each Task show token totals read from Claude and Codex session records. Use the Audit Logs link to inspect recorded tool calls after enabling Observe.
Yes. The /astera-orchestration walkthrough shows how to give a new coordinator session an objective, worker roles, dependencies, and checks. Its run appears in the same Jobs sidebar.
A scheduled Job creates a separate Run at each scheduled time; times missed while the Host is down are skipped. With Remote off, a future schedule alone does not keep the Host alive. With Remote Runtime on, the Host stays up for schedules and questions. Results are not automatically merged, and completed scheduled Runs clean up their worktree folders. See the Job lifecycle reference.
Make a Job from an open GitHub issue or a ticket supplied by a job-source plugin. Astera carries the source material into the objective, names the Job after the ticket, and keeps a link back to it.
Install and sign in to gh on the Host computer. Astera reads open issues from the repository named by the project's git remote. Only issues by an owner, member, or collaborator can become Jobs. Closed issues and pull requests cannot be used; an unavailable item shows its reason.
Install and configure a plugin that offers job-source, such as the Linear source sample. A source that needs settings or cannot run explains why. Fix its settings in Settings → Plugins, then retry.
Use the project ID from projects list, your coordinator's ACCOUNT_ID, and an actual issue number in place of 12. The create command returns JOB_ID; run it separately when ready. Plugin sources use their plugin ID and ticket ID instead of github and the issue number.
astera projects list --human
astera sources list --human
astera sources items --source github --project PROJECT_ID --human
astera sources show --source github --item 12 --project PROJECT_ID --human
astera jobs create-from-source --source github --item 12 --project PROJECT_ID --coordinator-account ACCOUNT_ID
astera jobs run --id JOB_ID
MCP clients use list_job_sources, list_source_items, get_source_item, and create_job_from_source, then run_job. Creation needs Read and control; GitHub sources also need Let MCP clients act on GitHub.
A Job can carry its work through a pull request, GitHub CI, repair, and a second agent’s review. Enable it for the Job you want to take through GitHub. Astera tells you when it is merge-ready; you merge it yourself on GitHub.
origin is a GitHub repository, gh is signed in, and your repository permission is WRITE, MAINTAIN, or ADMIN. If a check fails, creation is blocked with its reason.Refs #N to the PR body.--github-checks. If neither is specified, all reported checks decide.The Job card shows waiting for CI, repairing CI, or merge-ready. Open the Run’s GitHub section for the PR, head, checks, failure reasons, repairs, Astera review, GitHub’s own state, and when merge-ready was decided. The timeline records each step; How It Works keeps the issue, PR, and GitHub evidence.
Astera asks when no CI appears, the wait limit is reached, someone else pushes, several PRs are open, the PR closes or merges, a failure is outside the code, or GitHub delivery cannot continue. Read the question and choose whether to wait, proceed without CI, accept the head, retry, rerun, bind a PR, or mark the Task failed. The Host handles your answer; if it is down, start it first.
Add --github-lifecycle when creating a Job with the CLI. After the Carry to GitHub Task has ended, successfully or not, use runs reconverge to carry the Run through again. It refuses a closed or merged PR, or a missing Run worktree. Replace the placeholders with your account, repository path, Job ID, and Run ID.
astera jobs create --objective "Improve the sign-in flow" --cwd "REPO_PATH" --coordinator-account ACCOUNT_ID --github-lifecycle
astera jobs run --id JOB_ID
astera runs follow --id RUN_ID --human
astera runs reconverge --id RUN_ID
MCP uses githubLifecycle on create_job and reconverge_run. Creation needs Read and control and Let MCP clients act on GitHub in Settings → CLI. Selecting additional checks is available through CLI and MCP. @astera-app/client 0.4.0 also reads and answers the lifecycle state.
gh login. Create remote Jobs from an objective; issue sources stay local. Keep the Runtime computer awake.See the GitHub lifecycle reference for the full flow, questions, and recovery conditions.
A completion-check plugin can check a Task's changes and return a summary, findings with file names and line numbers, and a report link. For example, the debug-leftovers sample finds added console logs, debuggers, TODOs, and FIXMEs.
plugin:PLUGIN_ID in --validate, using the ID from astera plugins list. Multiple checks run in the listed order and stop at the first failure.astera plugins list --human
astera tasks add --job JOB_ID --account ACCOUNT_ID --spec "Implement the change and verify it" --validate plugin:PLUGIN_ID
astera runs checks --id RUN_ID --human
Add the Task before starting the Job, then use the resulting RUN_ID to read its checks. You can mix run configuration IDs and plugin IDs in one comma-separated --validate list. A missing, disabled, or unsuitable plugin is refused with PLUGIN_CAPABILITY_MISSING.
Astera keeps the first 20 findings of a plugin check and shows how many more there are when a total is available. Open the plugin's report link, when provided, for the full report. A passed check keeps its summary and link, with no findings. Plugin authors can return the first 20 as diagnostics and the full count as diagnosticsTotal.
A missing token, unavailable service, or stopped plugin is a check error, rather than a finding against the code. Astera retries it once immediately. If it still cannot run, the Task waits for your answer without spending a repair attempt. Open the question and choose:
After fixing the cause, choose Run the checks again (retry) to restart this Task's check list from the beginning.
Choose Go on without this check (skip-check) to continue this round. The record marks the check as skipped, and the remaining checks run.
Choose Mark the Task failed (mark-failed) to end the Task as failed.
In a shell, use astera questions answer --id QUESTION_ID --answer retry, or substitute one of the other two answers. A check-unavailable question accepts only those three values. MCP's get_completion and the SDK's completion.get carry the findings; plugin checks have no terminal output for get_check_output to read.
astera --runtime RUNTIME_ID tasks add --run RUN_ID --spec "Describe the task" --validate plugin:PLUGIN_ID, using that Runtime's Run and plugin IDs./astera-orchestration gives an Astera session a way to supervise multi-step work across Claude and Codex. The coordinator creates tasks, dispatches workers, waits for reports, and brings decisions back to you. The run stays visible in Jobs.
/astera-orchestrationRefactor the sign-in flow with Claude. After that, have Codex add regression tests. Run the project’s tests and request a cross-vendor review. If checks fail, repair and check again within three attempts. Ask me when a decision is needed.
The astera command brings sessions and Jobs to your terminal and scripts. With a compatible Host running, workers, worktrees, configured checks, reviews, and account rolling can continue while the app is closed. Reopen Astera to inspect the same work in its tabs and Jobs graph.
%LOCALAPPDATA%\astera\bin automatically. On macOS and Linux, the command goes in ~/.local/bin; if needed, run the PATH line shown in the panel. Open a new terminal after installation. Sessions started by Astera already have the command.host status, data.features includes spawn for workers, worktrees for isolated branches, dispatch for automatic Job execution and checks, and rolling for account switching.astera version
astera host start
astera host status
astera accounts list --human
The examples below use placeholders. Replace ACCOUNT_ID with an ID from the account list and REPO_PATH with your project’s absolute path. Copy SESSION_ID, JOB_ID, and RUN_ID from data.id in their create or run results; each identifies a different object. After setup, you can close Astera and run these commands in your own shell.
Choose an account, working folder, and prompt. Use sessions list to find existing sessions and sessions read to inspect one before sending a follow-up: terminal input goes to whatever is currently on its screen, including a prompt. For account rolling, add --roll-accounts with a comma-separated list of usable account IDs for the same provider.
astera sessions create --account ACCOUNT_ID --cwd "REPO_PATH" --kind terminal --prompt "Inspect the project and summarize its test setup."
astera sessions list --human
astera sessions read --id SESSION_ID --human
astera sessions send --id SESSION_ID --text "Run the existing tests and report the results."
Choose --kind chat for a Chat session. --unattended hold, the default, leaves permission prompts open for your decision; deny-after-60s denies unanswered prompts after a minute. Read recent turns with sessions read --id SESSION_ID --turns 20 --human.
astera sessions create --account ACCOUNT_ID --cwd "REPO_PATH" --kind chat --unattended hold --prompt "Inspect the project and summarize its test setup."
astera chats pending --session SESSION_ID --human
Inspect the pending tool and summary, then use astera chats answer --session SESSION_ID --id PROMPT_ID --allow or --deny for your decision. Run this yourself from an ordinary shell; an agent session cannot grant permission. Chat questions still need an answer in the app. They are separate from Job questions handled by questions answer.
Use /astera-orchestration to have an agent plan the work. Once the Job is ready to run, find its ID and start a run from the shell. jobs run returns that run’s ID in data.id. If a run is already active, follow it instead of starting another.
astera jobs list --human
astera jobs run --id JOB_ID
astera runs follow --id RUN_ID --human
astera runs checks --id RUN_ID --human
The Host can dispatch tasks as dependencies clear, run configured validation and cross-provider reviews, and retry repairs within a Job’s convergence limit. runs follow streams progress; Ctrl+C stops watching without cancelling the work. Use runs stop --id RUN_ID to stop the run, or runs resume --id RUN_ID when it is ready to continue.
Check the skills installed for the account. After adding an account, install the enabled Astera skills and start a new session so the agent loads them. These commands work even when both the app and Host are closed.
astera skills list --account ACCOUNT_ID --human
astera skills install --account ACCOUNT_ID --human
You can also create the Job and its tasks directly. jobs create returns JOB_ID; it does not start work. Add tasks to the plan, then start it with jobs run.
astera jobs create --objective "Improve the sign-in flow" --cwd "REPO_PATH"
astera tasks add --job JOB_ID --spec "Implement the sign-in changes and add regression tests" --account ACCOUNT_ID
astera jobs run --id JOB_ID
For checked completion, use run-configs list --job JOB_ID --human to find configured checks, then pass their IDs with --validate when adding a task. Add --review for cross-provider review; it requires a usable account from the other provider. Task dependencies and bounded repair options are covered in the command reference below.
When a Job needs a decision, inspect the open question and answer it from your shell. Replace QUESTION_ID with the question’s ID and the example answer with your decision. Start the Host again first if it has exited while waiting.
astera questions list --run RUN_ID --status open --human
astera questions get --id QUESTION_ID --human
astera host start
astera questions answer --id QUESTION_ID --answer "Use the existing authentication library."
astera runs wait --id RUN_ID --timeout-ms 3600000
Most commands return JSON by default; add --human for readable output or --quiet for IDs. runs follow emits newline-delimited JSON events by default. Use runs wait in scripts or on a configured local CI runner, and handle its exit code:
The run finished successfully.
The wait reached its deadline. The run is not cancelled; inspect it and wait again if needed.
A question is open, the run is paused, or it is waiting for account capacity. Read the returned state and next steps before continuing.
The run failed. Inspect its checks and failure details before retrying.
Other failures include 3 when the Host cannot be reached, 6 when the current state prevents the command, and 9 when the CLI and Host builds are incompatible. Read error.code, error.details, and error.nextSteps. Exit 7 from a command that changes work can mean its answer was lost; follow its request-status instructions before retrying.
host start is safe to repeat; host stop refuses while sessions or Runs are active.To target a paired computer, put --runtime RUNTIME_ID before the command. Follow the Remote Runtime setup for pairing, permissions, and paths.
Run astera version to check the CLI and Host. If an older Host still serves the same profile, host start returns 9. Finish or save its work before using astera host start --replace: replacement ends the sessions that Host holds. Opening the updated app also replaces an incompatible older Host. A Host using a newer protocol is never replaced by this flag.
Use astera --help or command-specific help such as astera jobs --help. For all options, Chat approvals, scheduling, and troubleshooting, see the CLI reference.
Astera's MCP server lets a connected Claude Code, Codex, or Cursor client use the same local Host as the app and CLI. It can create a Job, start a Run, follow progress, inspect failed checks, and read How It Works records. A Job created over MCP appears in Astera and the CLI, and keeps running if the client disconnects.
astera command in Settings → CLI, as in the CLI setup. MCP clients use that installed command to reach the Host; they do not need the app window open.create_job only saves the Job; run_job starts it. Use wait_for_run for progress and get_completion for Task checks.astera mcp status
Run this in a shell to inspect MCP readiness without starting a Host. If no Host is running, a local MCP client starts one when it connects.
Create Jobs and Tasks, start or pause Runs, answer blocking Job questions, and follow new events. Read completion status and the output of failed checks. A client can use the default coordinator account or choose one you registered.
Turn on Let MCP clients see and use sessions to expose Astera's sessions, including your own. Then clients can list and read them; with Read and control, they can also start sessions and send messages. This setting is off by default. New sessions follow Run agents without permission checks, which is on by default.
With gh installed and signed in on the Host computer, a client can read pull requests, CI checks, and issues. Let MCP clients act on GitHub separately enables PR creation, CI reruns, and Jobs from trusted issues; it is off by default. Clients can also read How It Works records and regenerate a write-up with Read and control.
astera mcp serve uses stdio and opens no network port. MCP access is checked on every call. Session access and GitHub writes each require their own setting.For a paired computer, pass runtimeId to a supported tool. The Remote Runtime guide explains the encrypted connection and how MCP settings combine with pairing permissions.
In Settings → CLI → MCP over HTTP, turn on the HTTP entrance, which is off by default. Its default address is http://127.0.0.1:7871/mcp; every request needs the bearer token shown in Settings. Copy the client-specific line there. To connect from another device, enable Allow other devices on this network and use an address listed by Astera.
Even the local address can be reached by other OS accounts on the computer; the token is its only check. HTTP sends that token unencrypted across a network, so use only a trusted private network, preferably an encrypted link such as Tailscale. Do not expose the port to the public internet. The HTTP entrance is available only while the Host runs; it cannot start a stopped Host.
For client configuration, every tool, access rules, and HTTP troubleshooting, read the MCP reference.
Plugins are programs Astera starts and stops with its Host. They can send notifications to your own services, react to events, supply tickets for Jobs, or check completed work. Each runs in its own process using Astera's bundled Node; installing a plugin does not require a separate Node.js installation.
Notification providers receive messages in your Astera language for open questions, sessions needing input, failed or completed Runs, exhausted repairs, usage limits, and account switches. The Discord notifier sample shows one integration. Event plugins receive Host events in order and retry delivery after a handler fails.
A job-source provider adds tickets to From source. A completion-check provider adds a check you can attach to a Task's completion policy. The plugin list shows what each installed plugin offers.
Event plugins resume from their saved position after a restart or time disabled, within the Host's event retention. Removing a plugin removes its saved position. Delivery can repeat an event, so an integration should deduplicate by event ID. Notifications more than an hour old when delivery reaches them are skipped and counted in the log.
To keep a noisy plugin from slowing Astera, plugin output is limited to 1,000 lines or 1,048,576 characters per second. Extra lines are omitted and counted in a Host log entry. When the plugin ends, the last 20 omitted lines are also written so a crash can retain its stack trace. Host log entries are not dropped.
After installing the astera command, run these in an ordinary terminal. Replace PLUGIN_PATH with the prepared plugin folder and PLUGIN_ID with its package name. The first command previews the request and installs nothing; after reviewing it, repeat with --yes to approve, or --grant for selected permissions.
astera plugins install --path "PLUGIN_PATH"
astera plugins list --human
astera plugins settings --id PLUGIN_ID
astera plugins logs --id PLUGIN_ID
astera plugins doctor --id PLUGIN_ID
For npm, use astera plugins install --npm PACKAGE_NAME to inspect a published plugin before approving it. Astera can fetch the npm tooling itself. If a company network blocks installation, follow the error's proxy or prepared-folder guidance.
Plugins do not keep an otherwise idle Host alive. Repeated crashes mark a plugin as failed; inspect its log before restarting it. For manifests, permissions, secret handling, packaging, and provider examples, read the plugin author guide.
Use the official TypeScript client, @astera-app/client, to build a script, CI step, bot, or dashboard. It reaches the same Host as the app, CLI, and MCP. Jobs created through it appear in Astera and keep running after your program exits.
Astera 1.5.0 includes @astera-app/client 0.5.0 with profile reads and profile selection for Jobs and Tasks, alongside source metadata, plugin check results, and GitHub lifecycle support. @astera-app/plugin-sdk 0.2.0 provides event, notification, job-source, and completion-check helpers.
astera host start. The client connects to an existing Host; it does not start one itself. A script launched inside an Astera session inherits that session's profile.list-jobs.mjs and run node list-jobs.mjs. Close the client when your script finishes.npm install @astera-app/client
import { createAsteraClient } from '@astera-app/client'
const astera = await createAsteraClient()
try {
const { items } = await astera.jobs.list({ status: 'running' })
for (const job of items) console.log(job.id, job.objective)
} finally {
astera.close()
}
Use typed calls for projects, Jobs, Runs, Tasks, questions, and completion. A Job is saved with jobs.create, started with jobs.run, and followed with runs.wait or runs.follow. Read plugin check summaries and findings with completion.get. Use request IDs when changing work so retries do not create duplicates.
Read pages with events.list or subscribe with events.subscribe. The log survives Host restarts and includes Job, Run, Task, question, completion, and session events. Session events cover input needed, usage-limit waiting, and account switches; Codex Terminal input prompts are not observable by the Host.
Save a cursor to resume after your program restarts. Events can be delivered more than once, so deduplicate by event ID. Retention is bounded; if a subscription reports a gap, reload the current objects before continuing.
A Job made from a ticket carries its origin in source. Task and completion events carry a plugin check's finding count as diagnosticsTotal, rather than the findings themselves. Read tasks.get or completion.get for the retained findings, and externalUrl for the full report when the plugin supplies one.
In your plugin project, install the helpers below. The plugin's ctx.astera is a client of the Host, limited to the Astera permissions you granted it.
npm install @astera-app/plugin-sdk
Use definePlugin with onEvent for event handling, defineNotificationProvider with send for notifications, defineJobSourceProvider with listItems, getItem, and buildJobContext for tickets, or defineCompletionCheckProvider with runCheck for checks. Declare the matching capability in the plugin manifest.
Pass the handler's ctx.signal to requests and other work that supports cancellation. It aborts when the plugin stops or Astera stops waiting for that call: after 30 seconds for events and notifications, 15 seconds for a source call, or 30 minutes for a completion check. A handler that ignores the signal can keep working alongside a retry; the signal does not forcibly end that work.
To write a plugin, install @astera-app/plugin-sdk; it provides definePlugin and helpers for event, notification, job-source, and completion-check providers. See the SDK guide for connection errors, request IDs, cancellation, events, and runnable examples, and the plugin guide for providers.
The Runtime runs your agents and Jobs; the controller is the computer you use to manage them. Work stays on the Runtime when the controller sleeps, shuts down, or loses its connection.
Closing a Terminal or Chat tab leaves its session running on the Runtime. Account rolling moves the tab to the continued session. A terminal shown on both computers fits the window of whoever typed last; the other view scales down to show it whole.
An offline Runtime shows its last known state marked as out of date. Disconnection does not mean a Job failed. Reconnect to read current progress. Job notifications use the Runtime computer’s Slack settings.
Turning Remote off in This computer keeps pairings and invalidates unused strings. Unpair revokes access even while Remote is off, pauses the scheduled Jobs that controller created, and reports the count. Only a person on the Runtime can resume them. Older scheduled Jobs without a recorded creator are counted separately for you to inspect.
In Settings → Remote Runtimes → Details, see its Astera version, OS, profiles, policy, sandbox, extensions, credential names, and finding counts. Reports contain names, states, and counts only, never values, paths, commands, or Rule text. Only a person in the app or their own shell can read them; agents and MCP clients cannot.
Tick which local extensions you expect there. Comparison shows missing, different, off, secret missing, or same; differences and an older Astera become Findings. Reports are read when opening Runtime settings or Findings, at most once every five minutes, or immediately with Refresh. Offline views retain the last report and its time. Install or fix extensions on the Runtime itself; comparison never synchronizes them.
astera runtimes ping --id RUNTIME_ID
astera runtimes get --id RUNTIME_ID
astera ext list
astera runtimes expect --id RUNTIME_ID --add EXTENSION_ID
Run these in your own shell with IDs from the lists; expect --remove EXTENSION_ID clears an expectation. Agents cannot edit expectations. Runtime settings show each controller’s surface (app, CLI, MCP) and version. Agents meet the Runtime’s agent rules. The CLI and MCP let sandboxed sessions read work but refuse remote changes. These session checks can be bypassed by clearing the environment or using a pairing token directly; revoke a pairing to stop a controller you no longer trust. Update both computers: older Runtimes cannot report, and an older CLI counts as an agent.
With the astera command installed on the controller, pair using standard input. Paste the string after the first command, then end input with Ctrl+D, or Ctrl+Z then Enter on Windows. Replace RUNTIME_ID with an ID or name from the list, and RUN_ID with a Run on that Runtime.
astera runtimes add --pair -
astera runtimes list
astera --runtime RUNTIME_ID jobs list --human
astera --runtime RUNTIME_ID runs follow --id RUN_ID --human
Commands use the Runtime’s accounts and paths. A new remote Job needs --cwd with a path on that computer; sessions start in its registered projects. An unavailable Runtime returns an error instead of running locally.
In an MCP client, use list_runtimes or get_runtime, then pass runtimeId to a tool. This computer’s MCP settings, the tool’s remote support, and pairing permissions all apply. How It Works records, GitHub writes, and agent browser/app control stay local.
astera runtime serve recipes for restart supervision and startup after a reboot. Initial setup requires Astera’s desktop app; Linux uses the .deb in a desktop session.Remote Runtime uses pinned TLS and a revocable token per controller, separately from MCP over plain HTTP. Use your private network; do not expose its port to the internet. Astera requires no relay subscription; your machine, network, and agent usage costs remain yours. See the Remote Runtime reference for shell setup, OS startup recipes, and troubleshooting.
Astera Host is a separate process on your computer that can own Terminal and Chat sessions, project terminals, and Run processes. When it owns a process, quitting the app leaves that process running. Reopening Astera reconnects to supported live sessions.
Reopen Astera after an ordinary quit to reconnect to a surviving session and its buffered output. This is the live agent process continuing, rather than a new conversation started from history.
Stop a session when its work should end. Where the tray menu is available, Quit and end sessions ends host-managed sessions as well as quitting the app.
The Host can coordinate Jobs, run checks and reviews, roll accounts, and handle configured Slack updates and replies with the app closed. Check its capabilities with astera host status and read the CLI guide. Keep the computer awake while work runs.
If a worker, repair, or completion check is lost after a process failure or Host restart, the Host recovers it without an open app. Live terminal sessions do not survive a Host restart. Review the Run’s state and any questions when recovery needs your decision.
How It Works turns a finished piece of work into a readable explanation. Keep your original request beside an overview of the change, a flow diagram, the reasons behind decisions, and the files involved.
/astera-task followed by a concrete objective, such as “Add Google sign-in and verify that signing out ends the session.”What it does explains the change in plain language. What you will notice describes its effect on the product. Your original request stays below the title so you can compare the outcome with what you asked for.
Select a flow step that has references to see its description, reasons, and related files. Show all returns to the full explanation. Some changes have no meaningful flow or visible effect, so those sections may be absent.
Why it works this way explains decisions and their sources. Implementation groups the related files by role; click a filename to open it. In a narrow pane, use Reference to open the reference drawer.
In progress is an open task. Left unfinished means recording was interrupted; read the reason. Writing up means the explanation is being generated. Recorded is ready to read. For Needs review or Could not write it up, read the reason and check the verification result before continuing.
Write it up again regenerates the explanation. It does not repair code or rerun tests.
For your own sessions, enable tracking before starting a new session, choose an Explanation account, and declare the task. Earlier conversations are not imported, and work that changed no files produces no completed record. Only one task can be recorded per session at a time.
Claude Code’s /goal closes its record automatically; with Codex’s /goal, mark it Done yourself. The Host records completed Jobs Runs even when work unit tracking is off. If writing failed, resolve the stated cause and use Write it up again.
Some capabilities need a setting before use. Turn them on when they fit the way you work.
Choose a checkpoint-based handoff under Settings → General → Session resume strategy. The Smart Resume guide explains what carries forward and when standard resume is used.
The Host records finished Jobs Runs automatically. For your own sessions, enable Work unit tracking and choose an Explanation account. Follow the recording and reading guide for setup, flow diagrams, verification labels, and troubleshooting.
Enable Agent browser, then start a new session. Ask the agent to check your local web app. It can open its own preview tab, inspect the page, and check console and network errors. It works with local development pages.
Enable Agent app workspace in Settings, then ask a new session to run and check your project’s desktop app. The /astera-app skill lets the agent inspect, interact with, and capture it. A mirror tab shows the app and follows the tab’s size. Windows uses a hidden desktop; Linux uses a virtual display. On macOS it runs in the background, with limits on native dialogs and input. See platform requirements.
Closing an app in the agent workspace also ends the background programs it started. Windows tracks them in one process job; macOS and Linux can find detached children while their original parent is still running.
New Claude and Codex sessions receive a short introduction to the Astera features you have enabled. App and browser skills can be used when the agent needs to check the project, without you naming each skill. Codex accounts with their own developer_instructions keep those instructions; Astera does not replace them with its introduction.
Open files beside the session changing them. Split right or down to compare work. The explorer shows git status and offers file actions such as rename, copy, and reveal in your file manager. Use the project terminal to run commands yourself.
Open a Markdown file, then press Ctrl/Cmd + Shift + V to cycle between editor, split view, and preview. In split view, the editor and preview follow each other’s scrolling.
Click a recognized file or folder path printed by an agent. A folder within the project shown in the explorer expands and becomes selected there; other folders open in your file manager. Quoted paths with spaces, paths beside Korean, Japanese, or Chinese text, and paths wrapped across terminal lines can be recognized. If a file is created after its name was printed, hover it again once the file exists to get its link.
Double-click an image or video in the explorer, or open its link in a terminal, a conversation attachment, or a Markdown preview. The media viewer tab offers playback and seeking, Open in default app, and Show in folder. Switching tabs pauses video and keeps its position. A regenerated file reloads after writing finishes and resumes where you were. Explorer renames and moves follow the tab; deleting the file closes it.
For a deletion captured by Astera, right-click in the explorer and choose Local History…. Select the item and click Restore. If its old path is occupied, the restored copy gets another name. Snapshots are kept for up to 30 days within the project’s size budget; items over 50 MB are excluded.
Select a configuration in the Run toolbar to start a dev server, build, or test, then read its output in the Run console. Astera detects supported scripts and tasks, including npm scripts and standard Gradle/Maven tasks. Detected configurations appear in italics; edit one to save it as your own.
Choose Start in a separate worktree when creating a session in a git repository with a commit and branch. Work on the isolated branch, then use the worktree list to review PR state. Once the branch has new commits, its create-PR action can push it and open a pull request using your existing gh login. Review the target branch and details in the dialog.
Open your web page in a tab and turn on Design Mode. Pick an element, describe what should change or ask a question, then choose Send to session. The agent receives your note, element details, and a cropped screenshot. A tab holds up to twenty notes; navigating away turns Design Mode off.
Creative Hub keeps accounts for creative platforms whose CLIs your agents use. Higgsfield is the first supported platform. Its accounts and credits are separate from your Claude Code and Codex accounts.
astera higgsfield list
astera higgsfield use --account ACCOUNT_ID
Use the first command to inspect accounts and credits. After choosing, replace ACCOUNT_ID in the second with the Higgsfield account ID from that list. Platform subscriptions and generation credits are paid separately.
If the CLI is missing, install it and reopen the settings tab. For an expired login, sign in again in Creative Hub. During sign-in, use Copy link to open a private browser window if the wrong account is active, or Cancel to stop. Importing a login lets Astera manage its refresh; an outside terminal may need to sign in again later.
Open Settings → Appearance to choose one of seven themes and set your terminal font separately. Theme changes update open terminals while preserving their scrollback.
Under Settings → General → Language, choose English, Korean, Japanese, Spanish, or System. Open Settings → Shortcuts to inspect and remap the controls.
In Settings → Notifications, choose alerts for input needed, waiting on a limit, and account switches. These help you follow a session while you are looking at another session or window.
Open Settings → Info → Check for updates and follow the available download/install action. Update support depends on your platform and build. When automatic updates are unavailable, download the matching installer from GitHub Releases and follow the installation notes.
On macOS, if a downloaded update cannot install automatically, the notification offers Install by hand, matching the title bar and Settings. Use that action and follow the manual installation instructions.
Version 1.5.0 also keeps Codex sessions attached to their own conversations, avoids ending a reused Windows process ID when closing a terminal, preserves linked config.toml files, and removes worktrees containing read-only files from sandboxed sessions. See the 1.5.0 release notes for the full list.
No. Start with either one. Add the other when you want to work with both, including reviews across vendors.
Check that you selected a project folder and account, and that the matching CLI is installed and can run in that folder. If you just installed it, restart Astera so it can detect it.
Open the Job and read its question or Gate message. It can need a usable account, a git branch, a decision, or help after a check fails. The message explains what is blocking progress.
Open Settings. Appearance offers seven themes and separate terminal font settings. Shortcuts lets you remap the keyboard controls. The app supports English, Korean, Japanese, and Spanish.
Use Cmd on macOS and Ctrl on Windows or Linux. These are the defaults; you can remap them in Settings.
Start with a folder, an account, and an idea.
Still need a hand? Ask on GitHub or explore the technical documentation.